Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Neue Ereignisse anstoßen (https://www.delphipraxis.net/98509-neue-ereignisse-anstossen.html)

Texas 28. Aug 2007 13:52


Neue Ereignisse anstoßen
 
hallo erst mal.

Ich bin gerade dabei mich mit der Komponentenentwickelung auseinanderzusetzen.
Komme auch so stück für stück weiter.

Nur bei den Ereignissen tu ich mich noch etwas schwer.
Ich möchte ein Stringgrid um die Ereignisse BeforeAppendRows, AfterAppendRows sowie
BeforeDeleteRows und AfterDeleteRows erweitern. Der Sinn und Zweck ist nämlich das
ich Objects die dem Grid zugewiesen sind aus bzw. in den Speicher löschen/schreiben will.

Die Ereignisse im Objektinspekto werden zwar angezeigt, aber wie bekomme ich es hin
dass DIESE Ereignisse angestoßen werden, wenn ich Rowcount erhöhe oder abziehe.
Muss ich dazu irgendwelche Windowsbotschaften abfangen ? und wenn ja wie.

Oder kann ich das ganze mit einer Procedure in der Komponente erledigen?
Wie Cells[x,y] die müssten doch auch irgendwie verwaltet werden.
Ich habe versucht mir das da mal anzusehen,
habe aber vor lauter hin in her gar nix mehr :gruebel: :gruebel:

ich würde mich sehr :witch: wenn ich das mit den Ereignissen :coder2:

texas

DelphiKlaus 28. Aug 2007 14:15

Re: Neue Ereignisse anstoßen
 
Hallo,

Du mußt ganz einfach an geeigneter Stelle in Deiner Komponente mit if assigned (...) prüfen, ob eine Ereignisbehandlungsroutine eingetragen ist, und dann diese aufrufen. Guck doch einfach mal in den Quelltext von z.B. TButton

MfG

Klaus

DeddyH 28. Aug 2007 14:38

Re: Neue Ereignisse anstoßen
 
Im Prinzip so:
Delphi-Quellcode:
type
  TTestEvent = procedure(Sender: TObject; var Blubb: integer) of object;

  TMyCompo = class
  private
    FOnTest: TTestEvent;
    ...
  published
    property OnTest: TTestEvent read FOnTest write FOnTest;
  end;

...
constructor TMyCompo.Create(aOwner: TComponent);
begin
  inherited;
  FOnTest := nil;
  ...
end;

...
procedure TMyCompo.DoSomething(Sender: TObject);
begin
  ...
  if Assigned(FOnTest) then
    FOnTest(Sender,20);
end;

Texas 28. Aug 2007 14:49

Re: Neue Ereignisse anstoßen
 
das werde ich nachher mal testen.

und :mrgreen: für die schnelle Antwort.

texas

Texas 28. Aug 2007 15:35

Re: Neue Ereignisse anstoßen
 
Also irgenwie wird das Ereigniss nicht angestoßen wenn ich RowCount im Programm erhöhe.

StringGrid1.RowCount := Query1.ReccordCount + 1;

AfterAppendRows Ereigniss wird nicht ausgeführt :wall:

DeddyH 28. Aug 2007 15:37

Re: Neue Ereignisse anstoßen
 
Rufst Du es denn auch auf?
Delphi-Quellcode:
StringGrid1.RowCount := Query1.ReccordCount + 1;
if Assigned(FOnAfterAppendRows) then
  FOnAfterAppendRows;

Texas 28. Aug 2007 15:42

Re: Neue Ereignisse anstoßen
 
natürlich habe ich das

NICHT


gemacht :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz