【问题标题】:DBGrid get selected cellDBGrid 获取选定的单元格
【发布时间】:2017-09-13 22:44:21
【问题描述】:

我需要在 Delphi 中获取一个 DBGrid 的选定单元格的值。

我不知道该怎么做。我试过 dbGrid 的 OnMouseMove

pt : TGridCoord;
...
pt:=dbGrid.MouseCoord(x, y);

[已编辑] 我可以使用 OnCellClick 来获取具有“Column.Field.AsString”的单元格的值,但是当我单击该行的任何列时,我想从第一列获取值。

【问题讨论】:

    标签: delphi dbgrid


    【解决方案1】:

    找到了。

    dbGrid.Fields[0].AsString获取选中行第一列的值。

    【讨论】:

    • 我找了大约一个小时,没找到。谢谢!
    【解决方案2】:
    procedure TForm1.DBGrid_DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh;  State: TGridDrawState);
    const defaultCheckBoxFieldNumber = 1;
    begin
      if DBGrid.SelectedField.FieldNo = defaultCheckBoxFieldNumber then
        ....;
      else
        ...;
    end;
    

    DBGrid.SelectedField.FieldNoTDBGrid 中的事件DrawColumnCell 上获取选定字段。

    【讨论】:

      【解决方案3】:

      我知道这已经晚了,不确定这是否是标题的意思。 但是如果它意味着获取选定的单元格值,那么试试这个:

      procedure Form1.dbGrid1CellClick(Column: TColumn);
      begin
        ShowMessage(table1.Fields[Column.Index].AsString);
      end;
      

      确保
      dbGrid1.Options.dbRowSelect := False;

      【讨论】:

        【解决方案4】:

        我认为最简单的方法是将 hidden DBText 连接到您的数据集,然后将 DBText 设置为显示您需要的字段,这样 DBText 将始终包含活动记录所需的值

        【讨论】:

          【解决方案5】:

          DBGrid 没有焦点,因此您无法确定选择了哪一行。而是查看链接的DataSetDataSet 有一个活动行。

          【讨论】:

            【解决方案6】:

            试试这个来获取 dbgrid 中选定单元格的值:

            procedure Form1.dbGrid1CellClick(Column: TColumn); begin ShowMessage(table1.Fields[DBGrid1.SelectedIndex].AsString); end;

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-03-04
              • 1970-01-01
              • 2018-03-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多