![]() |
Meldungen aus einer Unit an ein Formular senden
Hallo,
weiß jemand wie ich Informatione aus einer Unit(ohne Formular) an eine andere Unit mit Formular übergeben kann. Ich habe ein VCL-Formularanwendung geschieben in der es ein Memofeld gibt. Diese Formularanwendung ruft eine Unit(hier Unit2 genannt) auf, die Meldungen in das Memofeld der Formularanwendung schreiben soll. Die Unit2 möchte ich in unterschiedlichen Programmen immer wieder verwenden können. Wie kann ich dies Realisieren ohne die Formularanwendung unter uses der Unit2 anzugeben. Würde mich über jeden Lösungsvorschlag sehr freuen. MfG Lars |
AW: Meldungen aus einer Unit an ein Formular senden
Du brauchst irgendeinen gemeinsamen Nenner. Ich würde das so machen: Unit2 beinhaltet Funktionen/Methoden, die StringListen (entweder TStrings oder TStringList) als Parameter bekommen. Die Formular-Unit übergibt dann die Eigenschaft TMemo.Lines (vom Typ TStrings) an die Funktionen/Methoden von Unit2.
MfG Dalai |
AW: Meldungen aus einer Unit an ein Formular senden
Oder Unit2 enthält eine schnuckelige kleine Klasse, der man die zu befüllenden TStrings als Property zuweist.
|
AW: Meldungen aus einer Unit an ein Formular senden
@ LarsSchwencke:
Das Ereignis, das das Schreiben von Text in dein Memo auslösen soll, stammt ja vermutlich aus deiner Formular-Unit. Da wäre es irgendwie mit der Kirche ums Dorf und durch die Brust ins Auge geschossen, hier den Umweg über eine zweite Unit zu gehen. Wenn es einfach nur darum geht, eine bestimmte Methode, die Text in ein Memo schreibt, in anderen Anwendungen wiederverwenden zu können, würde ich das erstmal grundsätzlich nicht über eine zweite Unit machen, sondern mir die Methode einfach irgendwo abspeichern. Ich mache das mit meiner Codeverwaltung, die ich im Rahmen einer kompletten Projektverwaltung etnwickelt hatte. Du kannst z.B. ![]() Natürlich gibt es auch Fälle, in denen es sinnvoll ist, eine Methode in einem Formular von einer anderen Unit/einem anderen Formular aus anzustoßen, z.B. wenn im Hauptformular ich auf das Verschieben des Datensatz-Zeigers einer Tabelle (AfterScroll) aus einem Datenmodul reagieren möchte oder wenn ich z.B. in einem eigenen Thread in einer anderen Unit meine Postfächer abrufe, dem zuständigen Formular mitzuteilen, wenn eine neue Email eingegangen ist usw. In diesen Fällen erzeugt man Ereignisse selbst und reagiert darauf in der entsprechenden Unit. |
AW: Meldungen aus einer Unit an ein Formular senden
Wenn ich das richtig verstehe!
Dann kannst einfach eine Funktion in der Unit2 schreiben die eine String liste zurück gibt. Beispiel
Code:
MeinMemo.text := ObjectFromUnit2.DoSomethingfunction;
Wenn ich dein Problem falsch verstanden habe, dann sorry. |
AW: Meldungen aus einer Unit an ein Formular senden
Zitat:
Gruß K-H |
AW: Meldungen aus einer Unit an ein Formular senden
Hallo,
vielen Dank für die schnellen Antworten. Wenn ich es mit einer StringList mache, dann muß ich in der Unit1 über eine Pollingfunktion immer nachschauen ob neue Meldungen in der StringList stehen, da ich ja nicht weiß wann die Unit2 neue Mitteilungen in die StringList schreibt, oder? Gibt es eine Möglichkeit das Pollen zu vermeiden. MfG Lars |
AW: Meldungen aus einer Unit an ein Formular senden
Wie gesagt: ich würde mir eine kleine Klasse schreiben, die die Mitteilungen intern in einer Stringliste verwaltet und über ein Event samt zugehöriger Property verfügt, das bei Hinzufügen einer Mitteilung gefeuert wird.
|
AW: Meldungen aus einer Unit an ein Formular senden
Zitat:
|
AW: Meldungen aus einer Unit an ein Formular senden
Wie wärs denn so?
In der Unit ohne Formular:
Delphi-Quellcode:
Und der Aufruf in der Unit mit Formular wäre dann so:
procedure SchreibeInMemo(MyStrings : TStrings);
begin MyStrings.Add('noch ne Zeile'); end;
Delphi-Quellcode:
SchreibeInMemo(memo1.Lines);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 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