Moin moin,
Ich muss die Standardwerte der Komponenten (Zur Zeit eigentlich nur die Captions) zur Laufzeit wieder einlesen.
Also die Werte, die die Komponenten beim erzeugen des Formulars bekommen.
z.B. Ich habe ein Label auf dem Formular mit Caption: '
Hallo Welt!' - Jetzt wird auf Grund von Benutzeraktionen etc. dieser Wert in '
Helo World!' (oder sonstiges) geändert. Jetzt muss ich auf z.B. einem klick wieder den Wert reinschreiben, den das Label
beim Programmstart hatte (Also hier: '
Hallo Welt!').
Diese Aufgabe konnte ich bereits lösen, in dem ich die
Unit reinit.pas aus dem Demo-Projekt
(
..\RAD Studio\5.0\Demos\DelphiWin32\VCLWin32\RichEdit) nutze.
Es scheitert jetzt daran, dass wenn Frames (TFrame) auf dem Formular liegen, diese (und die darin befindlichen Komponenten)
nicht wieder zurück gesetzt werden.
(Ehrlich gesagt liegt mein Problem beim Verständnis der TAsInheritedReader aus der
Unit reinit.pas)
Was müsste ich umbauen, um dies auch realisieren zu können?
Ich habe versucht, die procedure
ReinitializeForms anzupassen, was aber beim 2. aufruf in einer Zugriffsverletzung endete
(Auskommentierter Quelltext).
Ausserdem stimmt die Position des Frames nach dem neuladen nicht mehr.
Delphi-Quellcode:
procedure ReinitializeForms;
var
Count: Integer;
I,J: Integer;
Form: TForm;
Frame: TFrame;
begin
Count := Screen.FormCount;
for I := 0 to Count - 1 do
begin
Form := Screen.Forms[I];
ReloadInheritedComponent(Form, TForm);
//for J := 0 to Form.ComponentCount - 1 do begin
// if Form.Components[J] is TFrame then begin
// Frame := TFrame(Form.Components[J]);
// ReloadInheritedComponent(Frame, TFrame);
// end;
//end;
end;
end;
Ich hab mal ein Demoprojekt angehängt, welches das Problem verdeutlichen soll.
[edit=SirThornberry]Titel korrigiert - Mfg, SirThornberry[/edit]