![]() |
Ursprünglichen Wert eines Properties ermitteln.
Ich erstelle eine Form mit einem TLabel drauf. Die Caption von diesem Label habe ich mit einem bestimten Wort belegt. An verschiedenen Stellen im Programm wird während der Laufzeit für diese Caption ein anderes Wort zugewiesen. Zu einem bestimmten Zeitpunkt möchte ich den ursprünglichen Wert wieder herstellen.
Wie kann ich nun herausfinden, welchen Wert die Caption beim Start des Forms hatte. Also der Wert, der in der DFM-Datei des Forms vorhanden ist? Gerd |
Re: Ursprünglichen Wert eines Properties ermitteln.
Hallo,
wieso merkst Du Dir diesen Wert nicht einfach, bevor er das erste Mal geändert wird? Edit: Denkbar wäre soetwas:
Delphi-Quellcode:
Type
TMyLabel = Class(TLabel) private FOriginIn: Boolean; FOriginCaption: String; Procedure CaptionChange(Var Message: TMessage); message CM_TEXTCHANGED; published Property OriginCaption: String read FOriginCaption; End; Procedure TMyLabel.CaptionChange(Var Message: TMessage); Begin If Not FOriginIn Then FOriginCaption := Caption; Inherited; FOriginIn := True; End; [...] Procedure TForm1.Button1Click(Sender: TObject); Begin LBL.Caption := 'Ich ändere mal die Caption'; End; Procedure TForm1.Button2Click(Sender: TObject); Begin LBL.Caption := LBL.OriginCaption; End; |
Re: Ursprünglichen Wert eines Properties ermitteln.
Zitat:
Erst mal war die Frage nur eine "retorische" Frage und sehr vereinfacht dargestellt. Ich wollte einfach wissen wie ich auf die Daten der DFM-Datei, die ja in irgend einer Art wohl als Ressource in die EXE-Datei eingebunden wird, zugreifen kann. Es geht darum, daß ich eine Form habe, die als Grundlage für weitere abgeleitete Forms genommen wird. Dort möchte ich eine Art Reset-Funktion einbauen, die alle oder einen Teil der Komponenten auf den ursprünglichen Wert zurück setzt. Dazu gehören auch Tedit, TCombobox etc. Da die Ursprungsform erst mal gar nicht weis, welche Komponenten in der abgeleiteten Form sind, ist ein direkter Zugriff auf die entsprechenden Controls nicht möglich. (Nur so als Info. Einen direkten Zugriff wollte ich sowiso nicht machen) Ich könnte natürlich im create der Form mit Form.Components auf alle Controls zugreifen und speichen. Aber ich finde es eleganter direkt auf die ursprünglichen Daten der Controls, die sowiso irgendwo in der EXE-Datei vorhanden sein müssen, zuzugreifen. Gerd |
Re: Ursprünglichen Wert eines Properties ermitteln.
Hallo Gerd,
der Beitrag von Peter Below in ![]() Gruß Hawkeye |
Re: Ursprünglichen Wert eines Properties ermitteln.
Vielleicht ist PE File Format (Portable Executable File Format) und dann der Bereich .rsrc das gesuchte???
Ich meine da sind auch ein paar diesbezügliche Routinen / Funktionen in der JCL. Ansonsten vielleicht mal diesen ![]() Ansonsten findest Du sicher auch einen Ansatz ![]() Allerdings müsste dann noch der Textteil (also die Resource) auf irgendeine Art und weise von Dir geparst werden, um die gewünschte Info zu bekommen. [EDIT:] ähem, geht nicht auch einfach TResourceStream bzw. ReadComponentRes :gruebel: Ja, ich glaub' das müsste gehen (guckst Du ![]() [/EDIT] |
Re: Ursprünglichen Wert eines Properties ermitteln.
Hallo an alle,
danke für euere Antworten. Insgesamt stellt sich heraus, daß es nicht so einfach ist die "initial property-values" irgendwo herauszulesen. Dachte, daß es irgenwo eine einfache Funktion (in der Art Label.RestoreInitialValue) gibt, die das macht. Dem ist aber nicht so. Schade. Der Hinweis auf Peter Belows Thread hat mich aber etwas weiter gebracht. Danke für euere Mühe Gerd |
Re: Ursprünglichen Wert eines Properties ermitteln.
eine Art "Label.RestoreInitialValue" gibt es nicht. Wie sollte diese auch funktionieren wenn das Label zur Laufzeit erstellt wird? Und wenn du ein Formular automatisch erstellen lässt passiert auch nichts anderes als das die DFM-abgearbeitet wird und anhand des inhaltes die Objecte erzeugt werden etc.
Wenn du Objectorientiert arbeitest wäre eine Möglichkeit einfach noch eine Objectinstanz zu erzeugen und von der neuen Instanz die werte lesen. Oder einfach mit TResourceStream die DFM-Datei aus der Resource laden und die Eigenschaften lesen. |
Re: Ursprünglichen Wert eines Properties ermitteln.
Zitat:
Zitat:
Zitat:
Gruß Gerd |
Re: Ursprünglichen Wert eines Properties ermitteln.
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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