Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Komponenten einer Form neu laden / Problem mit Frames (https://www.delphipraxis.net/149397-komponenten-einer-form-neu-laden-problem-mit-frames.html)

x000x 20. Mär 2010 13:03


Komponenten einer Form neu laden / Problem mit Frames
 
Liste der Anhänge anzeigen (Anzahl: 1)
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]

x000x 22. Mär 2010 11:10

Re: Komponenten einer Form neu laden / Problem mit Frames
 
Moin moin,

hat vielleicht heute einer eine Idee?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz