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

DBGrid問題請教

尚未結案
ooctiger
一般會員


發表:25
回覆:46
積分:14
註冊:2002-07-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-18 20:17:51 IP:218.172.xxx.xxx 未訂閱
在DBGrid下 考慮到User輸入資料時的方便 在輸入相關Forgin Key時希望能夠顯示相關資料供User輸入使用 應該要如何去做? 例如:我要輸入產品代號時忘記了該產品代號是否可以點該Column 就可以顯示所有的產品代號及名稱供使用者方便輸入,不用再到產品 資料檔去查詢. 請各位前輩幫忙.. Thank You !
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-18 20:30:21 IP:218.16.xxx.xxx 未訂閱
參考 Delphi 範例 C:\Program Files\Borland\Delphi7\Demos\Db\MastApp\MastApp.dpr 留意 EdOrderForm 中間的 DBGrid PartNo 是可以按 [...] 跳出一個 Form 來查找的,因為該 colum 的 ButtonStype 設定成 cbsEllipsis 按[...] 執行是就是呼叫 onEditButtonClick 事件 參考看看。
ooctiger
一般會員


發表:25
回覆:46
積分:14
註冊:2002-07-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-18 21:03:49 IP:218.172.xxx.xxx 未訂閱
感謝 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-18 21:26:38 IP:218.16.xxx.xxx 未訂閱
這些都是要自己用程式碼去的寫的啦,範例的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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-19 09:43:27 IP:61.219.xxx.xxx 未訂閱
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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-19 09:57:33 IP:218.16.xxx.xxx 未訂閱
引言: 範例中的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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-19 16:49:27 IP:61.219.xxx.xxx 未訂閱
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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-19 17:12:38 IP:218.16.xxx.xxx 未訂閱
給預設值不是 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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-24 08:39:31 IP:61.219.xxx.xxx 未訂閱
Justmade前輩: 謝謝你的指導,及方向指引. 我在DBGrid的認識又更進一步 以後有問題還是請Justmade前輩 多多指教 謝謝
系統時間:2024-06-24 19:56:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!