AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frame aus einer Unit ansprechen

Ein Thema von HPB · begonnen am 7. Aug 2012 · letzter Beitrag vom 8. Aug 2012
 
Furtbichler
(Gast)

n/a Beiträge
 
#6

AW: Frame aus einer Unit ansprechen

  Alt 8. Aug 2012, 07:14
Dein Frame ist mitteilsam. Gut so.
Stell Dir vor, nicht nur dieses Frame wäre mitteilsam, sondern viele andere auch. Vielleicht ist eine unsichtbare Klasse auch mitteilsam und möchte Nachrichten loswerden.

Du kannst Dir eine Klasse bauen, die alle Mitteilungen entgegennimmt und irgendwo anzeigt oder speichert. Diese Klasse wäre auch z.B. in der Lage, das Memo im Hauptformular zu befüllen. Diese Klasse nennen wir einfach mal TMessageCollector.

Davon benötigen wir jetzt eine Instanz.

Dein Frame ruft also MessageCollector.AddMessage('Ich bin ein Frame und hatte Erfolg') auf. Für das Frame ist die Sache damit erledigt.

Der MessageCollector kann diesen Text z.B. mit Zeitstempel in einer Datei ablegen. So hättest Du eine Art Logging. Oder er schickt die Nachricht an das Hauptformular. Das ist aber vielleicht keine sooo gute Idee, denn dann müsste der MessageCollector ja von dem Hauptformular wissen und du könntest diese an sich sehr praktische Klasse später nicht noch einmal verwenden.

Also könnte man das so lösen, das der Collector z.B. eine Property "LogStrings" vom Typ TStrings definiert. Das Hauptformular setzt nun diese Property auf Memo.Lines und fertig ist die Kiste.

Dann muss man nur noch darauf achten, das der MessageCollector die LogStrings nicht in einem Thread befüllt.

Eine andere Möglichkeit wäre, das der Messagecollector die anzuzeigenden Strings per SendMessage an ein Handle schickt. Das Hauptformular implementiert einen Messagehandler und teilt dem Messagecollector noch sein Handle mit.

Man könnte auch bemängeln, das das Frame und alle Klassen zu starr mit dem Messagecollector verbunden sind, aber das muss man abwägen. In vielen Projekten habe ich so einen Collector, weil ich unbedingt Logausgaben/Dateien benötige, um Troubleshooting zu betreiben.

Viele Wege führen nach Rom.

Geändert von Furtbichler ( 8. Aug 2012 um 07:16 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:28 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