Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ ΠΏΠΎ Delphi. ВСрсия 1.4.3 ΠΎΡ‚ 1.1.2001Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 85

Автор Π’Π°Π»Π΅Π½Ρ‚ΠΈΠ½ ΠžΠ·Π΅Ρ€ΠΎΠ²

type TStrColor = class(TObject)

public

  Color : TColor; {Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ частныС ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа}

end;

…

procedure TForm1.FormCreate(Sender:TObject)

var i,j : Integer;

begin

 With StringList1 do

  for i := 0 to ColCount-1

   for j := 0 to RowCount-1 Objects[i,j] := TStrColor.Create;

end;

…

procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);

var OldColor : TColor;

begin

 with StringGrid1.Canvas do begin

  OldColor := Font.Color;

  Font.Color := (StringGrid1.Objects[col,row] as TStrColor).Color;

  TextOut(Rect.Left+2, Rect.Top+2, StringGrid1.Cells[Col,Row]);

  Font.Color := OldColor;

 end;

end;

…

procedure TForm1.ProcessSelection(Sender: TObject);

var i, j : Integer;

begin

 With StringGrid1.Selection do

  For i := left to right do

   for j := top to bottom do

    MessageDlg(IntToStr(i) + ',' + IntToStr(j) + '-' + IntToStr((StringGrid1.Objects[i,j] as tstrcolor).color), mtInformation, [mbOk], 0);

end;

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π΅ позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ многочислСнный выбор….

ΠŸΠΎΠΊΡ€Π°ΡˆΠ΅Π½Π½Ρ‹ΠΉ StringGrid II

Delphi 1

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ дСмонстрируСтся Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° измСнСния Ρ†Π²Π΅Ρ‚Π° Ρƒ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Π² StringGrid тСкста.

unit Strgr;


interface


uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls, DB;


type TForm1 = class(TForm)

 StringGrid1: TStringGrid;

 procedure StringGrid1DrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);

private

 { Private declarations }

public

 { Public declarations }

end;


var Form1: TForm1;


implementation


{$R *.DFM}


procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState);

const CharOffset = 3;

begin

 with StringGrid1.canvas do begin

  font.color := clMaroon;

  textout(rect.left + CharOffset, rect.top + CharOffset, 'L');

  font.color := clNavy;

  textout(rect.left + CharOffset + TextWidth('L'), rect.top + CharOffset, 'loyd');

 end;

end;

end

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² StringGrid

Delphi 1 

…правда, я этого Π½Π΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π», Π½ΠΎ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ ΠΏΡ€ΠΈΡˆΠ»ΠΈ Π΄Π²Π΅ ΠΈΠ΄Π΅ΠΈ:

1. НаТмитС Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄ΠΈΡ‚Π΅ фокус Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΠΎΠ»Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, x.focus, Π³Π΄Π΅ x Π½Π΅ сСтка), ΡΠ±Ρ€ΠΎΡΡŒΡ‚Π΅ goEditing ΠΈ selectRow ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ фокус Π½Π°Π·Π°Π΄ сСткС. (Π­Ρ‚Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° Ρƒ мСня Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… мСстах, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π³Ρ€Π°Π΄Π°Ρ… ΠΈ ΠΌΠ΅ΠΌΠ°Ρ….)

2. НаТмитС Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»Π΅ рСдактирования, ΠΈ послС сброса goEditing ΠΈ selectRow, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ tGridRect, ΠΏΠΎΠ΄ΡΠ²Π΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π½ΡƒΠΆΠ½ΡƒΡŽ Π²Π°ΠΌ строку, послС Ρ‡Π΅Π³ΠΎ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ grid.Selection := gridRect; 

Tabbednotebook 

Tabbednotebook ΠΈ ΠΊΡƒΡ‡Π° рСсурсов

Π’Π΅ΠΌΠ°: Как ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ использования ΠΊΡƒΡ‡ΠΈ рСсурсов (Resource Heap) ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с TabbedNotebook

