![]() |
Event-Handler ohne visuelle Komponente
Hallo DP,
ich versuche dynamisch mehrere Komponenten zu erzeugen und zu zerstoeren. Die Komponenten haben Events die ich gerne benutzen möchte um Folgeprozesse und Routinen anzustossen. Um das Programm zu modularisieren habe ich eine Unit ( ohne Formular) benutzt. Da die Komponenten dynamisch erstellt werden und nicht einem formular zugeordnet sind habe ich keine Visuelle Komponente. Zur Verwaltung nutze ich eine TObjectList. Das erstellen und zerstoren klappt ohne Probleme. Jedoch bekomme ich nicht eine Eventhandler Procedure an die dynamisch erstellten Komponente uebergeben. Damit bei einem z.b. disconnect oder connect event eine Handler routine angestossen werden kann. Benötige ich unbedingt ein Formular auch wenn kein Fenster benoetigt wird? Gruss RC |
Re: Event-Handler ohne visuelle Komponente
BRauchst du jetzte eine Windows-Messageverarbeitung oder nut Event-MEthoden?
|
Re: Event-Handler ohne visuelle Komponente
Ich weiss einfach nicht wie ich die procedure fuer die Events an die dynamisch erstellten komponenten uebergebe.
Beispiel: Ich erstelle ine FTP client
Delphi-Quellcode:
Und ich erstelle eine Event Routine:
function Build_Single_FTP_Client:Integer;
edcftp := TIdFTP.Create(nil); // weil durch die TObjectliste verwaltet werden soll. if assigned(edcftp) then begin edcftp.Name := 'SimpleFtpClient_'+inttostr(ExistingClients+1); // es wird ab 1 hoch gezaehlt fuer die FTP client Namen SCFTP_Idx := SCftp.cftpClientList.Add(edcftp); // rueckgabewert edcftp.TransferType := ftBinary; /// binaere uebertragung edcftp.OnConnect := WithConnectClient; // diese ueberage funktioniert nicht wenn es nicht in einem Formular geschieht end; Result := SCFTP_Idx; end;
Delphi-Quellcode:
Ich denke das es nur an der Korrekten Zuweisung der Eventmethode liegt.
procedure WithConnectClient(Sender: TObject);
begin // ..... irgend ein Code end; Also was verstehe ich falsch? Gruss und Danke |
Re: Event-Handler ohne visuelle Komponente
Es wird eine Mthode erwartet, keine Procedure. Die Methode muss nicht die eines Formulars sein, aber sie muss zu einem Objekt gehören.
Edit: Wahrscheinlich hast du in deiner Unit kein Objekt erstellt. Das könnte sich noch an anderen Stellen als ungünstig erweisen. Nicht nur hier. Versuch mal in deiner Unit alles als ein Objekt zu kapseln. |
Re: Event-Handler ohne visuelle Komponente
Hmm,
nun gelesen habe ich ja Deine antwort, nur weiss ich jetzt leider noch nicht wie ich es loesen kann. Da der dynamisch erstelte Ftp Client ja eingentlich eine Komponente ist und begreife ich nun nicht wie ich jetzt an eine Methode komme? Wie gesagt das Verfahren ist bei dem Weg zur Designtime ja einfach und klar nur beim dynamischen hängt es. Hast Du noch einen Tipp, sirius? Du meinst eine eigene Kompoenente zu erstellen? Gruss und schaem RC |
Re: Event-Handler ohne visuelle Komponente
Zitat:
Man könnte es jetzt auch noch anders zusammenwurschteln. Aber dann würde ich gleich ein Objekt nehmen. Wie sieht es denn bisher in deiner Unit aus? Also alles was nicht zu einer Procedure oder Function gehört? |
Re: Event-Handler ohne visuelle Komponente
Hmm, auch wenn ich diesen AUfwand gescheut habe, nun habe ich es in eine TComponent hineingebaut und klappt ohne Problem.
Danke fuer die Ratschlaege. RC |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:58 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-2025 by Thomas Breitkreuz