AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi zweidimensionales Array von Shapes durch button färben
Thema durchsuchen
Ansicht
Themen-Optionen

zweidimensionales Array von Shapes durch button färben

Ein Thema von Klausi0815 · begonnen am 26. Mär 2009 · letzter Beitrag vom 26. Mär 2009
Antwort Antwort
Klausi0815

Registriert seit: 26. Mär 2009
4 Beiträge
 
#1

zweidimensionales Array von Shapes durch button färben

  Alt 26. Mär 2009, 16:13
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;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: zweidimensionales Array von Shapes durch button färben

  Alt 26. Mär 2009, 17:13
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?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von cherry
cherry

Registriert seit: 14. Nov 2005
561 Beiträge
 
RAD-Studio 2009 Ent
 
#3

Re: zweidimensionales Array von Shapes durch button färben

  Alt 26. Mär 2009, 17:28
Mal ins Blaue geraten: Kann es sein das es daran liegt, dass deine Shapes alle gleich heissen?!
Ist das nur mein Gefühl, oder ist die ganze Welt verrückt geworden!?
  Mit Zitat antworten Zitat
Klausi0815

Registriert seit: 26. Mär 2009
4 Beiträge
 
#4

Re: zweidimensionales Array von Shapes durch button färben

  Alt 26. Mär 2009, 17:35
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
Miniaturansicht angehängter Grafiken
test1_730.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: zweidimensionales Array von Shapes durch button färben

  Alt 26. Mär 2009, 17:48
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Klausi0815

Registriert seit: 26. Mär 2009
4 Beiträge
 
#6

Re: zweidimensionales Array von Shapes durch button färben

  Alt 26. Mär 2009, 17:52
Perfekt!
Genau das habe ich gewollt.
Vielen Dank dafür.
Gruß
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: zweidimensionales Array von Shapes durch button färben

  Alt 26. Mär 2009, 18:10
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: http://karrierebibel.de/wordpress/wp...7/4gewinnt.PNG
oder vielleicht ein "black Gothic look".

PS: ich hoffe nur, dass meine Anregungen nicht ungehört verhallen...
Von "Perfekt" bist du noch weit entfernt.
Andreas
  Mit Zitat antworten Zitat
Klausi0815

Registriert seit: 26. Mär 2009
4 Beiträge
 
#8

Re: zweidimensionales Array von Shapes durch button färben

  Alt 26. Mär 2009, 18:22
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
  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 02:02 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