AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Form als Parameter übergeben

Ein Thema von Aleshi · begonnen am 28. Nov 2011 · letzter Beitrag vom 29. Nov 2011
Antwort Antwort
Seite 1 von 2  1 2      
Aleshi

Registriert seit: 28. Nov 2011
6 Beiträge
 
#1

Form als Parameter übergeben

  Alt 28. Nov 2011, 09:58
Delphi-Version: 5
Hallo,

dies ist mein erster Beitrag und ich programmier auch noch nicht so lange Delphi. Hoffe ihr könnt mir helfen.

Nun zu meinem Problem.

Ich hab eine MdiParent Form und in dieser möchte ich eine Procedure schreiben in welcher Farben für Label, EditFelder, Panels usw fesgelegt werden. Ich habe auch ein componentcount drinn um rauszufinden was für Komponenten vorhanden sind. Diese Procedure soll aber con jedem MdiChild das ich erstelle aufgerufen werden und die jeweilige MdiChild Form soll als Parameter übergeben werden damit ich dann mit dem componentcount die Komponenten rausfinden kann. Wie übergebe ich aber die MdiChild Form als Parameter an die Procedure?

Dies ist die Procedure in der Main

Code:
Procedure TfrMain.DatenImport(????);
var ini: TIniFile;
    a, c, e, g, j: String;
    b, d, f, h, i, k, l: Integer;
begin
  ini := TIniFile.create('c:\Delphi\Farben2.ini');
  try
    a := ini.ReadString('TPanel','Farbe','0');
    b := StrToInt(a);
    c := ini.ReadString('TPanel','Schriftfarbe','0');
    d := StrToInt(c);
    e := ini.ReadString('TForm','Farbe','0');
    f := StrToInt(e);
    g := ini.ReadString('TLabel','Schriftfarbe','0');
    h := StrToInt(g);
    j := ini.ReadString('TEdit','Schriftfarbe','0');
    k := StrToInt(j);
    with z 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;
und dies soll der Aufruf von der Child Form sein:

Code:
procedure TfrChild.FormCreate(Sender: TObject);
Var
begin
  TfrMain.DatenImport(???);
end;

end.
Momentan ist es natürlich so das er in der Main Form TLabel, TPanel usw als undefiniert makiert weil ja diese Komponenten nicht auf der Main vorhanden sind, sollen ja auch die von den Childs sein...

Vielen Dank im Vorraus
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Form als Parameter übergeben

  Alt 28. Nov 2011, 10:04
Delphi-Quellcode:
//Procedure TfrMain.DatenImport(Dest:TForm);
//oder
Procedure TfrMain.DatenImport(Dest:TComponent); // dann kannst Du es auch Recursiv verwenden
var
....
begin
...
for i := 0 to Dest.ComponentCount -1 do
 if (Dest.Components[i] is TPanel) then
Ich würde es aber gleich als einfache Prozedur nicht als Klassenprozedur implementieren
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Aleshi

Registriert seit: 28. Nov 2011
6 Beiträge
 
#3

AW: Form als Parameter übergeben

  Alt 28. Nov 2011, 10:26
Hallo Bummi,

zuerstmal Danke für die schnelle Antwort.

Aber irgendwas mach ich falsch, wenn ich die Procedure dann vom Child mit

Code:
TfrMain.DatenImport(Dest:TComponents));
aufrufen möchte meckert er wegen dem Dest und die Komponenten sind auf der Main immernoch unbekannt.

Sorry für meine Unwissenheit aber ich lern Delphi irgendwie komplett chaotisch
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Form als Parameter übergeben

  Alt 28. Nov 2011, 11:00
Code:
procedure TfrChild.FormCreate(Sender: TObject);
Var
begin
  TfrMain.DatenImport(???);
end;
... wird zu ...
Delphi-Quellcode:
procedure TfrChild.FormCreate(Sender: TObject);
begin
  frMain.DatenImport(Self);
end;
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
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, 11: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 11:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Form als Parameter übergeben

  Alt 28. Nov 2011, 11:11
Kleiner Tipp: Variabelnnamen dürfen auch länger als ein Buchstabe sein.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Form als Parameter übergeben

  Alt 28. Nov 2011, 11:19
Kleiner Tipp: Variabelnnamen dürfen auch länger als ein Buchstabe sein.
Seit wann das denn?
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)
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Form als Parameter übergeben

  Alt 28. Nov 2011, 11:40
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)?
Hab ich mir auch gedacht, wollte aber nicht noch mehr Verwirrung stiften
Nr.1 Delphi-Tool: [F7]
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Form als Parameter übergeben

  Alt 28. Nov 2011, 12:26
Kleiner Tipp: Variabelnnamen dürfen auch länger als ein Buchstabe sein.
Aber das wäre doch schade, da hat man doch gar nichts zu raten.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Aleshi

Registriert seit: 28. Nov 2011
6 Beiträge
 
#10

AW: Form als Parameter übergeben

  Alt 28. Nov 2011, 14:05
Danke an Alle,

es funktioniert nun

Vielen Dank für die vielen Tipps und die schnelle Hilfe!

Gruß Aleshi
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:04 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