在DBGrid 裡面使用下拉選單的問題 |
尚未結案
|
weiliching
初階會員 發表:53 回覆:78 積分:31 註冊:2003-12-27 發送簡訊給我 |
參考過幾篇文章.有關於在DBGrid 裡面選擇用下拉的功能.
但是每一種方式都有一點小問題. 1. 我如果在DBGrid 裡面使用欄位編輯器.在PickList 清單裡面輸入資料..選擇下拉.此功能是正常.. 但是一般User 還是能輸入別的資料..我只要他能在選單裡面選.不想讓他自己打的資料.. 2. 採用 下面程式,將DBCombobox 編入到DBGrid //------- DBGrid1DrawDataCell( )這個事件 我要在欄位編輯器裡面,,新增欄位,目的是位了編寫Title, 因為我DataBase欄位的名稱與我要顯示的Title 不會一樣.. 我曾經想改寫在別的事件..但是都失敗,,請位個位大大是否有經驗來解決呢? |
Jeffrey
初階會員 發表:10 回覆:58 積分:38 註冊:2002-04-15 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
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; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |