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?