DBGrid相关问题 ( 积分: 100 )

  • 主题发起人 主题发起人 菜鸟菜鸟菜鸟
  • 开始时间 开始时间

菜鸟菜鸟菜鸟

Unregistered / Unconfirmed
GUEST, unregistred user!
请教怎样在DBGrid指定的区域输入内容
例如:我要在第一行第三列输入一段内容。
 
请教怎样在DBGrid指定的区域输入内容
例如:我要在第一行第三列输入一段内容。
 
把相關的控件連好..
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids;

type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Query1: TQuery;
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
with query1 do
begin
close;
sql.Clear;
sql.Add('select * from name');
open;
end;
query1.Edit;
query1.FieldByName('第一行第三列字短名').AsString :=edit1.Text;
query1.Post;
end;
end.
 
通过控制与其关联的数据集控件来进行,如楼上所说的Query1。
设定其记录号为1,即可指向第一行,fields[2]则为第3列(从0开始)。如以下代码:
Query1.RecNo := 1;
Query1.Fields[2].Value := 'abcde';
 
这个资料你看看吧
dbgrid是从TCustomGrid继承下来的,
它有col与row属性,
只不过是protected的,不能直接访问,
要处理一下,可以这样:
TDrawGrid(dbgrid1).row:=row;
TDrawGrid(dbgrid1).col:=col;
dbgrid1.setfocus;
就可以看到效果了。
1 这个方法是绝对有问题的,它会引起DBGrid内部的混乱,因为DBGrid无法定位当前纪录,如果DBGrid只读也就罢了(只读还是会出向一些问题,比如原本只能单选的纪录现在可以出现多选等等,你可以自己去试试),如果DBGrid可编辑那问题就可大了,因为当前纪录的关系,你更改的数据字段很可能不是你想象中的
2 我常用的解决办法是将上程序改为(随便设置col是安全的,没有一点问题)
Query1.first;
TDrawGrid(dbgrid1).col:=1;
dbgrid1.setfocus;
这就让焦点移到第一行第一列当中
更多的资料可以看这个贴子
http://www.delphibbs.com/keylife/iblog_show.asp?xid=4091
 
楼上这位仁兄,用
TDrawGrid(dbgrid1).row:=row;
TDrawGrid(dbgrid1).col:=col;
可以定位,但是怎样往里面写值呢。
 
写值要通过与其关联的数据集如query、table、dataset等来写啊,你看一下我前面给出的代码
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部