2016-03-23 18 views
1

Birkaç bileşen içeren bir bileşen yazıyorum. fGrid dahil etmekPropagate Etkinliği, iç bileşenden

TMyComponent = class(TPanel) 
    private 
    fGrid : TExCustomDBGrid; 
    fOnCellClick : TDBGridClickEvent; 
    public 
    constructor Create(AOwner: TComponent); override; 
    published 
    property OnCellClick: TDBGridClickEvent read FOnCellClick write FOnCellClick; 
    End; 
... 
constructor TMyComponent .Create(AOwner: TComponent); 
begin 
    inherited; 
    fGrid := TExCustomDBGrid.Create(self); 
    fGrid.parent := self; 
    fGrid.Align := alClient; 
end; 

Ben, bileşen (TPanel) den Etkinlik yaymak için mümkün istiyorum. Bu hedefe nasıl ulaşabilirim?

Aynı tür bir Olayı (konteyner bileşeni olarak) TPanel'de bildirmeliyim. O zaman fGrid'e nasıl yayılır?

+0

benim cevaptır varsayıyorum ne Arıyordum, ama yayılımı geriye doğru tarif ediyor gibi göründüğünüz biraz kafa karıştırıcı. Panelden ızgaraya ilerlemezsiniz, ancak panelin ızgarasıdır. –

+0

Haklısınız. Aslında ... benim TPanel içinde DBGrid.OnCellClick olayı serpiştirildikten sonra çağrılacak bir etkinlik istiyorum. TPanel.OncellClick Etkinliğime koydum kodu yürütmek için. – ffert2907

cevap

6

O ne istediğini biraz belirsiz, ama bakın koduna dayalı bir olay işleyicisi yazmak ve ızgara atamak ...

procedure TMyComponent.DBGridCellClicked(Column: TColumn); 
begin 
    if Assigned(fOnCellClick) then 
    fOnCellClick(Column); 
end; 

constructor TMyComponent.Create(AOwner: TComponent); 
begin 
    inherited; 
    fGrid := TExCustomDBGrid.Create(self); 
    fGrid.Parent := self; 
    fGrid.Align := alClient; 
    fGrid.OnCellClick := DBGridCellClicked; 
end; 
+0

Düzgün çalışıyor – ffert2907