Entwickler-Ecke
Sonstiges (Delphi) - zweidimensionales dynamisches Array von Shapes
Sam09 - Mo 23.03.09 16:21
Titel: zweidimensionales dynamisches Array von Shapes
Hallo,
Ich habe ein kleines Problem:
Ich habe ein zweidimensionales Array von Shapes dynamisch erstellt. Bei der Ausgabe im Panel hätte ich es gerne Reihe für Reihe ausgegeben, aber egal wie ich es anstelle ich bekomme es nicht hin.. ich hoffe Ihr könnt mir helfen..
Danke schonmal!
Hier der Quellcode:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| var Form1: TForm1; Myshapes: array of array of Tshape;
Procedure zeichnen; var x,y, links:integer;
begin setlength(Myshapes,4,4); links:=-1; for x:= 0 to high(Myshapes) do begin for y:=0 to high(Myshapes[x]) do begin Myshapes[x][y]:=TShape.Create(Form1.Panel1); myshapes[x][y].Shape:=stCircle; myshapes[x][y].Parent:=Form1.Panel1; myshapes[x][y].Top:=0 ; myshapes[x][y].left:=links*50; myshapes[x][y].width:=150; myshapes[x][y].height:=50; myshapes[x][y].Brush.Color:=clwhite; inc(links); end; end; end; |
Xentar - Mo 23.03.09 16:41
Was passiert denn (nicht)? Fehlermeldung?
Sam09 - Mo 23.03.09 16:46
Also, es gibt keine Fehlermeldung! Beim create werden alle shapes in einer Reihe auf dem Panel angezeigt. Ich möchte aber mehrere Reihen haben!!
Bsp. ich habe die größe mit setlenght(Myshapes,4,4) gesetzt, dann möchte ich 4 Reihen á 4 Shapes haben. Ich bekome das aber nicht hin, egal wie ich es versuche!!
Ich hoffe ich konnte mein Problem plausibel erklären!
Keldorn - Mo 23.03.09 16:49
Hallo
| Zitat: |
myshapes[x][y].Top:=0 ;
myshapes[x][y].left:=links*50;
myshapes[x][y].width:=150;
myshapes[x][y].height:=50;
|
na, du tust doch alle übereinander erstellen, an der Erstellposition wird doch gar nix geändert
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| Breite := 150; Hoehe := 50; ... myshapes[x][y].Top:=x*(Breite+10); myshapes[x][y].left:=y*(Hoehe+10); myshapes[x][y].width:= breite; myshapes[x][y].height:=hoehe; |
wenn du mit deinem Links arbeiten willst, mußt du die Schleifen drehen (y zuerst und dann x durchlaufen) und links in der y-Schleife am anfang wieder auf 0 setzen. Bringt dir für das Setzen der Top-Eogenschaft aber auch 0 Punkte
Gruß Frank
elundril - Mo 23.03.09 16:49
naja, eh klar, dein Top is ja statisch! da kanns ja nur in einer reihe angezeigt werden. du müsstest dein top mit dem x bzw dem y deiner schleifen koppeln.
lg elundril
//edit: lol gleichzeitig :D
Sam09 - Mo 23.03.09 16:54
Perfekt!!
Läuft genau so wie ich es wollte!!
Vielen Dank für die schnelle Hilfe!!!
Xentar - Mo 23.03.09 17:01
Und gewöhn dir bitte diese vielen Ausrufezeichen ab. Oder schreist im richtigen Leben auch jeden an, wenn du mit ihm sprichst?
Sam09 - Mo 23.03.09 17:08
Alles klar, danke.
Sam09 - Mi 25.03.09 20:14
Habe noch eine Frage dazu:
Jetzt habe ich die shapes in richtiger Reihenfolge, möchte diese per dynamisch erstellter Buttons (array of TButton) färben.
Das bedeutet ich klicke den Button über den shapes an und es soll das letzte in der Spalte gefärbt werden.
Meine Procedure klappt zwar, aber es werden immer mehrere Shapes gefärbt, es soll aber immer nur das letzte Shape gefärbt werden.
Ich hoffe Ihr könnt mir nochmal helfen.
/Edit erledigt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!