Π”Π°Π½Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ расскаТСт ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Object Pascal ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ числом Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… handlesWindows (ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… дСскрипторов), Π² особСнности ΠΊΡƒΡ‡Π΅ΠΉ рСсурсов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (User Resource heap), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° этими показатСлями. О Ρ‡Π΅ΠΌ этот Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚? ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΈ Π΄ΠΎΡ…ΠΎΠ΄Ρ‡ΠΈΠ²ΠΎ: Windows слСдит Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ элСмСнтом, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌ фокус, Ρ‡Π΅Ρ€Π΅Π· Π΅Π³ΠΎ дСскриптор (Handle). Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· этого, Windows Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ нСсколько ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… дСскрипторов (4-Π±Π°ΠΉΡ‚Π½Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ), ΠΈ Π² этом совСтС ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ Β«Π»Π΅Π³ΠΊΠΎΒ» Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ рСсурсы ΠΈ ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ эти ограничСния, Π²ΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Delphi.

USER DLL Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ являСтся Π±ΠΈΠ±Π»ΠΈΠΎΡ‚ΠΊΠΎΠΉ, Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅ΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ рСсурсы для всСх ΠΎΠΊΠΎΠ½ ΠΈ связанных структур Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ элСмСнты управлСния, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ фокус, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ нСупомянутыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½ΠΎ вмСстС с Ρ‚Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эта Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠ΄ Windows. Π‘ этим связаны ограничСния ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с рСсурсами USER DLL, ΠΈ эта Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² этом совСтС. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ добавляСт Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ рСсурса для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта управлСния, добавляСмого Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ, здСсь ΠΌΡ‹ Π±Π΅Ρ€Π΅ΠΌ 4 Π±Π°ΠΉΡ‚Π° ΠΈΠ· ΠΊΡƒΡ‡ΠΈ USER Π² 64K[1].

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас это получится? ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π·Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ[2] дСскрипторы ΠΎΠΊΠΎΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Windows, согласно своСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ. Π Π°Π·Ρ€ΡƒΡˆΠ°Ρ эти дСскрипторы, ΠΌΡ‹, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈΠ·Π±Π΅Π³Π°Π΅ΠΌ освобоТдСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… (USER) рСсурсов, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ снова ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Наоборот, тСкущая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° VCL ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ указатСлями Π½Π° структуру. Π’Π°ΠΊ, зная, Ρ‡Ρ‚ΠΎ VCL ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ дСскриптор ΠΈ windows создаст Π½ΠΎΠ²Ρ‹ΠΉ дСскриптор КАК Π’Π Π•Π‘Π£Π•Π’Π‘Π―, Ρ‚ΠΎ вмСсто поддСрТания постоянно ΠΎΠ΄Π½ΠΎΠ³ΠΎ дСскриптора (ΠΊΠ°ΠΊ это ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΈ создании Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Windows), ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ (USER) рСсурсами Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, позволяя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π»Π΅Π³ΠΊΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости. 

Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт Ρ€Π°Π±ΠΎΡ‚Ρƒ с дСскрипторами ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… (USER) рСсурсов ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Delphi TTabbedNoteBook (Π² части освобоТдСния дСскрипторов страниц), Delphi DestroyHandle (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° TWinControl для удалСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… (USER) дСскрипторов), ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²Ρ‹Π·ΠΎΠ²Π° Windows API LockWindowUpdate (Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ пСрСрисовки).

ВСхнология освобоТдСния дСскриптора страницы TTabbedNoteBook ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ TWinControl. TWinControl – класс ΠΏΡ€Π΅Π΄ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΌΠ΅Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π·Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Π½Ρ‹Π΅ дСскрипторы; CreateHandle & DestroyHandle.

ДСмонстрационный ΠΊΠΎΠ΄

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ с ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ событий являСтся Β«ΠΎΡ‚Ρ€Ρ‹Π²ΠΊΠΎΠΌΒ» ΠΈΠ· большого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ TTimer, TTabbedNotebook (с мноТСством страниц) ΠΈ большим Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ΠΌ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов управлСния Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. (ПозТС ΠΌΡ‹ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½Π΅ΠΌ прСимущСства ΠΊΠΎΠ΄Π°, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅, ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π² ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚) ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ соотвСтствСнно Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°Ρ… событий OnTimer ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° TTimer ΠΈ OnChange ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° TTabbedNotebook. Π’ΠΎΡ‚ ΠΊΠ°ΠΊΠΈΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ваш Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄:

