Thema: DBCheckBox

Einzelnen Beitrag anzeigen

Rippo

Registriert seit: 10. Feb 2015
75 Beiträge
 
Delphi 10 Seattle Professional
 
#1

DBCheckBox

  Alt 27. Aug 2015, 09:43
Hallo

ich habe in meinem stringgrid checkboxen eingefügt, mein problem besteht darin das wenn ich eine checkbox checken möchte und diese auch checke verschwindet aus der anderen checkbox der hacken.

so habe ich die checkbox ins grid gelegt.

Delphi-Quellcode:
procedure TForm1.DBGridLoginColExit(Sender: TObject);
begin
  if DBGridLogin.SelectedField.FieldName = DBCheckBox1.DataField then
  DBCheckBox1.Visible := True;
end;
//*********************************************************************************/

procedure TForm1.DBGridLoginDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);

const IsChecked : array[Boolean] of Integer =
      (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
var
  DrawState: Integer;
  DrawRect: TRect;
begin
  if (gdFocused in State) then
  begin
    if (Column.Field.FieldName = DBCheckBox1.DataField) then
    begin
     DBCheckBox1.Left := Rect.Left + DBGridLogin.Left + 2;
     DBCheckBox1.Top := Rect.Top + DBGridLogin.top + 2;
     DBCheckBox1.Width := Rect.Right - Rect.Left;
     DBCheckBox1.Height := Rect.Bottom - Rect.Top;

     DBCheckBox1.Visible := True;
    end
  end
  else
  begin
    if (Column.Field.FieldName = DBCheckBox1.DataField) then
    begin
      DrawRect:=Rect;
      InflateRect(DrawRect,-1,-1);

      DrawState := ISChecked[Column.Field.AsBoolean];

      DBGridLogin.Canvas.FillRect(Rect);
      DrawFrameControl(DBGridLogin.Canvas.Handle, DrawRect,
                       DFC_BUTTON, DrawState);
    end;
  end;
end;
//*********************************************************************************/

procedure TForm1.DBGridLoginKeyPress(Sender: TObject; var Key: Char);
begin
  if (key = Chr(9)) then Exit;
  if (DBGridLogin.SelectedField.FieldName = DBCheckBox1.DataField) then
  Begin
    DBCheckBox1.SetFocus;
    SendMessage(DBCheckBox1.Handle, WM_Char, word(key), 0);
  End;
end;
//*********************************************************************************/

procedure TForm1.FormCreate(Sender: TObject);
begin
DBCheckBox1.DataSource := DS_Login;
DBCheckBox1.DataField := 'NAME';
DBCheckBox1.Visible := False;
DBCheckBox1.Color := DBGridLogin.Color;
DBCheckBox1.Caption := '';

so meine frage : wie schaffe ich es alle checkboxen anzuklicken ohne das bei einer anderen der hacken wegfällt?
  Mit Zitat antworten Zitat