AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein stringgridfelder per click färben, hab problem
Thema durchsuchen
Ansicht
Themen-Optionen

stringgridfelder per click färben, hab problem

Offene Frage von "chickenshoot"
Ein Thema von chickenshoot · begonnen am 28. Feb 2010 · letzter Beitrag vom 1. Mär 2010
Antwort Antwort
chickenshoot

Registriert seit: 21. Feb 2010
1 Beiträge
 
#1

stringgridfelder per click färben, hab problem

  Alt 28. Feb 2010, 20:40
Hallo, ich schreib jetzt zum ersten Mal hier im Forum, ich bräuchte dringend eure hilfe!
Ich will mit Delphi 6 ein rundenbasiertes Strategiespiel programmieren, naja es ist eine Gruppenarbeit und habe eher wenig Ahnung von Delphi
hab jetzt die aufgabe bekommen, bei nem click aufm stringgridfeld die felder farbig anzuzeigen, auf die meinetwegen der charakter bewegen kann
hab erst zur probe mit einem schritt probiert, aber wenn ich auf die erste zeile oder spalte clicke, kommt eine fehlermeldung "Im Projekt Projekt1.exe ist eine Exception der Klasse EListError aufgetreten. Meldung: 'Listenindex überschreitet das Maximum (-1)'. Prozeß wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen."

hab ich natürlich nicht verstanden

mit der letzten zeile oder spalte klappt das aber iwie prima

so sieht mein quelltext bis jetzt aus:

Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
const
  SelColor = Clgreen;

begin
  with TStringGrid(Sender), Canvas do
    begin
      if gdFocused in State then
      exit;
      If Integer(Objects[aCol,ARow]) = 1 then
        Brush.Color := SelColor
      else
        Brush.Color := Color;
      FillRect(Rect);
      end;

end;

procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var ACol,ARow,i,j : Integer;
begin
  with TStringGrid(Sender), Canvas do
    begin
    MouseToCell(X,Y,ACol,ARow);
    for i := 0 to StringGrid1.RowCount-1 do
     StringGrid1.Rows[i].Clear();
    for i:=-1 to 1 do
    for j:=-1 to 1 do
    begin
    Objects[ACol+i,ARow] := Pointer(Integer(Objects[ACol+i,ARow]) xor 1);
    Objects[ACol,ARow+j] := Pointer(Integer(Objects[ACol,ARow+j]) xor 1);
    end;
    end;
    end;
den fehler im quelltext hab ich noch nicht gefunden, und ich hab nur paar dinge aus anderen foren kopiert und hab auch nicht alles verstanden, wär also eiq ganz nett wenn jemand von euch mir das kurz zusammenfassen würde, und ein wenig verständlich, ich habs nicht so damit

wäre euch sehr dankbar
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: stringgridfelder per click färben, hab problem

  Alt 1. Mär 2010, 07:21
Hallo,

Zitat:
Listenindex überschreitet das Maximum (-1)'. Prozeß wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen."

hab ich natürlich nicht verstanden
Dann würde ich die Meldung mal in Google eintragen.

Aber OK.

Statt MausDown nimm OnClick.
Da wird die Col und Row des Grids direkt übergeben.
Das MouseToCell(X,Y,ACol,ARow); kannst du dann weglassen.

Ausserdem frage ich michh,
warum du bei einem Klick "tausende" Zellen färbst.
Delphi-Quellcode:
for i:=-1 to 1 do
begin
  for j:=-1 to 1 do
  begin
    Objects[ACol+i,ARow] := Pointer(Integer(Objects[ACol+i,ARow]) xor 1);
    Objects[ACol,ARow+j] := Pointer(Integer(Objects[ACol,ARow+j]) xor 1);
  end;
end;
Zitat:
aber wenn ich auf die erste zeile oder spalte clicke
Die Zelle links oben hat Col=0 und Row=0

Du fängst bei -1 an,
klar geht das schief.
Ein Cells[-1,-1] gibt es nicht.


Heiko
Heiko
  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 16:37 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