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

在DBGrid 裡面使用下拉選單的問題

尚未結案
weiliching
初階會員


發表:53
回覆:78
積分:31
註冊:2003-12-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-12-18 20:56:47 IP:113.161.xxx.xxx 訂閱
 參考過幾篇文章.有關於在DBGrid 裡面選擇用下拉的功能.

但是每一種方式都有一點小問題.
1.
我如果在DBGrid 裡面使用欄位編輯器.在PickList 清單裡面輸入資料..選擇下拉.此功能是正常..
但是一般User 還是能輸入別的資料..我只要他能在選單裡面選.不想讓他自己打的資料..

2. 採用 下面程式,將DBCombobox 編入到DBGrid
//-------
DBGrid1DrawDataCell( )這個事件
我要在欄位編輯器裡面,,新增欄位,目的是位了編寫Title,
因為我DataBase欄位的名稱與我要顯示的Title 不會一樣..

我曾經想改寫在別的事件..但是都失敗,,請位個位大大是否有經驗來解決呢?




Jeffrey
初階會員


發表:10
回覆:58
積分:38
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-12-23 14:21:00 IP:211.72.xxx.xxx 訂閱
如果要限定使用者使用選單內的資料,DataSet可以用 Lookup欄位試試。
deity
尊榮會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-12-23 17:12:15 IP:113.75.xxx.xxx 未訂閱
1、屏蔽输入,只能选择
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (DBGrid1.SelectedField.FieldName ='field1') then
abort;
end;

2、

OnDrawDataCell的触发条件:

DBGridGrid的Column属性为空的时候才能触发。

也就是说当Column被自定义时该事件不被触发。

OnDrawColumnCell的触发条件:

DBGridGrid的DefaultDrawing属性为False时触发。
改写在OnDrawColumnCell事件中

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
begin
if (gdFocused in State) then
begin
if (Field.FieldName=DBComboBox1.DataField) then
begin
DBComboBox1.Left:=Rect.Left DBGrid1.Left;
DBComboBox1.Top:=Rect.Top DBGrid1.top;
DBComboBox1.Width:=Rect.Right-Rect.Left;
DBComboBox1.Height:=Rect.Bottom-Rect.Top;
DBComboBox1.Visible:=True;
end;
end;
end;
系統時間:2024-03-28 18:21:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!