Eigentlich hat diese Funktionalität doch nichts mit der MainForm zu schaffen?
Warum also eine Methode in der MainForm, und nicht eine einfache procedure (in einer eigenen
Unit)?
Oder besser noch eine eigene Klasse, welche die Ini-Datei einmal liest und dann mit diesen Werte arbeitet?
Also hier mal als procedure:
Delphi-Quellcode:
unit FormControlCustomize;
interface
uses
Classes;
// TComponent
procedure CompFarbenSetzen( aOwner : TComponent );
implementation
uses
StdCtrls,
// TEdit, TLabel
ExtCtrls,
// TPanel
IniFiles;
// TIniFile
procedure CompFarbenSetzen( aOwner : TComponent );
var ini: TIniFile;
a :
String;
b, d, f, h, i, k, l: Integer;
begin
ini := TIniFile.create('
c:\Delphi\Farben2.ini');
try
// Warum so kompliziert???
a := ini.ReadString('
TPanel','
Farbe','
0');
b := StrToInt(a);
// das geht auch einfacher mit
b := ini.ReadInteger( '
TPanel', '
Farbe', 0 );
a := ini.ReadString('
TPanel','
Schriftfarbe','
0');
d := StrToInt( a );
a := ini.ReadString('
TForm','
Farbe','
0');
f := StrToInt( a );
a := ini.ReadString('
TLabel','
Schriftfarbe','
0');
h := StrToInt( a );
a := ini.ReadString('
TEdit','
Schriftfarbe','
0');
k := StrToInt( a );
with aOwner
do
begin
for i := 0
to ComponentCount -1
do
if (Components[i]
is TPanel)
then
begin
(Components[i]
as TPanel).ParentBackground := false;
(Components[i]
as TPanel).color:= b;
(Components[i]
as TPanel).Font.Color := d;
end
else if (Components[i]
is TLabel)
then
begin
(Components[i]
as TLabel).Font.Color := h;
end
else if (Components[i]
is TEdit)
then
begin
(Components[i]
as TEdit).Color := k;
end;
end;
finally
ini.free;
end;
end;
Im ChildForm dann einfach nur noch
Delphi-Quellcode:
Unit Child1;
...
implementation
uses
FormControlCustomize;
procedure TfrChild.FormCreate( Sender : TObject );
begin
CompFarbenSetzen( Self );
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)