DBGrid問題請教 |
尚未結案
|
ooctiger
一般會員 發表:25 回覆:46 積分:14 註冊:2002-07-08 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
ooctiger
一般會員 發表:25 回覆:46 積分:14 註冊:2002-07-08 發送簡訊給我 |
感謝 Justmade 這麼快給予幫忙 在colnum的屬性ButtonSty設為cbsEllipsis--------ok onEditButtonClick 事件要如何去寫,我的意思是在
DBGrid2的onEditButtonClick事件直接點兩下就會出現嗎? 在範例中我有看到直接點兩下有許多的Function可以去選
如 procedure TEdOrderForm.PickPartNo(Sender: TObject);
procedure TEdOrderForm.ItemsGridExit(Sender: TObject);
而我卻沒有選擇,直接點兩下出現的卻是
procedure TForm1.DBGrid1EditButtonClick(Sender: TObject); 我是有哪些步驟疏忽或觀念錯誤 請指教
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
這些都是要自己用程式碼去的寫的啦,範例的PickPartNo就是寫的而不是自動有的,至於甚樣寫可以參考範例啦。 給一些大約的指引 1. File->New->Form (跳出來給人選東西的)
2. 參考範例的 SearchDlg Form
3. 參考範例的 EdOrderForm 的 PickPartNo 來寫入你的 DBGrid1EditButtonClick
if ItemsGrid.SelectedField = MastData.ItemsPartNo then // 如果按 ...的是 Partno 列的話 begin if MastData.ItemsPartNo.Value <> 0 then SearchDlg.PartNo := MastData.ItemsPartNo.Value; //告訢 SerchDlg Form 預設的 PartNo 就是現在的 PartNo if SearchDlg.ShowModalParts = mrOk then // 顯示 SerchDlg 並測試使用者是否按了確定 begin MastData.Items.Edit; MastData.ItemsPartNo.Value := SearchDlg.PartNo;// 修改現在的 PartNo 成使用者所選的 end; end;你可以開2個 Delphi 一邊做你的一邊看範例,會比較輕鬆。一邊看一邊試,不成再看看有甚麼不同,會比別人完全教你甚麼做學得深刻。當然,真的攪不通還可隨時發問喔。 發表人 - Justmade 於 2003/03/18 21:27:53 |
ooctiger
一般會員 發表:25 回覆:46 積分:14 註冊:2002-07-08 發送簡訊給我 |
Justmade兄:
cbsEllipsis的Procedure我可以去點選了但是程式還是有不懂的地方
請再賜教 if ItemsGrid.SelectedField = MastData.ItemsPartNo then // 如果按 ...的是 Partno 列的話
begin
............
end; 範例中的MastData.ItemsPartNo 是ItemGrid的DataSource事件下的
但我的DBGRid的DataSource事件是有DataSOurce2(TQuery),並無欄位名稱.
我要如何做才能判斷User點選的是DBGrid中的哪一個欄位 煩請再賜教
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
引言: 範例中的MastData.ItemsPartNo 是ItemGrid的DataSource事件下的 但我的DBGRid的DataSource事件是有DataSOurce2(TQuery),並無欄位名稱. 我要如何做才能判斷User點選的是DBGrid中的哪一個欄位兩個方法 1. 不理會欄位,直接看按的是那一列的 if DBGrid1.SelectedIndex = 0 then // 按的是第一列的 ... 2. 用 FieldName if DBGrid1.SelectedField.FieldName = 'PartNo' then |
ooctiger
一般會員 發表:25 回覆:46 積分:14 註冊:2002-07-08 發送簡訊給我 |
Justmade兄: 再次感謝您熱心幫忙 兩個方法
1. 不理會欄位,直接看按的是那一列的
if DBGrid1.SelectedIndex = 0 then // 按的是第一列的 ... 2. 用 FieldName
if DBGrid1.SelectedField.FieldName = 'PartNo' then 以上兩個方法我都無法做出來,我覺得我觀念一定有搞不清楚的地方
後來因為cbsEllipsis[..]已存在,所以直接在OnEditButton事件內寫
我所需要的程式達到我的需求. 其實我接觸Delphi也有幾個月的時間了,但始終搞不清楚DBGrid的詳細用法
例如
可以在DBGRid下的某欄位給一個預設值,如今天的日期?
我的做法是直接在
TQuery.FieldByName('TableNAme').AsString:=DateToStr(Date);
這樣正確嗎?
有別的方法可以處理嗎?
如果資料不只一筆時我又該如何去做?
是否哪裡可以找到DBGrid的用法大全,很多書都只有講到皮毛無法深入骨髓. 請Justmade兄再次指導
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
給預設值不是 DBGrid 的功能 ,最好的做法是
1. 直接在 Database 設定預設值,Paradox 及絕大部份 DBMS 均可設定。
2. TTable/TQuery 的 AfterInsert 事件中給欄位設定預設值,如此每次新增資料便會自動設定預設值了。 TQuery.FieldByName('FieldName').Value := Date; Date 可直接指給 Date 欄位,不用將它變 String 之後又變回 Date 我接觸 Delphi 好幾年還是很多都不會,書本可參看會員推薦Delphi/BCB好站好書專區
http://delphi.ktop.com.tw/forum.asp?FORUM_ID=81 Delphi 6 Object Pascal完美經典 好像很有好評,但我沒看過不知道對 Dbgrid 介紹是否深入。 其實 help file 應可找到大部基本資料, Google (www.google.com) 可找到好到應用例子及以前的問題解決,都是很好用的。
|
ooctiger
一般會員 發表:25 回覆:46 積分:14 註冊:2002-07-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |