• Delphi DbgridEh实现鼠标拖动选中列,并使复选框选中


    1.先设置表格列的属性

    procedure TForm_TaskToDW.InitGrid;
    var
      MyCol: TColumnEh;
    begin
      with DBGridEh_Task do
      begin
        Columns.Clear;
        MyCol := Columns.Add;
        MyCol.FieldName := 'Select';
        MyCol.Title.Caption := '选择';
        MyCol.Alignment := taCenter;
        MyCol.Width := 50;
        MyCol.ReadOnly := false;

        MyCol := Columns.Add;
        MyCol.FieldName := 'TASK_NAME';
        MyCol.Title.Caption := '任务名称';
        MyCol.Width := 300;
        //MyCol.Alignment := taCenter;
        MyCol.ReadOnly := True;
      end;
    end;

    2.创建CDS

    procedure TForm_TaskToDW.CreateCDSFlds;
    begin
      with CDS_Task do
      begin
        FieldDefs.Clear;
        FieldDefs.Add('Select', ftBoolean);
        FieldDefs.Add('TASK_ID', ftString, 36);
        FieldDefs.Add('TASK_NAME', ftString, 120);
        FieldDefs.Add('IS_GEN', ftString, 1);
        CreateDataSet;
      end;
    end;

    3.通过下面这个方法实现拖动选中复选框

    procedure TForm_TaskToDW.SetSelRowState(State: Boolean = True);
    var
      I: Integer;
      BookMark: TBookmarkListEh;
    begin
      //BookMark := DBGridEh_Task.SelectedRows;  //TBookmarkListEh

      for I := 0 to DBGridEh_Task.SelectedRows.Count -1 do
      begin
        //if DBGridEh_Task.SelectedRows.CurrentRowSelected then //行被选中
        CDS_Task.GotoBookmark(Pointer(DBGridEh_Task.SelectedRows.Items[i]));
        begin
          CDS_Task.Edit;
          CDS_Task.FieldByName('Select').AsBoolean := State;
          CDS_Task.Post;
        end;
      end;
    end;

  • 相关阅读:
    [BZOJ4876][ZJOI2017]线段树
    [FJOI2016]建筑师(斯特林数)
    WC2018伪题解
    [BZOJ3514]CodeChef MARCH14 GERALD07加强版(LCT+主席树)
    [BZOJ2594][WC2006]水管局长加强版(LCT+Kruskal)
    [洛谷3796]【模板】AC自动机(加强版)
    [洛谷3808]【模板】AC自动机(简单版)
    [BZOJ3261]最大异或和
    [BZOJ3439]Kpm的MC密码
    [POI2006]Periods of Words
  • 原文地址:https://www.cnblogs.com/jijm123/p/10803041.html
Copyright © 2020-2023  润新知