修改ColWidths[i]的值,来指定某列的宽度。
在TEdit的onchange事件中制定StringGrid1.Cells[i,j]:=Edit1.Text;
在TEdit的onchange事件中制定StringGrid1.Cells[i,j]:=Edit1.Text;
解决方案 »
- 动态调用Dll
- 这样的错误如何解决?
- 我遇到一个棘手的问题等待解决
- 求类似windows自带“写字板”的源程序!
- 发现delphi的bug^_^有知道为什么的帮忙解释一下,如果没遇到过的也可以看看免得出现同样问题不知道怎么解决
- ADOQuery 中删除数据为什么不能马上刷新
- 如何使用ADDOBJECT语法
- 我想做三层的应用程序(Delphi+ADO+SQLServer),详细叙述如下,谁能帮我或给我个例子将重谢
- 请问如何做所见即所得的打印设置?
- 哪有Delphi5的Pack下载(Borland公司除外)
- 自动处理错误(如VB中on error resume next),小弟这厢有分了
- <<<<<<<<<<关于socket的一些问题...有经验的请进>>>>>>>>>>>>
你应该是想焦点在哪个Cell上就把Edit和那个Cell连接吧。在TStringGrid的MouseDown事件进行处理,判断当前点击的事哪一个cell,定义一个变量用来记录当前的焦点cell,指定当前Edit连接的位置,然后在Edit的OnChange时间里指连接该Edit的位置。
var
Column,Row:integer;
bChanged:boolean;
procedure TForm1.Edit1Change(Sender: TObject);
begin
StringGrid1.Cells[Column,Row]:=Edit1.Text;
end;procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
begin
if bChanged=false then
Edit1.Text:=StringGrid1.Cells[ACol,ARow];
end;procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
bChanged:=true;
StringGrid1.MouseToCell(X, Y, Column, Row);
Edit1.Text:=StringGrid1.Cells[Column,Row];
bChanged:=false;
end;