Einzelnen Beitrag anzeigen

chickenshoot

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

stringgridfelder per click färben, hab problem

  Alt 28. Feb 2010, 19: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