<ΠœΠΎΠ΄ΡƒΠ»ΡŒ с ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π² Π½Π΅ΠΌ TTabbedNotebook ΠΈ TTimer>

…

Implementation

Type TSurfaceWin = class(TWinControl);


procedure TForm1.Timer1Timer(Sender: TObject);

begin

 {Π”Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ замСняСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ,

 ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ… free SYSTEM, GDI, &USER для windows.}

 caption := 'SYSTEM: ' +

  inttostr(getfreesystemresources(GFSR_SYSTEMRESOURCES)) + ' GDI: ' +

  inttostr(getfreesystemresources(GFSR_GDIRESOURCES)) + ' USER: ' +

  inttostr(getfreesystemresources(GFSR_USERRESOURCES));

end;


procedure TForm1.TabbedNotebook1Change(Sender: TObject; NewTab: Integer; var AllowChange: Boolean);

begin

 {LockWindowUpdate Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ пСрСрисовку Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°}

 LockWindowUpdate(handle);

 {ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° использования TSurfaceWin Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ² DestroyHandle Π² TWinControl объявлСн ΠΊΠ°ΠΊ абстрактный, поэтому Π΄Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π²ΡˆΠΈΠΌΠΈ Π΄Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ индСкс Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ страницы TabbedNotebook ΠΈ Ρ€Π°Π·Ρ€ΡƒΡˆΠ°Π΅Ρ‚ Π΅Π΅ дСскриптор ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ страницу. ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•: Π”Π°ΠΆΠ΅ Ссли ΠΌΡ‹ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°Π΅ΠΌ дСскриптор, Windows ΠΏΠΎΠΌΠ½ΠΈΡ‚ страничный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ ΠΏΠ΅Ρ€Π΅Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚/создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠ΅. }

 TSurfaceWin(TabbedNotebook1.pages.objects[tabbedNotebook1.pageindex]).DestroyHandle;

 {Π’Ρ‹ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Ρ„ΠΎΡ€ΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ любой элСмСнт управлСния ΠΌΠΎΠ³ ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ сСбя}

 LockWindowUpdate(0);

end;

Доступ ΠΊ страницам Tabbednotebook

Delphi 1

ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° свойству parent (ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€) _страницу_ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° notebook, Π° Π½Π΅ сам notebook.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°Π½ для ΠΊΠ½ΠΎΠΏΠΊΠΈ):

MyButton := TButton.Create(Form1);  {ΠΊΠ°ΠΊ обычно…}

…

…

MyButton.Parent := TTabPage(TabbedNotebook1.Pages.Objects[n]);

{ <== Π³Π΄Π΅ 'n' – индСкс ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΉ страницы ==> }

Бвойство notebook 'Pages' ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ StringList ΠΈ содСрТит список Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² 'TTabPage'.

Π― сам пользовался этой Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΎΠΉ нСсколько мСсяцСв. НС ΠΌΠΎΠ³Ρƒ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Π³Π΄Π΅ я сам Ρ€Π°Π·Π΄ΠΎΠ±Ρ‹Π» эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½ΠΎ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎ это Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сказано. ΠœΠΎΠΆΠ΅Ρ‚ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Π΅Ρ‚, Π³Π΄Π΅ ΠΎΠ± этом написано?

ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π° страницу TabbedNotebook Π²ΠΎ врСмя выполнСния прилоТСния, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΆΠ΅Π»Π°Π΅ΠΌΡƒΡŽ страницу для свойства Parent Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½. Бпособ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ всСм страницам TTabbedNotebook Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ – с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ свойства-массива Objects свойства TabbedNotebook Pages. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, страничныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ хранятся ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, присоСдинСнныС ΠΊ ΠΈΠΌΠ΅Π½ΠΈ страницы Π² спискС строк свойства Pages. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ созданиС ΠΊΠ½ΠΎΠΏΠΊΠΈ Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ страницС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° TabbedNotebook1: