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

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

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

procedure TDBPanel.DataChange(Sender: TObject);

begin

 if FDataLink.Field 

 else Caption := FDataLink.Field.AsString;

end;

β€’ ΠŸΠ΅Ρ€Π΅ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ конструктора ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Create. ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Create, создайтС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ FDataLink ΠΈ Π½Π°Π·Π½Π°Ρ‡ΡŒΡ‚Π΅ частный ΠΌΠ΅Ρ‚ΠΎΠ΄ DataChange ΡΠΎΠ±Ρ‹Ρ‚ΠΈΡŽ FDataLink OnDataChange.

{ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ }

public

 constructor Create(AOwner: TComponent); override;

.

.

implementation

.

.

constructor TMyDBPanel.Create(AOwner: TComponent);

begin

 inherited Create(AOwner);

 FDataLink := TFieldDataLink.Create;

 FDataLink.OnDataChange := DataChange;

end;

β€’ ΠŸΠ΅Ρ€Π΅ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ дСструктора ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Destroy. ΠŸΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Destroy, установитС OnDataChange Π² nil (Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ GPF), ΠΈ освободитС FDatalink.

{ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ }

public

.

.

destructor Destroy; override;

.

.

implementation

.

.

destructor TDBPanel.Destroy;

begin

 FDataLink.OnDataChange := nil;

 FDataLink.Free;

 inherited Destroy;

end;

β€’ Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ установитС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ (смотритС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Users Guide ΠΈ Component Writers Guide для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ ΡΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΡŽ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ установкС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²).

β€’ Π”ля тСстирования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° располоТитС Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ TTable, TDatasource, TDBNavigator ΠΈ TDBPanel. УстановитС TTable DatabaseName ΠΈ Tablename Π² 'DBDemos' ΠΈ 'BioLife', Π° свойство Active Π² True. УстановитС свойство TDatasource Dataset Π² Table1. УстановитС TDBNavigator ΠΈ свойство TDBPanel DataSource Π² Datasource1. Имя TDBpanel DataField Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ установлСно Π² 'Common_Name'. ЗапуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½Π°Π²ΠΈΠ³Π°Ρ‚ΠΎΡ€ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡΡΡŒ ΠΏΠΎ записям, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ TDBPanel ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ поля.

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°

unit Mydbp;


interface


uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, DB, DBTables;


type TDBPanel = class(TCustomPanel)

private

 FDataLink: TFieldDataLink;

 function GetDataField: String;

 function GetDataSource: TDataSource;

 procedure SetDataField(Const Value: string);

 procedure SetDataSource(Value: TDataSource);

 procedure DataChange(Sender: TObject);

public

 constructor Create(AOwner: TComponent); override;

 destructor Destroy; override;

published

 property DataField: string read GetDataField write SetDataField;

 property DataSource: TdataSource read GetDataSource write SetDataSource;

end;


procedure Register;


implementation


procedure Register;

begin

 RegisterComponents('Samples', [TDBPanel]);

end;


function TDBPanel.GetDataField: String;

begin

 Result := FDataLink.FieldName;

end;


function TDBPanel.GetDataSource: TDataSource;

begin

 Result := FDataLink.DataSource;

end;


procedure TDBPanel.SetDataField(Const Value: string);

begin

 FDataLink.FieldName := Value;

end;


procedure TDBPanel.SetDataSource(Value: TDataSource);

begin

 FDataLink.DataSource := Value;

end;


procedure TDBPanel.DataChange(Sender: TObject);

begin

 if FDataLink.Field = nil then Caption := ''

 else Caption := FDataLink.Field.AsString;

end;


constructor TDBPanel.Create(AOwner: TComponent);

begin

 inherited Create(AOwner);

 FDataLink := TFieldDataLink.Create;

 FDataLink.OnDataChange := DataChange;

end;


destructor TDBPanel.Destroy;

begin

 FDataLink.Free;

 FDataLink.OnDataChange := nil;

 inherited Destroy;

end;

end.

ДинамичСскоС созданиС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния

Delphi 1

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Delphi ΠΎΡ‡Π΅Π½ΡŒ просто. Если ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ этими ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ посрСдством Π˜Π½ΡΠΏΠ΅ΠΊΡ‚ΠΎΡ€Π° ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚ΠΎ эту Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ отнСсти ΠΊ числу Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ…. ДинамичСски ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ нСслоТно. Π’ этом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΌΡ‹ обсудим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вопросы, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ динамичСского создания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния.

