Selam.
Yazdığım bileşenin, eklendiği formun OnCreate, OnResize, OnPaint event'larına kod eklemek mümkün mü? Yani formun event'ına yazdığım kodlara component'ten ekleme yapılabilir mi?
(override gibi)
Component'in eklendiği formun event'larına kod eklemek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
İyi günler;
Bir event bilindiği gibi sadece bir değer alabilir. onCreate:=FormCreate; gibi. Burada bileşenler oluşturulma ve yok edilme aşamasında değişik metotlarla bu işlem yapılabilir. Burada bileşen oluşturulmasının tesbit edilmesi işine yarar diye düşünüyorum. Burada Notification bişen yakalayıcısı .exe ilk çalışırken yakaladığı bileşenlerin hiç bir özelliği atanmamış olarak yakalar. Çünkü bileşenin özelliklerini ayarlamak için Create edilmesi gerekir ve bu Create anını yakalar. İhtiyacını karşılarmı bilmem ama konu üzerinde yazışmaya devam edilecek gibi duruyor. 
Bir event bilindiği gibi sadece bir değer alabilir. onCreate:=FormCreate; gibi. Burada bileşenler oluşturulma ve yok edilme aşamasında değişik metotlarla bu işlem yapılabilir. Burada bileşen oluşturulmasının tesbit edilmesi işine yarar diye düşünüyorum.
Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
private
{ Private declarations }
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited Notification(AComponent,Operation);
case Operation of
opInsert:;
opRemove:;
end;
end;
end.

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevabınız için teşekkürler.
Amacım, bileşeni forma ekledikten sonra formda hiç kod yazmamak olduğu için tam cevap olmadı.
Ben şu yöntemi bulmuştum:
Şimdiki kodları delphi'de yazmadım, yazım hatası olabilir; amacım zaten kullandığım mantığı anlatmak.
Skin gibi bir şey hazırlamam için gerekliydi. Neyse ki ustam 'Bileşeni TPanel'den türetip, Align özelliğini alClient yapsan?' dedi ve bunlara gerek kalmadı
Kolay gele...
Amacım, bileşeni forma ekledikten sonra formda hiç kod yazmamak olduğu için tam cevap olmadı.

Ben şu yöntemi bulmuştum:
Kod: Tümünü seç
//Bileşen unit'i
....
private
OldFormCreate: TNotifyEvent;
procedure NewFormCreate(Sender: TObject);
....
public
constructor Create(AOwner: TComponent); override;
....
constructor Create(AOwner: TComponent);
var
ParentForm: TForm;
begin
inherited Create(AOwner);
ParentForm := GetParentForm(Self);
if Assigned(ParentForm.Create) then//Eğer create event'ı varsa (kod yazılmışsa)
begin
OldFormCreate := ParentForm.OnCreate;
ParentForm.OnCreate := NewFormCreate;
end;//if
end;//Create
procedure NewFormCreate(Sender: TObject);
begin
OldFormCreate; //Formun Create event'ına yazılan kodları çalıştır.
Hede;
Hödö; //Benim kodlarımı da çalıştır.
end;//NewFormCreate
Skin gibi bir şey hazırlamam için gerekliydi. Neyse ki ustam 'Bileşeni TPanel'den türetip, Align özelliğini alClient yapsan?' dedi ve bunlara gerek kalmadı

Kolay gele...