AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Komponenten einer Form neu laden / Problem mit Frames
Thema durchsuchen
Ansicht
Themen-Optionen

Komponenten einer Form neu laden / Problem mit Frames

Offene Frage von "x000x"
Ein Thema von x000x · begonnen am 20. Mär 2010 · letzter Beitrag vom 22. Mär 2010
Antwort Antwort
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#1

Komponenten einer Form neu laden / Problem mit Frames

  Alt 20. Mär 2010, 13:03
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]
Angehängte Dateien
Dateityp: rar reinittest_426.rar (3,2 KB, 9x aufgerufen)
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Komponenten einer Form neu laden / Problem mit Frames

  Alt 22. Mär 2010, 11:10
Moin moin,

hat vielleicht heute einer eine Idee?
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:18 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