Einzelnen Beitrag anzeigen

Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

AW: Checkbox in StringGrid -> Klicken klappt nicht

  Alt 7. Feb 2013, 18:28
Das da ist mir zu viel / zu kompliziert. Das geht doch auch mit "simulierter" Checkbox. Hier wird die Checkbox optisch wie gewünscht angezeigt. Das Klicken darauf bezieht sich dann zwar real auf die Zelle, aber was solls.

Delphi-Quellcode:
procedure Tfrm.sgDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
const IsChecked : array[Boolean] of Integer =
      (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
var DrawState: Integer;
begin
  inherited;
  if ACol in CheckBoxCols then begin
    if StrToInt (sg.Cells [ACol,ARow]) in [0,1,2] then begin
      InflateRect(Rect,-1,-1);
      DrawState := ISChecked[StrToInt (sg.Cells [ACol,ARow]) = 1];
// ^ die 0/1, die aus dem DB-Original in sg steht, beeinflusst, ob die
// CheckBox gecheckt ist ! D.h. sie wird im OnDrawCell je nach Wert gezeichnet !
      sg.Canvas.FillRect(Rect);// hinter Cells lieg. 0/1/2 = nicht anz.
      DrawFrameControl(sg.Canvas.Handle,Rect,DFC_BUTTON,DrawState);
    end
  end
end;

procedure Tfrm.sgClick(Sender: TObject);
begin
  inherited;
  if sg.Col in CheckBoxCols then begin
    if sg.Cells [sg.Col,sg.Row] = '0then
      sg.Cells [sg.Col,sg.Row] := '1'
    else if sg.Cells [sg.Col,sg.Row] = '1then
      sg.Cells [sg.Col,sg.Row] := '0';
  end;
end;
Probiers mal aus.
Gruß
Hansa
  Mit Zitat antworten Zitat