Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Form als Parameter übergeben

  Alt 28. Nov 2011, 10:03
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)

Geändert von Sir Rufo (28. Nov 2011 um 10:06 Uhr)
  Mit Zitat antworten Zitat