Einzelnen Beitrag anzeigen

HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

Checkbox in StringGrid -> Klicken klappt nicht

  Alt 7. Feb 2013, 12:21
Delphi-Version: 2006
Hallo zusammen,

ich habe einem StringGrid eine Checkbox verpasst. Das habe ich so getan:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin

 CHB_OK.Parent := StringGrid1;
 CHB_OK.Visible := FALSE;

end;

procedure TForm1.StringGrid1SelectCell(
  Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
var
 R: TRect;
 org: TPoint;
begin

 if (ACol = 5) AND (ARow >= StringGrid1.FixedRows) then
 begin

  StringGrid1.Perform(WM_CANCELMODE, 0, 0);
  R := StringGrid1.CellRect(ACol, ARow);
  org := self.ScreenToClient(self.ClientToScreen(R.TopLeft));

  With CHB_OK do
  begin

   SetBounds(org.X+17, org.Y+5, 13, 13);
   Visible := True;
   SetFocus;

  end;

 end;

end;

procedure TForm1.CHB_OKExit(Sender: TObject);
begin

 With Sender as TCheckBox do
 begin

  Visible := FALSE;

  with StringGrid1 do
  begin

   If Checked = TRUE then
    Cells[col, row] := 'n.OK'
   else
    Cells[col, row] := '';

  end;
  
 end;

end;

procedure TForm1.CMDialogKey(var msg: TCMDialogKey);
begin

 if ActiveControl = CHB_OK then begin

  if msg.CharCode = VK_TAB then begin
   // setzt den Fokus zurück auf das StringGrid
   StringGrid1.SetFocus;
   StringGrid1.Perform(WM_KEYDOWN, msg.CharCode, msg.KeyData);
   msg.Result := 1;
   exit;

  end;

 end;

end;
Die Checkbox erscheint auch an der entsprechenden Stelle, nur wenn ich Sie anklicke bleibt der Haken in der Chekcbox nicht bestehen. Er flackert nur kurz auf. Was mache ich falsch ?

Gruss

Holger
  Mit Zitat antworten Zitat