Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

AW: DrawCell mit Button

  Alt 1. Mai 2012, 22:14
So funktioniert das nicht.
Wenn sich in einem Drawgrid etwas ändern soll, dann muss man Drawgrid1.Invalidate; aufrufen damit das Grid neu gezeichnet wird.
Natürlich muss man vorher etwas am Spielfeld ändern, damit man was sieht.

Delphi-Quellcode:
var
  spielfeld : array[1..3, 1..3] of char; // Tic-Tac-Toe

procedure TForm1.Button1Click(Sender: TObject);
var
   x ,y : Integer;
begin
   // irgendwelche Figuren setzen
   x := 1;
   y := 2;
   if spielfeld[x,y] = 'Xthen
      spielfeld[x,y] := '*'
   else
      spielfeld[x,y] := 'X';

   // Neuzeichnen erzwingen
   DrawGrid1.Invalidate;
end;

// dieser Eventhandler zeichnet auf dem Drawgrid
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  figur : Char;
  canvas : TCanvas;
begin
  canvas := DrawGrid1.Canvas; // Zwischenvariable spart Schreibarbeit

  // Hintergrund zeichnen (kann entfallen, falls Spielfiguren nicht transparent sind)
  canvas.brush.Color := clGrey;
  canvas.FillRect(rect);

  // Spielfigur zeichen
  figur := spielfeld[ACol-1, ARow-1];
  case figur of
    ' ': ImageList1.Draw(canvas, Rect.Left, Rect.Top, 0);
    '*': ImageList1.Draw(canvas, Rect.Left, Rect.Top, 1);
    'X': ImageList1.Draw(canvas, Rect.Left, Rect.Top, 2);
  end;
end;
  Mit Zitat antworten Zitat