Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Stringgrid Felder bei Formcreate färben (https://www.delphipraxis.net/115908-stringgrid-felder-bei-formcreate-faerben.html)

Lucifer 19. Jun 2008 20:11


Stringgrid Felder bei Formcreate färben
 
Hallo

Also ich hatte vor ein kleines Spiel zu schreiben.
In einer Multidimensionellen Array ist die Map eingetragen
Auf 0 kann man gehen auf -1 nicht.

Nun wollte ich dass wenn das Spiel startet (also form.create) dass alle Felder mit 0 als Inhalt Grün gefärbt werden und alle mit -1 Rot.

Ich hab schon 2 stunden dran gesessen und hab auch schon genug gegoogelt nur find ich nicht wirklich eine passende Lösung.

mkinzler 19. Jun 2008 20:20

Re: Stringgrid Felder bei Formcreate färben
 
Nicht beim Erzeugen der Form, sondern beim Zeichnen (OwnerDraw; onDrawCell)

Lucifer 19. Jun 2008 20:24

Re: Stringgrid Felder bei Formcreate färben
 
ok das hab ich zwar auch versucht

aber irgendwie läuft bei mir etwas schief

Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var i,j:integer;
begin


  for i:=0 to 9 do
  begin
    for j:=0 to 9 do
    begin
      form1.stringgrid1.Cells[i,j]:=IntToStr(map[i,j]);
      if(map[i,j]=-1)then
      begin
        stringgrid1.Canvas.Brush.Color:=clred;
        stringgrid1.Canvas.FillRect(Rect);
      end
      else
      begin
        stringgrid1.Canvas.Brush.Color:=clgreen;
        stringgrid1.Canvas.FillRect(Rect);
      end;
    end;
  end;




end;
wenn ich das somache kommt ein komisches resultat raus.
Ich hab echt keine Ahnung wie ich es anstellen soll.

toms 19. Jun 2008 20:28

Re: Stringgrid Felder bei Formcreate färben
 
Du brauchst keine Schleife.
Das OnDrawCell Ereignis wird schon für jede Zelle aufgerufen, welche neu gezeichnet werden soll.

Lucifer 19. Jun 2008 20:31

Re: Stringgrid Felder bei Formcreate färben
 
oh wie dumm -.-

Also es läuft jetzt

Nur es sieht bisschen unschön aus.
Durch das ganze geOnDrawed sieht man überall linien.

Kann man das irgendwie umgehen ausschalten oder sonst was?

mkinzler 19. Jun 2008 20:32

Re: Stringgrid Felder bei Formcreate färben
 
Was für Linien?

Lucifer 19. Jun 2008 20:34

Re: Stringgrid Felder bei Formcreate färben
 
also sieht so aus wenn eine szene dauernd neugezeichnet werden würde
man kann es nicht screenshoten.

Sieht aber hässlich aus.


Und noch eine kleine Nebenfrage:
Man sieht ja auf dem Stringgrid auf welcher Zelle man sich grade befindet(Nicht Focus sonder gestrischelte Kiste).
Kann man das auch irgendwie wegschaffen?

mkinzler 19. Jun 2008 20:40

Re: Stringgrid Felder bei Formcreate färben
 
Zitat:

Man sieht ja auf dem Stringgrid auf welcher Zelle man sich grade befindet(Nicht Focus sonder gestrischelte Kiste).
Im Parameter State
Ist DefaultDrawing aktiv?

Lucifer 19. Jun 2008 20:43

Re: Stringgrid Felder bei Formcreate färben
 
also es kommen diese Linien weil ich in die Stringgrid die -1 0 und 2(für die position des Spielers) hineinschreibe.
Das scheint Die Stringgrid nicht zu mögen.

Wie genau stelle ich das mit dem State ein?

mkinzler 19. Jun 2008 20:46

Re: Stringgrid Felder bei Formcreate färben
 
Das ist nichts zum Einstellen, sondern sagt dir ob, die aktuell gezeichnete Zelle markiert ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:39 Uhr.
Seite 1 von 2  1 2      

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