【问题标题】:How to move scrollbar of DBgrid to the top (Delphi)如何将 DBgrid 的滚动条移动到顶部(Delphi)
【发布时间】:2013-10-23 17:46:57
【问题描述】:

一旦我通过 SQL 更新语句更改了一些字段数据,我需要看到它反映在 DBGrid 中,我不确定我正在做的正确方法是否正确 -> IBTable.Refresh。无论如何,它暂时有效,但是第一次刷新尝试后DBGrid的垂直滚动条移动到底部,如果我更新然后再次刷新,垂直滚动条变小并移动到DBGrid的中间。我不知道如何通过在 DBGrid 本身中更改它来直接更新某个字段中的值,如果有人向我展示如何操作的示例,我将不胜感激。

IBTable.Refresh 发出后,如何将 DBgrid 的垂直滚动条移动到顶部位置并选择最顶行?

我的代码很简单,因为我还在学习数据库 (Firebird) 和 Delphi 以及使用示例 EMPLOYEE 数据库:

procedure TForm1.Button1Click(Sender: TObject);
begin
  //open IBQuery1, SQL command is in the component itself
  IBQuery1.Open;
  Label1.Caption := 'Tokyo''s budget was $' + TCaption(IBQuery1.FieldValues['BUDGET']);
  //clear all SQL commands as it's TStrings and remembers prev. added lines
  IBUpdateSQL1.ModifySQL.Clear;
  //start building the SQL update statement
  IBUpdateSQL1.ModifySQL.Append('update DEPARTMENT');
  if IBQuery1.FieldValues['BUDGET'] = '30000' then
    IBUpdateSQL1.ModifySQL.Append('set BUDGET = 500000')
  else
    IBUpdateSQL1.ModifySQL.Append('set BUDGET = 30000');
  IBUpdateSQL1.ModifySQL.Append('where LOCATION = ''Tokyo''');
  //execute SQL update
  IBUpdateSQL1.ExecSQL(ukModify);
  //close IBQuery1
  IBQuery1.Close;
  //let's see new field data
  IBTable1.Refresh;
end;

我正在做的是从 select 语句中读取一些字段数据,并将其相应地更改为另一个值,反之亦然。

谢谢

【问题讨论】:

  • 欢迎来到 SO!你也有任何可以分享的 UI 代码吗?这只是按钮点击功能。
  • 打给IBTable1.First怎么样?

标签: delphi delphi-xe4 dbgrid


【解决方案1】:

" 我不知道如何直接通过在 DBGrid 本身中更改某个字段中的值来更新它,如果有人向我展示如何操作的示例,我将不胜感激。"

不用担心。试试这个简单的配置。

在您的表单上放置以下控件。

  1. TIBDatabase(工具面板 - Interbase)
  2. TIBTransaction(工具面板 - Interbase)
  3. TIBQuery(工具面板 - Interbase)
  4. TDataSetProvider(工具面板 - 数据访问)
  5. TClientDataSet(工具面板 - 数据访问)
  6. TDataSource(工具面板 - 数据访问)
  7. TDBGrid(工具面板 - 数据控件)
  8. TButton(工具面板 - 标准)

现在让我们把它们连接起来。使用 Object Inspector 设置一些属性,以便控件一起工作,就像这样。

  1. IBDatabase1:将 DefaultTransaction 设置为 IBTransaction1(使用对象检查器中的下拉列表)
  2. IBTransaction1:将DefaultDatabase 设置为 IBDatabase1
  3. IBQuery1:将Database 设置为 IBDatabase1
  4. IBQuery1:将Transaction 设置为 IBTransaction1
  5. DataSetProvider1:将DataSet 设置为 IBQuery1
  6. ClientDataSet1:将ProviderName 设置为DataSetProvider1
  7. DataSource1:将 DataSet 设置为 ClientDataSet1
  8. DBGrid1:将 DataSource 设置为 DataSource1

现在设置一些特定于您的数据库的其他属性

  1. IBDatabase1:设置DatabaseName、LoginPrompt、Params
  2. IBQuery1:设置SQL

现在激活一些控件。您可以在设计时使用 Object Inspector 执行此操作,也可以编写等效代码(例如 IBDatabase1.Connected := True)并将其放置在按钮的单击事件中。

  1. 连接您的数据库(将 IBDatabase1.Connected 设置为 True)
  2. 激活您的查询(将 IBQuery1.Active 设置为 True)
  3. 激活您的 ClientDataSet(将 ClientDataSet1.Active 设置为 True)

现在(除了小问题)您的 DBGrid 中应该有一个完全可编辑的数据集。只需单击此处并编辑您喜欢的任何内容。如果要将以下代码写入另一个按钮的单击事件,则只需保存更改即可。

ClientDataSet1.Post;
ClientDataSet1.ApplyUpdates(-1);

这不是唯一的方法,还有很大的改进空间,但现在您应该有一个良好的起点,可以朝着您选择的任何方向前进。

【讨论】:

    猜你喜欢
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多