線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2912
推到 Plurk!
推到 Facebook!

如何单击dbgrid某行触发事件?

尚未結案
ffprince
初階會員


發表:66
回覆:62
積分:25
註冊:2003-08-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-15 20:34:19 IP:218.85.xxx.xxx 未訂閱
小弟做了个查询程式,其结果显示在dbgrid上,并将dbgrid设成选中整行。现在想在单击某行时,将其中某个数据显示在edit框里,修改后点击按键,再将此数替换原来数据。不知相关语句怎么写?
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-15 21:03:41 IP:211.76.xxx.xxx 未訂閱
您好: procedure TForm1.DBGrid1CellClick(Column: TColumn); begin Edit1.Text:= DBgrid1.Fields[0].Text; //Fields[0]代表第一ㄍ欄位 end; procedure TForm1.Button1Click(Sender: TObject); begin ADOQuery1.Edit; DBgrid1.Fields[0].Text:= Edit1.Text; end; ~~應無所住而生其心~~
ffprince
初階會員


發表:66
回覆:62
積分:25
註冊:2003-08-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-15 22:15:39 IP:218.85.xxx.xxx 未訂閱
引言: 您好: procedure TForm1.DBGrid1CellClick(Column: TColumn); begin Edit1.Text:= DBgrid1.Fields[0].Text; //Fields[0]代表第一ㄍ欄位 end; procedure TForm1.Button1Click(Sender: TObject); begin ADOQuery1.Edit; DBgrid1.Fields[0].Text:= Edit1.Text; end; ~~應無所住而生其心~~
多谢指教!我试过了,有个小问题,当查询出来的结果只有一条时,就改不了了?(直接在DBgrid上改数据也是这种情况)怎么解决啊?
ffprince
初階會員


發表:66
回覆:62
積分:25
註冊:2003-08-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-15 23:10:56 IP:218.85.xxx.xxx 未訂閱
请问update怎么用?
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-16 08:15:07 IP:61.221.xxx.xxx 未訂閱
您好: procedure TForm1.Button1Click(Sender: TObject); begin ADOQuery1.Edit; DBgrid1.Fields[0].Text:= Edit1.Text; end; 改成 procedure TForm1.Button1Click(Sender: TObject); begin ADOQuery1.Edit; DBgrid1.Fields[0].Text:= Edit1.Text; ADOQuery1.post; end; ~~應無所住而生其心~~
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-16 11:26:45 IP:218.15.xxx.xxx 未訂閱
ffprince您好: 对于问题1:您可以试试以下方法 procedure TForm.Query1AfterScroll(DataSet: TDataSet); begin with Query1 do begin Edit1.Text:=FieldByName('field1').AsString; Edit2.Text:=FieldByName('field2').AsString; Edit3.Text:=FieldByName('field3').AsString; end; end; 在Edit框做修改然后回传给资料库,可以这样试试: procedure TForm1.Button1Click(Sender: TObject); begin with Query1 do begin Edit; FieldByName('field1').AsString:=Trim(Edit1.Text); FieldByName('field2').AsString:=Trim(Edit2.Text); FieldByName('field3').AsString:=Trim(Edit3.Text); Post; end; end; update的用法: SET column_ref = update_atom [, column_ref = update_atom...] [WHERE predicates] UPDATE SalesInfo SET TaxRate = 0.0825 将表SalesInfo中TaxRate字段值用0.0825替代。 详细可查相关帮助。 ——行径窄处,留一步与人行——
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-16 12:31:55 IP:210.65.xxx.xxx 未訂閱
Hi:    1.為何不乾脆使用資料感知元件 DBEdit 來進行編輯?如此即不用去管 Edit 上的資料內容 2.用一個 Panel 來承載所有的 DBEdit,只要控制 Panel 的 Enabled 屬性,即可控制 DBEdit 是否可以 Edit 3.
procedure TMainForm.Button1Click(Sender: TObject);
begin
    IF (DBGrid1.DataSource.DataSet.State IN [dsEdit,dsInsert]) THEN
        DBGrid1.DataSource.DataSet.Post;
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
系統時間:2024-04-27 12:41:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!