Einzelnen Beitrag anzeigen

Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
210 Beiträge
 
Delphi 12 Athens
 
#1

Objekte in verschiedenen Formularen zentral initialisieren

  Alt 11. Jan 2025, 17:11
Ich möchte in verschiedenen Formularen alle Objekte eines Typs auf feste Werte setzen, in einer zentralen procedure.
Dafür verwende ich folgende procedure in meiner Unit uInitForm.pas.
Code:
procedure InitFormControls(lfrm: TForm);
var
  i: Integer;
  component: TComponent;
begin
  with lfrm do
  begin
    for i := 0 to ComponentCount - 1 do
    begin
      component := Components[i];

      // Prüfen, ob die Komponente eine Font-Eigenschaft besitzt
      if component is TControl then
      begin
        // Fontname setzen für Textobjekte
        TControlAccess(component).Font.Name := FontNameGlobal;
      end;

      if component is TGraphicControl then
      begin
        // Fontname setzen für Grafikelemente
        TControlAccess(component).Font.Name := FontNameGlobal;
      end;

      if component is TPanel then
      // Prüfen, ob die Komponente ein TPanel ist
      begin
        (component as TPanel).Color := clFormBackground;
        (component as TPanel).BevelOuter := bvNone;
        (component as TPanel).Caption := '';
        (component as TPanel).Color := clFormBackground;
        (component as TPanel).ParentColor := True;
        (component as TPanel).ParentFont := True;
        (component as TPanel).ShowCaption := False;
      end;
    end;
  end;
end;
Dies rufe ich z.B. aus form1 auf mit:

Code:
procedure TfrmForm1.FormShow(Sender: TObject);
begin
  InitFormControls(Sender as TForm);
end;
Dies funktioniert soweit ich es getestet habe.

Jetzt möchte ich aber alle Forms aus eine zentralen Form FormMain aufrufen:
Dabei will ich dann die Form übergeben die initialisiert werden soll (Form1 oder Form2 oder Form3)
wie übergebe ich hier den Sender-Parameter.
Wenn ich die jeweilige Form übergebe, bekomme ich eine Memory Exception.
InitFormControls(Form1);

Oder geht das alles noch einfacher?
  Mit Zitat antworten Zitat