全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2181
推到 Plurk!
推到 Facebook!

請問TDBGrid如何取得User正在輸入的值?

答題得分者是:terrychen
ying0515
中階會員


發表:90
回覆:168
積分:81
註冊:2003-01-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-14 10:59:58 IP:61.218.xxx.xxx 未訂閱
請問TDBGrid如何取得User正在輸入的值? TDBGrid正在輸入還沒跳到下一欄位的值! 就如同TDBEdit(Sender).text Delphi follower
------
Delphi
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-14 11:05:54 IP:61.222.xxx.xxx 未訂閱
可以考慮用dbgrid的dataset中 特定欄位的onchange事件判斷
terrychen
尊榮會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-14 11:16:46 IP:61.221.xxx.xxx 未訂閱
您好: DBGrid1.SelectedField.Text; 不知道是不是你要的 ~~應無所住而生其心~~
Rain
資深會員


發表:31
回覆:236
積分:268
註冊:2003-02-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-01-14 11:18:46 IP:220.160.xxx.xxx 未訂閱
(DBGrid.Controls[0] as TInPlaceEdit).Text; 發表人 - Rain 於 2004/01/14 11:20:03
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-01-14 11:32:14 IP:61.222.xxx.xxx 未訂閱
引言: (DBGrid.Controls[0] as TInPlaceEdit).Text;
好強...這個大概是100分的解答了
ying0515
中階會員


發表:90
回覆:168
積分:81
註冊:2003-01-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-01-14 11:33:13 IP:61.218.xxx.xxx 未訂閱
我希望在DBGrid1DblClick(Sender: TObject);下就要取的 User輸入的值,就是說User輸入某值後在dbgrid按F1或滑鼠 連點兩下作其他處理,不知口否作到? selectedfield.txt在DblClick下好像只取到oldvalue? Delphi follower
------
Delphi
ying0515
中階會員


發表:90
回覆:168
積分:81
註冊:2003-01-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-01-14 11:38:21 IP:61.218.xxx.xxx 未訂閱
引言: (DBGrid.Controls[0] as TInPlaceEdit).Text;
好強!我在DBGrid1DblClick下果真可取到正確的值! 感謝! Delphi follower 發表人 - ying0515 於 2004/01/14 15:04:00
------
Delphi
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-01-14 11:38:50 IP:61.222.xxx.xxx 未訂閱
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
  //取得curvalue
  dbgrid1.DataSource.DataSet.FieldByName(dbgrid1.SelectedField.FieldName).CurValue;
end;
試試看囉
ying0515
中階會員


發表:90
回覆:168
積分:81
註冊:2003-01-04

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-01-14 11:45:34 IP:61.218.xxx.xxx 未訂閱
引言:
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
  //取得curvalue
  dbgrid1.DataSource.DataSet.FieldByName(dbgrid1.SelectedField.FieldName).CurValue;
end;
試試看囉
感謝!我試了結果
procedure Tfrnd.DBGrid1DblClick(Sender: TObject);
var w: String;
begin
  with dbgrid1 do
  begin
    w := (DBGrid1.Controls[0] as TInPlaceEdit).Text  ','  <== 正確
    selectedfield.CurValue  ','   <== 不正確
    dbgrid1.DataSource.DataSet.FieldByName(dbgrid1.SelectedField.FieldName).CurValue; <== 不正確
    showmessage(w);
  end;
end;
 
Delphi follower
------
Delphi
ying0515
中階會員


發表:90
回覆:168
積分:81
註冊:2003-01-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-01-14 11:58:28 IP:61.218.xxx.xxx 未訂閱
Rain非常抱歉!分數應該要給你的, 我選錯了!不知如何修改給分動作!!! Delphi follower
------
Delphi
Rain
資深會員


發表:31
回覆:236
積分:268
註冊:2003-02-17

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-01-14 12:06:25 IP:220.160.xxx.xxx 未訂閱
分數有什麼關係、問題解決了就好:)
ying0515
中階會員


發表:90
回覆:168
積分:81
註冊:2003-01-04

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-01-14 15:00:29 IP:61.218.xxx.xxx 未訂閱
好樣子!感謝各位回應! Delphi follower
------
Delphi
terrychen
尊榮會員


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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-01-14 21:41:42 IP:211.76.xxx.xxx 未訂閱
引言: 我希望在DBGrid1DblClick(Sender: TObject);下就要取的 User輸入的值,就是說User輸入某值後在dbgrid按F1或滑鼠 連點兩下作其他處理,不知口否作到? selectedfield.txt在DblClick下好像只取到oldvalue? Delphi follower
雖已結案,小弟測過DBGrid1.SelectedField.Text; 可以做到ying0515所希望的 分數方面,雖Rain大大客氣了 若可以的話 希望版主或站長能更改分數給Rain大大 引述
ying0515
中階會員


發表:90
回覆:168
積分:81
註冊:2003-01-04

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-01-15 21:17:13 IP:218.171.xxx.xxx 未訂閱
感謝terrychen提醒, 我試了DBGrid1.SelectedField.Text;試不出來?? DBGrid1.SelectedField.Text,顯示出來都是空白, 動作是User正在輸入還沒跳下一欄位就按F1觸發.
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, DBTables;
type
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Query1: TQuery;
    procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var w: String;
begin
  if (key = vk_f1) then
    begin
      w := dbgrid1.SelectedField.Text +','+
          (DBGrid1.Controls[0] as TInPlaceEdit).Text;
      showmessage(w);
    end;
end;
end.    
Delphi follower
------
Delphi
terrychen
尊榮會員


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

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-01-15 21:32:46 IP:211.76.xxx.xxx 未訂閱
引言: 感謝terrychen提醒, 我試了DBGrid1.SelectedField.Text;試不出來?? DBGrid1.SelectedField.Text,顯示出來都是空白, 動作是User正在輸入還沒跳下一欄位就按F1觸發.
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, DBTables;
type
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Query1: TQuery;
    procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var w: String;
begin
  if (key = vk_f1) then
    begin
      w := dbgrid1.SelectedField.Text +','+
          (DBGrid1.Controls[0] as TInPlaceEdit).Text;
      showmessage(w);
    end;
end;
end.    
Delphi follower
可能那天小弟沒注意到『跳下一欄位』這ㄍ細節, 感謝ying0515大大的指正 今天在試一次果如ying0515大大所言 小弟有多學了一招 ~~應無所住而生其心~~
系統時間:2024-05-18 22:20:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!