| Autor |
Beitrag |
Sam09
Hält's aus hier
Beiträge: 5
|
Verfasst: Mo 23.03.09 16:21
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
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mo 23.03.09 16:41
Was passiert denn (nicht)? Fehlermeldung?
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Sam09 
Hält's aus hier
Beiträge: 5
|
Verfasst: 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
      
Beiträge: 2266
Erhaltene Danke: 4
Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
|
Verfasst: 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
_________________ Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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 
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Sam09 
Hält's aus hier
Beiträge: 5
|
Verfasst: Mo 23.03.09 16:54
Perfekt!!
Läuft genau so wie ich es wollte!!
Vielen Dank für die schnelle Hilfe!!!
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: 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?
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
Sam09 
Hält's aus hier
Beiträge: 5
|
Verfasst: Mo 23.03.09 17:08
|
|
Sam09 
Hält's aus hier
Beiträge: 5
|
Verfasst: 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
|
|