如何将DBgrid的滚动条移动到顶部(Delphi)

时间:2013-10-23 17:46:57

标签: delphi delphi-xe4 dbgrid

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

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

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

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语句中读取一些字段数据,并相应地将其更改为另一个值,反之亦然。

感谢

1 个答案:

答案 0 :(得分:0)

“我不知道如何通过在DBGrid本身中更改它来直接更新某个字段中的值,如果有人向我展示如何使用它,我会很感激。” < / p>

不用担心。请改为尝试这个简单的配置。

将以下控件放在表单上。

  1. TIBDatabase(Tool Palette - Interbase)
  2. TIBTransaction(Tool Palette - Interbase)
  3. TIBQuery(Tool Palette - Interbase)
  4. TDataSetProvider(工具调色板 - 数据访问)
  5. TClientDataSet(工具调色板 - 数据访问)
  6. TDataSource(工具调色板 - 数据访问)
  7. TDBGrid(工具调色板 - 数据控件)
  8. TButton(工具调色板 - 标准版)
  9. 现在让我们联系起来吧。使用Object Inspector设置一些属性,以便控件一起工作,如下所示。

    1. IBDatabase1:将DefaultTransaction设置为IBTransaction1(使用Object Inspector中的下拉列表)
    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
    9. 现在设置一些特定于您的数据库的其他属性

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

        1. 连接您的数据库(将IBDatabase1.Connected设置为True)
        2. 激活您的查询(将IBQuery1.Active设置为True)
        3. 激活您的ClientDataSet(将ClientDataSet1.Active设置为True)
        4. 现在(除了小的打嗝)你应该在DBGrid中有一个完全可编辑的数据集。只需点击那里并编辑你喜欢的任何内容。如果要将以下代码写入另一个按钮的单击事件,则需要保存更改。

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

          这不是唯一可以做到这一点的方法,而且还有很大的改进空间,但现在你应该有一个很好的起点,无论你选择哪个方向都可以从中取得进展。