![]() |
zweidimensionales Array von Shapes durch button färben
Hallo,
ich habe ein zweidimensionales dynamisches Array of Tshape erstellt. Dazu habe ich auch dynamisch Buttons erstellt (array of Tbutton). Jetzt möchte ich per onclick auf den Button das letzte Shape der Reihe färben, wenn es nicht schon gefärbt ist. meine Procedure klappt zwar, aber es werden immer mehrere Shapes gefärbt, aber es soll immer nur das letzte gefärbt werden, wenn es weiß ist. ich hoffe es war verständlich. Ich hoffe ihr könnt mir sagen was ich an der procedure ändern soll, damit es klappt. Danke schonmal
Delphi-Quellcode:
Procedure zeichnen;
var x,y,m,breite,hoehe,links :integer; begin i:=0; Breite := 60; Hoehe := 60; Panel1:=TPanel.Create(Form1); panel1.Parent:=Form1; panel1.Top:=50; panel1.Left:=50; panel1.Height:=hoehe*k+k*2; panel1.Width:=breite*p+p*2; panel1.Color:=clblue; setlength(Myshapes,k,p); for x:= 0 to high(Myshapes) do begin for y:=0 to high(Myshapes[x]) do begin Myshapes[x][y]:=TShape.Create(Panel1); myshapes[x][y].Shape:=stCircle; myshapes[x][y].Parent:=Panel1; myshapes[x][y].Top:=x*(Breite+2); myshapes[x][y].left:=y*(Hoehe+2); myshapes[x][y].width:= breite; myshapes[x][y].height:=hoehe; myshapes[x][y].Brush.Color:=clwhite; myshapes[x][y].OnMouseDown:=Form1.klick; end; end; setlength(Mybutton,p); links:=1; for m:= 0 to high(Mybutton) do begin mybutton[m]:=TButton.Create(Form1); mybutton[m].Parent:=Form1; mybutton[m].top:=25; mybutton[m].left:=62*links-12; mybutton[m].width:=62; mybutton[m].height:=25; mybutton[m].Font.Size:=8; mybutton[m].caption:='hier'; mybutton[m].Tag:=i; inc(links); inc(i); mybutton[m].onclick:=form1.mybuttonclick; end; end; procedure TForm1.mybuttonclick(Sender: TObject); //// Var n :integer; y : integer; x: integer; Helfer : TButton; begin Helfer := TButton(Sender); x:=high(myshapes); y:=Helfer.Tag; for n:=0 to high(mybutton) do begin If myshapes[x][y].Brush.Color = clwhite then myshapes[x][y].Brush.Color:=clyellow else x:=x-1; if x<0 then x:=0; end; |
Re: zweidimensionales Array von Shapes durch button färben
Ich bin mir nicht sicher, ob ich Dich richtig verstanden habe. Könntest Du vielleicht mal 2 Screenshots posten (gewollt und tatsächlich), damit man sich das besser vorstellen kann?
|
Re: zweidimensionales Array von Shapes durch button färben
Mal ins Blaue geraten: Kann es sein das es daran liegt, dass deine Shapes alle gleich heissen?! :gruebel:
|
Re: zweidimensionales Array von Shapes durch button färben
Liste der Anhänge anzeigen (Anzahl: 1)
hallo,
also die Shapes heißen nicht alle gleich. Screenshot: Er zeigt wass passiert, wenn ich einmal geklickt habe auf den Button über der Spalte. Es sollte aber nur der untere gefärbt werden, und falls dieser schon gefärbt ist, sollte der nächst Höhere gefärbt werden.. ich hoffe man konnte es jetzt verstehen, falls nicht, versuche ich es nochmal anders zu erklären. Danke |
Re: zweidimensionales Array von Shapes durch button färben
Hoffentlich denke ich jetzt richtig:
Delphi-Quellcode:
procedure TForm1.mybuttonclick(Sender: TObject); ////
Var y : integer; x: integer; Helfer : TButton; WasWhite: Boolean; begin Helfer := TButton(Sender); x := high(myshapes); y := Helfer.Tag; repeat WasWhite := false; If myshapes[x][y].Brush.Color = clwhite then begin myshapes[x][y].Brush.Color := clyellow; WasWhite := true; end else x := x-1; until WasWhite or (x < 0); end; |
Re: zweidimensionales Array von Shapes durch button färben
Perfekt!
Genau das habe ich gewollt. Vielen Dank dafür. Gruß |
Re: zweidimensionales Array von Shapes durch button färben
Du solltest anstelle unzähliger Shapes und Buttons ein TDrawGrid benützen!
Damit reduziert die Materialschlacht auf sehr übersichtlichen Code. Du brauchst wie gesagt ein TDrawGrid und 3 Bitmaps. Bitmap 1: leeres Feld Bitmap 2: Feld mit Stein von Spieler A Bitmap 3: Feld mit Stein von Spieler B Durch die Verwendung von Bitmaps kannst du deinem 4-Gewinnt natürlich auch eine ganz spezielle Optik geben. Z.B eine 3D-Optik wie hier: ![]() oder vielleicht ein "black Gothic look". PS: ich hoffe nur, dass meine Anregungen nicht ungehört verhallen... Von "Perfekt" bist du noch weit entfernt. |
Re: zweidimensionales Array von Shapes durch button färben
Das es perfekt ist, habe ich auch nicht behauptet. Perfekt sollte lediglich auszudrücken, dass es genau das ist, was ich machen wollte.
Die Anregung mit dem TDrawgrid ist nett gemeint, jedoch würde ich gerne meine Ideen zu ende führen. Wenn ich damit fertig bin, probiere ich es auf deine Art shmia. Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz