AGB  ·  Datenschutz  ·  Impressum  







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

Array aus TComponents/TControl ?

Ein Thema von zack0r · begonnen am 5. Jan 2005 · letzter Beitrag vom 9. Jan 2005
Antwort Antwort
zack0r

Registriert seit: 5. Jan 2005
Ort: Rosenheim
25 Beiträge
 
#1

Array aus TComponents/TControl ?

  Alt 5. Jan 2005, 00:57
Hallo ich habe folgendes Problem:
ich wollte ne procedure schreiben, mit der ich verschiedene Komponenten zur Laufzeit (quasi dynamisch) erstelle. Die Komponenten, die ich erstellen will liegen in mehreren Arrays, der form
EditsLK: array[1..3] of TEdit; vor.

Meine Procedure sieht folgendermaßen aus:
Delphi-Quellcode:
procedure TForm1.CompCreate(Comp: string; settParent: TWinControl; settWidth: integer; settLeft: integer; settHeight: integer; settName: string; settText: string; settTop: integer; i: integer);
begin
  if Comp = 'EditsLKthen
  begin
    EditsLK[i] := TEdit.Create(self);
    with EditsLK[i] do
    begin
      Parent := settParent;
      Width := settWidth;
      Left := settLeft;
      Height := settHeight;
      Name := settName;
      Text := settText;
      Top := settTop;
    end;
  end;
{....usw.}
Mein Problem ist jetz, dass ich nicht weiss, wie ich die Variablen setzten soll. Weil so muss ich für jedes Komponentenarray, die ich eigentlich bequem per Procedure erstellen wollte, den selben Ablauf wie oben nochmal schreiben. Ich hab ein wenig rumprobiert und versucht ein array aus TControlClass zu machen:
Delphi-Quellcode:
procedure TForm1.CompCreate(Comp: TControl; CompArray: array of TControlClass; settParent: TWinControl; settWidth: integer; settLeft: integer; settHeight: integer; settName: string; settText: string; settTop: integer; i: integer);
begin
  CompArray[i] := Comp.Create(self);
  with CompArray[i] do
  begin
    Parent := settParent;
    Width := settWidth;
    Left := settLeft;
    Height := settHeight;
    Name := settName;
    Caption := settText;
    Top := settTop;
  end;
end;
Leider gibt der Compiler jetzt nur "Inkompatible Typen" aus...
Hat vielleicht jemand ne Idee? Bin ich komplett aufm "Holzweg"? Kann mir jemand helfen?

Danke im Vorraus
  Mit Zitat antworten Zitat
Kamephis

Registriert seit: 22. Jun 2004
12 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Array aus TComponents/TControl ?

  Alt 5. Jan 2005, 01:52
1) wenn Du die Componenten eh in einen Array verwaltest würde ich die Zuweisung des Komponentennamens weglassen, ist nur fehleranfällig
2) das führt in etwa zu folgenden, ungetesteten Codeschnippsel:

Delphi-Quellcode:
    
arrCtrl: array[1..3] of TControl

procedure TForm1.CompCreate(CompClass: TControlClass; CompArray: array of TControl; settParent: TWinControl; settWidth: integer; settLeft: integer; settHeight: integer; settTop: integer; settText: string; i: integer);
begin
  CompArray[i] :=CompClass.Create(self);
  with CompArray[i] do
  begin
    Parent := settParent;
    Width := settWidth;
    Left := settLeft;
    Height := settHeight;
    Top := settTop;
    if CompClass.ClassNameIs('TEdit') Then TEdit(CompArray[i]).Text := settText;
    if CompClass.ClassNameIs('TLabel') Then TLabel(CompArray[i]).Caption := settText;
    ... [weitergehende Eigenschaften müssen entsprechend auf der gecasteten Komp. zugewíesen werden]
  end;
...

Aufruf sollte dann so gehen
  CompCreate(TEdit, arrCtrl, Panel1,10,10,21,10,'Text',1);
God is real unless declared as integer.
  Mit Zitat antworten Zitat
zack0r

Registriert seit: 5. Jan 2005
Ort: Rosenheim
25 Beiträge
 
#3

Re: Array aus TComponents/TControl ?

  Alt 5. Jan 2005, 17:39
ok danke es geht
  Mit Zitat antworten Zitat
zack0r

Registriert seit: 5. Jan 2005
Ort: Rosenheim
25 Beiträge
 
#4

Re: Array aus TComponents/TControl ?

  Alt 5. Jan 2005, 19:36
Ok nächste Frage: Ich hab mit der Procedure jetz eine Groupbox erstellt, in der ich Edits und Labels anzeigen lassen will. Was muss ich für die (auch dynamisch erstellten) Edits und Labels als Parent einstellen? Habs Probiert mit
TGroupbox(groupboxes[1]) und mit
TGroupBox(Findcomponent('groupbox9')) aber nichts tut sich. Wenn ich aber eine Groupbox zur Entwurfszeit erstelle und einfach den Namen angebe als Parent für die Edits & Labels werden sie ganz normal erstellt. Was mache ich falsch?

Danke im vorraus
  Mit Zitat antworten Zitat
zack0r

Registriert seit: 5. Jan 2005
Ort: Rosenheim
25 Beiträge
 
#5

Re: Array aus TComponents/TControl ?

  Alt 9. Jan 2005, 21:18
kann mir keiner helfen? kann jetz auch nicht mehr auf die Edit-Werte zugreifen. Wie mach ich das?

MFG
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Array aus TComponents/TControl ?

  Alt 9. Jan 2005, 21:24
aber die Edits werden weiterhin angelegt? Also du musst den Parent der Edits schon auf die
TGroupbox(groupboxes[9]) setzen. Hast du den Parent von den Grupboxes auch gesetzt?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
zack0r

Registriert seit: 5. Jan 2005
Ort: Rosenheim
25 Beiträge
 
#7

Re: Array aus TComponents/TControl ?

  Alt 9. Jan 2005, 21:33
erstellt wird jetz alles richtig, die groupboxes werden auf einem Tabsheet erstellt und die Edits & Labels mit Parent auf TGroupBox(groupboxes[1]) aber wenn ich jetzt versucht berechnungen mit den inhalten der Editfelder durchzuführen passiert nicht. ich spreche die komponenten an mit TEdit(EditsLK[i]).Text MFG
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:44 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