Einzelnen Beitrag anzeigen

VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#1

Check-Box in ein StringGrid

  Alt 7. Jan 2003, 13:50
Hallo alle zusammen.

Wie Ihr schon aus der Überschrift entnehmen könnt möchte ich gern eine Spalte mit Check-Boxen (heißt das wirklich so, sieht komisch aus ;o) anlegen. Dazu habe ich mir gedacht, dass ich mir je eine Liste mit boolschen Variablen anlegen kann deren Anzahl der Felder in dem Grid entspricht.
Dann kann ich in der OnDraw-Methode des Grids selbst einen Haken reinzeichnen, oder auch nicht.

Gesagt, getan...
Hat auch alles schön funktioniert bis die Liste dann größer wurde und man vertikal scrollen kann. Sowie ich dann mindestens ein Eintrag heruntergescrollt habe kam es zu recht komischen Fehlern die ich noch nicht recht eingrenzen konnte.
Wie Zum Beispiel: ein darunterliegendes Feld wird markiert, ein Feld welches vorher angeklickt wurde wird markiert, es passier nichts.

Hier mal der Quellcode:

Delphi-Quellcode:
procedure TBewegungenFormular.BewegungStringGridMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  ARect : TRect;
begin
  if FList.Count > 0 then
  begin

    if (BewegungStringGrid.Col = 0) and
       (BewegungStringGrid.Row > 0) then
    begin
      TItem(FList.Items[Pred(BewegungStringGrid.Row)]).Checked :=not TItem(FList.Items[Pre(BewegungStringGrid.Row)]).Checked;

      ARect.Left := 0;
      ARect.Top := BewegungStringGrid.Row*BewegungStringGrid.DefaultRowHeight;
      ARect.Right := BewegungStringGrid.ColWidths[0];
      ARect.Bottom := ARect.Top + BewegungStringGrid.DefaultRowHeight;

      BewegungStringGridDrawCell(Sender, BewegungStringGrid.Col, BewegungStringGrid.Row, ARect, [gdSelected]);
      Application.ProcessMessages;
    end;

  end;
end;
Sorry für die komische Formatierung, ich bekomms nicht besser hin.

Ciao und schon mal schönen Dank.

[edit=Sakura]CODE in DELPHI-Tags umbenannt; Häckchen bei BBCode in diesem Beitrag deaktivieren entfernt[/edit]
  Mit Zitat antworten Zitat