Autor Beitrag
Paranoid
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 03.09.02 21:47 
Hi,
also folgendes, ich hab nirgenswo was dazu gefunden, aber ist es möglich mehrere Steuerelement beispielsweise einen Buttons, unter dem selben Namen zu erstellen, die sich dann nur anhand eines Indexes unterscheiden würde, so wie das bei VB mit der Index-Eigenschaft mögl. ist?
thx
Para
MrSpock
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Di 03.09.02 22:08 
Hallo Paranoid,

du kannst ein Array z.B. deklarieren als:

ausblenden Quelltext
1:
MyControlsArray : Array[0..10] of TControl;					


Dann kannst du entsprechende Controls erzeugen und dem Array zuordnen:
ausblenden Quelltext
1:
2:
MyControlsArray[0] := TButton.Create(Self);
...


Alternativ kannst du den Namen entsprechend setzen. Heißen deine Buttons z.B. Button1, Button2, ... Buttonx, dann kannst du über die Eigenschaft Components oder über die Eigenschaft Controls auf diese Buttons zugreifen.

_________________
Live long and prosper
MrSpock \\//
Paranoid Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 03.09.02 22:13 
vielen Dank erstmal, geht das auch irgendwie, mit Hilfe der IDE, mit Streuerelement auf Form ziehen usw. oder geht das nur so?
wenn nicht ist auch net so schlimm :-)
thx
Para


Zuletzt bearbeitet von Paranoid am Di 03.09.02 22:20, insgesamt 1-mal bearbeitet
MrSpock
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Di 03.09.02 22:20 
Hallo Paranoid,

naja, das einzige was unterstützt wird, ist der o.g. Alternativvorschlag. Die Komponenten Namen werden nämlich automatisch durchnummeriert. Aber wenn du ein echtes Array willst, musst du in irgendeiner Art die Komponenten (bzw. Controls) dem Array zuweisen. Das muss natürlich nicht unbedingt bei der Erzeugung sein. Du kannst z.B. alle Buttons erzeugen und dann im Programm wieder über die Eigenschaft Controls alle Controls der Form durchlaufen und die Buttons an den Array zuweisen.

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
for i := 0 to ControlCount-1 do
  if Controls[i] is TButton then
  begin
     Inc(j);
     MyArray[j] := Controls[i];
  end;

_________________
Live long and prosper
MrSpock \\//
Paranoid Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 03.09.02 22:31 
hm...danke werde mal ein bissl rumprobieren ;-)
noob bedankt sich mal für hilfe
Paranoid Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 03.09.02 22:46 
ach nochwas, es klappt, nur ich seh denn Button net. auch net mit visible:=true oder so...
?!?
Paranoid Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 03.09.02 23:08 
hab irgendwie alles versucht:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
MyControlsArray[0].Width:=300;
MyControlsArray[0].Height:=300;
MyControlsArray[0].Visible:=true;
MyControlsArray[0].Show;
MyControlsArray[0].Repaint;
MyControlsArray[0].Update;

nix half :-)
aogwaba
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109



BeitragVerfasst: Di 03.09.02 23:32 
Du hast parent vergessen.
zb:
ausblenden Quelltext
1:
MyControlsArray[0].parent:= self;					


cu
waba
Paranoid Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 04.09.02 19:37 
OK jetzt sehe ich auch was, könnnt ihr mir ne kurze Erklärung zu parent geben?
Und wie weise ich einem Ereignis, eine prozedur zu?
thx
Para

PS: sorry, falls das blöde Fragen sind, aber normal ziehe ich steuerelente nur per Drag und Drop auf ne Form, bin halt noch nen Anfänger.
MrSpock
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Do 05.09.02 07:21 
Hallo Paranoid,

schau dir einmal die Online Hilfe zu TControl.Parent an. Da ist der Zweck von Parent ganz gut beschrieben.

Zur zweiten Frage: Die Ereignisse, auf die eine Komponente direkt Einfluss zu nehmen erlaubt, findest du im Objektinspektor unter "Ereignisse". Doppelklickst du hier in der rechten Spalte erstellt Delphi automatisch die Deklaration einer entsprechenden Ereignisbehandlungsroutine. Du kannst aber auch aus der Dropdownliste eine bereits definierte Methode auswählen, z.B. wenn viele Schalter dieselbe Methode für das OnClick - Ereignis verwenden sollen. Der Parameter Sender teilt dir dann mit, wer das Ereignis gemeldet hat.

_________________
Live long and prosper
MrSpock \\//
Paranoid Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Do 05.09.02 14:45 
hihi Objektinspektor isch klar, nur sind da keine COntrols, die nur per Code erstellelt wurden :-) danke für die Antwort.
Paranoid Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Do 05.09.02 17:20 
noch was, hab mir das zu parent durchgelesen, aber wurde parent:=self machen und nicht parent:=frmMain oder so?
aogwaba
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109



BeitragVerfasst: Do 05.09.02 17:22 
Zur Laufzeit weist du den Ereignissen einfach deine Prozeduren zu.
Diese müssen nur die selbe Signatur besitzen.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure MyClick(Sender: tobject);
...
implementation


procedure ErzeugeArrayofControls;
begin
...
MyControlsArray[0].onClick:=MyClick;
end;

procedure MyClick(Sender: tobject);
begin
...
end;

cu
waba