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

dbgrid中DBGrid1CellClick问题.

尚未結案
xxxxzxx
一般會員


發表:21
回覆:49
積分:24
註冊:2004-11-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-24 00:58:37 IP:220.163.xxx.xxx 未訂閱
在dbgrid中显示一张表的内容,用DBGrid1CellClick选中一行在另一个窗口中 显示出所选这行的所有内容,假设用label显示字段名,用edit显示该字段内容.(不同的表字段的个数也不同),请问各位大大怎么做?
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-24 02:14:22 IP:61.31.xxx.xxx 未訂閱
這應該是一個很淺顯的問題。
在DBGrid 中 OnCellClick 事件。
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  { 1. DataSet 的Cursor會移至這行記錄 }
  { 2. 可得知所點擊方格欄位名稱,透過 Column.Field.FieldName }
  {    用 Column.Field.AsString 就是 欄位內容 } 
end;
xxxxzxx
一般會員


發表:21
回覆:49
積分:24
註冊:2004-11-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-24 02:52:13 IP:220.163.xxx.xxx 未訂閱
问题没有解决,我想知道怎么动态取得我点击该行的字段名及其字段内容,在新的form中动态显示. 请各位大大给点代码,我现在的 代码如下: procedure TForm1.DBGrid1CellClick(Column: TColumn); begin form2.Show; form2.label1.Caption :=dbgrid1.Columns.Items[2].FieldName ; form2.Edit1.Text := dbgrid1.Columns.Items[2].Field.AsString; end; end. 發表人 - xxxxzxx 於 2005/01/24 13:18:14
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-24 09:10:31 IP:220.135.xxx.xxx 未訂閱
Hi xxxxzxx 你好: 兩個方法 1.將Form2的TLabel和TEdit改成資料感知元件TDBText, TDBEdit, 它們的DataSoruce設成Form1的DataSource1    2.在Form1 DBGrid1的OnCellClick 或OnClick下寫
if Assigned(Form2) then begin
   Form2.Label1.Caption := 你的資料;
   Form2.Edit1.Text := 你的資料;
end;
我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-24 11:05:02 IP:61.31.xxx.xxx 未訂閱
不知您到底有沒有注意! 我先前在寫些什麼?? FOnCellClick: TDBGridClickEvent; 事件原形如下: TDBGridClickEvent = procedure (Column: TColumn) of object; 而此 Column 非 dbgrid1.Columns 為OnCellClick 中所代入(Column: TColumn) 應此應為 procedure TForm1.DBGrid1CellClick(Column: TColumn); begin form2.Show; form2.label1.Caption :=Column.FieldName ; form2.Edit1.Text := Column.Field.AsString; end;
xxxxzxx
一般會員


發表:21
回覆:49
積分:24
註冊:2004-11-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-24 13:02:52 IP:220.163.xxx.xxx 未訂閱
谢谢斑竹wameng及miles. 现在的问题是假设表1中有25个字段,程序在新的form上就动态的用25个label显示其字段名,用25个edit显示出其对应的字段内容;现在表2中有30个字段,怎么让程序在新的form中动态的建立30个label&edit显示其对应内容.(请问各位大大有没有更好的办法?不用label&edit).
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-24 13:05:49 IP:61.31.xxx.xxx 未訂閱
用 StringGrid 就搞定了。
xxxxzxx
一般會員


發表:21
回覆:49
積分:24
註冊:2004-11-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-24 13:16:41 IP:220.163.xxx.xxx 未訂閱
引言: 用 StringGrid 就搞定了。
wameng能进一步给点提示吗?谢谢@:)
BOSS
中階會員


發表:70
回覆:79
積分:64
註冊:2006-11-01

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-01-24 16:43:02 IP:202.154.xxx.xxx 未訂閱
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
  i:Integer;
begin
  Form2.Show;
  Form2.StringGrid1.RowCount:=DBGrid1.Columns.Count;
  for i := 0 to DBGrid1.Columns.Count-1 do
  begin
    Form2.StringGrid1.Cells[0,i]:=DBGrid1.Columns[i].FieldName;
    Form2.StringGrid1.Cells[1,i]:=DBGrid1.Columns.Items.[i].Field.AsString;      end;    end;
xxxxzxx
一般會員


發表:21
回覆:49
積分:24
註冊:2004-11-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-01-27 20:51:22 IP:220.165.xxx.xxx 未訂閱
谢谢!上述回复的老大们,谢谢boss的代码. 我还有个问题:delphi有没有可以用来实现类似这样的控件:(loop 显示) for i=1 to rsT.count stuNum=trim(rsT("STU_NUM")) stuName=trim(rsT("STU_NAME")) stuClass=rsT("STU_CLASS") response.Write('input name="a" type="checkbox" value="a"'"&stuNum&""&stuName&""&stuClass&") rsT.movenext if rsT.Eof then exit for next checkbox自动create 發表人 - xxxxzxx 於 2005/01/27 20:55:53
系統時間:2024-06-19 2:49:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!