Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Code erläuterung zum einfärben von Zellen (https://www.delphipraxis.net/155219-code-erlaeuterung-zum-einfaerben-von-zellen.html)

nlz 13. Okt 2010 12:38

Delphi-Version: 7

Code erläuterung zum einfärben von Zellen
 
Hallo liebe Gemeinde,
Hoffe allen geht es gut !.
Also zu meinen Problem. Ich habe auf meine Form1 ein Array erstellt. Dann werden über zufall verschieden Kästchen aktuell mit einen X gekennzeichnet, danach soll der Benutzer alle markierten Zellen ebenfalls anklicken, ist so nen art gedächnissspiel.. :-P

Nun meine Frage wie kann statt ein X die Zelle einfärben. Habe auch schon viel im Forum dazu gefunden, doch kann mir einer evetuell den sysntax erklären.
Ich möchte das wenn ich auf die Zelle Klicke diese dann z.B. rot wird.
Muss ich dazu irgendwelche variablen deklarieren ?

Wäre super so in dieser art:
Code:
var
i:=integer; // variable i ist gleich integer
begin
i:=strtoint(edit1.text); // i lese aus edit 1 den text heraus, strtoin=string zu integer
end;
Habe auch shcon einen Code gefunden, könnte mir den jemand vlt. mal genau erklären, weil nur doof einfügen will ich net, möchte ganz gerne verstehenm was ich damit mach:
Code:
procedure TForm1.spielfeldDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if Odd(ACol) and not Odd(ARow) then
  begin
    spielfeld.Canvas.Brush.Color := clBlack;
  end;
  spielfeld.Canvas.FillRect(Rect);
end;
Vielen Dank schon mal für eure Hilfe....

DeddyH 13. Okt 2010 12:41

AW: Code erläuterung zum einfärben von Zellen
 
Und was genau verstehst Du nicht?

nlz 13. Okt 2010 12:44

AW: Code erläuterung zum einfärben von Zellen
 
WOW, danke für die schnelle Antwort

begin
if Odd(ACol) and not Odd(ARow) then
begin
spielfeld.Canvas.Brush.Color := clBlack;
end;
spielfeld.Canvas.FillRect(Rect);
end;

was ist Canvas ?
Was macht brush color genau ?
Warum muss ich danach noch FillRect(Rect) ausfürhren ?
was ist Rect ?, eine Constante, Varibale ?

geht auch sowas in der art:
array.cell.Canvas.Brush[0,2]:=red;

Grüßle nlz :-D

patti 13. Okt 2010 12:47

AW: Code erläuterung zum einfärben von Zellen
 
Die Canvas ist die Zeichenfläche deiner Komponente. Auf diese Zeichenfläche kannst du Dinge zeichnen, z.B. Rechtecke, Linien, Texte oder Grafiken. Mit Canvas.Brush.Color setzt du die Farbe des Pinsels. FillRect füllt dann das Rechteck, das als Parameter übergeben wird, in der aktuell eingestellten Farbe. Rect ist ein Parameter, der dir beim Ereignis OnDrawCell übergeben wird.

Hoffe, ich konnte dir schonmal einbisschen weiter helfen.

Bummi 13. Okt 2010 12:49

AW: Code erläuterung zum einfärben von Zellen
 
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  // ist die Länge des Textes in Zelle(Acol,Arow) größer 0            dann rot sonst weiß
  if length(StringGrid1.Cells[Acol,Arow])>0 then Stringgrid1.Canvas.Brush.Color := clRed else Stringgrid1.Canvas.Brush.Color := clWhite;
  // füllen
  Stringgrid1.Canvas.FillRect(rect);
end;

procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  var
  Acol,Arow:Integer;

begin
   //Mauskoordinaten in Zellkoordinaten umrechnen
   StringGrid1.MouseToCell(x,y,Acol,Arow);
   // ist die Länge des Textes in Zelle(Acol,Arow) größer 0  dann Leertext sonst 'X'
   if length(StringGrid1.Cells[Acol,Arow])>0 then StringGrid1.Cells[Acol,Arow] := '' else StringGrid1.Cells[Acol,Arow]:='X';

end;

DeddyH 13. Okt 2010 12:52

AW: Code erläuterung zum einfärben von Zellen
 
Ein paar Links zur DP-Referenz:
TCanvas
TBrush
DrawCell

Weitere Fragen bitte erst nach dem Lesen ;)

[edit] Zu spät :( [/edit]

nlz 13. Okt 2010 12:52

AW: Code erläuterung zum einfärben von Zellen
 
Ups....

dann lese ich erst mal ... war wieder zu schnell beim fragen :-) ....

danke für die Hilfen

Gruß nlz


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:11 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