(Π²Π°ΠΌ слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ понятиС "динамичСскоС" вСсьма ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Delphi всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ создаСт динамичСски. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ, прСдоставлСнная здСсь β€” для программиста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сам собираСтся ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ/ΠΌΠ΅Π½ΡΡ‚ΡŒ свойства/Ρ€Π°Π·Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹)

ВсС Ρ‚ΠΈΠΏΡ‹ (Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹) ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ динамичСски. Π§Ρ‚ΠΎΠ±Ρ‹ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² сСкции VAR вашСго ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ Π½Π΅ создаСт экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, это создаСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Π”Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ располоТСн Π² сСгмСнтС Π΄Π°Π½Π½Ρ‹Ρ… (Ссли пСрСмСнная объявлСна глобально) ΠΈΠ»ΠΈ Π² стСкС (Ссли пСрСмСнная объявлСна локально Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ). Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ конструктор. Π­Ρ‚ΠΎ распрСдСлит ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² глобальной ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΊΡƒΡ‡Π΅ для экзСмпляра класса. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΌΡ‹ распрСдСлим ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΎΠ±Ρ‰Π΅ΠΉ Π·Π°Ρ‰ΠΈΡ‚Ρ‹.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ Create() являСтся классовым ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, наслСдуСмым ΠΎΡ‚ класса TObject. Create() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ (Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅Ρ‚) ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, наслСдуСмыС ΠΎΡ‚ TComponent, ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΎ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ), конструктор Π½Π° Π²Ρ…ΠΎΠ΄Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° "Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°" ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ TComponent.

ΠŸΡ€ΠΈ динамичСском создании ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π²Π»Π°Π΄Π΅Π»Π΅Ρ†Π΅ΠΌ становится "Self". Если Π²Ρ‹ Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ„ΠΎΡ€ΠΌΡ‹, "Self" Π² Π΄Π°Π½Π½ΠΎΠΌ контСкстС Π±ΡƒΠ΄Π΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° саму Ρ„ΠΎΡ€ΠΌΡƒ. Если Π²Π»Π°Π΄Π΅Π»Π΅Ρ† являСтся Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, освобоТдСниС этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Π»Π΅Ρ‡Π΅Ρ‚ Π·Π° собой автоматичСскоС освобоТдСниС "Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ" ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Π”Ρ€ΡƒΠ³ΠΈΠΌ распространСнным ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ являСтся "Application". Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² случаС, ΠΊΠΎΠ³Π΄Π° Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ назначСния Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ owner устанавливаСтся Π² Nil. Но Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ впослСдствии Π²Ρ‹ Π½Π΅ смоТСтС ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Если конструктору ΠΏΡ€ΠΈ создании Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Nil, Ρ‚ΠΎ послС использования ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сами ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ Free.

ПослС создания ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (Ρ‚.Π΅. Ρ‚Π΅Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ наслСдниками TWinControl), Π½ΠΎ Π΅Ρ‰Π΅ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹, Ρƒ Π½ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ свойство Parent. ΠœΠ΅ΡΡ‚ΠΎ установки свойства Parent являСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ мСстом для установки Π΄Ρ€ΡƒΠ³ΠΈΡ… свойств экзСмпляра Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Width, Color, OnClick).

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ Ρ‚Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Π˜Π½ΡΠΏΠ΅ΠΊΡ‚ΠΎΡ€Π΅ ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΡ€ΠΎΡΡ‚ΠΎ присвойтС ΠΈΠΌΠ΅Π½ΠΈ свойства ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° для события, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° события, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅, ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ с ΠΈΠΌΠ΅Π½Π΅ΠΌ "myclick". ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π° ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ список Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π² точности ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ списку Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1:

var b1 : TButton;

begin

 .

 .

 .

 b1 := TButton.Create(Self);

 with b1 do begin

  Left := 20;

  Top := 20;

  Width := 90;

  Height := 50;

  Caption :=  'моя ΠΊΠ½ΠΎΠΏΠΊΠ°';

  Parent := Form1;

  OnClick :=  MyClick; { ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, опрСдСлСнная Π³Π΄Π΅-Ρ‚ΠΎ Π΅Ρ‰Π΅ }

 end;

 .

 .

 .

end;

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ динамичСски ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ, щСлкая ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠΉ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ Π²ΠΎ врСмя проСктирования (ΠΊ этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ ΠΎΠ½Π° ΡƒΠΆΠ΅ создана). Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ создания ΠΊΠ½ΠΎΠΏΠΊΠΈ. ВсС способы Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅. Π’Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π½Π΅ освобоТдаСмыС Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΡ‹.

unit Unit1;