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: