開窗查詢資料引用在 DBGrid1 ButtonStyle cbsEllipsis 結果出現問題 |
答題得分者是:P.D.
|
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
[code delphi] unit GetData; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, StdCtrls, DBCtrls, ExtCtrls, DB, DBTables; type TFrmGetData = class(TForm) Panel1: TPanel; Panel2: TPanel; Panel3: TPanel; DBNavigator1: TDBNavigator; CmdOK: TButton; CmdCancel: TButton; DBGrid1: TDBGrid; DataSource1: TDataSource; procedure FormActivate(Sender: TObject); procedure CmdOKClick(Sender: TObject); procedure CmdCancelClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } DS:TDatasource; public { Public declarations } Property MyDatasource:TDatasource read DS Write DS; function show:Boolean; function GetValue(FName:string):Variant; procedure init; end; var FrmGetData:TFrmGetData; OKorNot:Boolean; implementation {$R *.dfm} procedure TFrmGetData.FormActivate(Sender: TObject); begin DBGrid1.DataSource:=MyDatasource; DBNavigator1.DataSource:=MyDatasource; end; procedure TFrmGetData.CmdOKClick(Sender: TObject); begin OKorNot:=True; Close; end; procedure TFrmGetData.CmdCancelClick(Sender: TObject); begin OKorNot:=False; Close; end; function TFrmGetData.show:Boolean; begin ShowModal; Result:=OKorNot; end; function TFrmGetData.GetValue(FName:string):Variant; Var i:integer; begin with MyDatasource.DataSet do begin for i := 0 to FieldCount - 1 do if UpperCase(Fields[i].FieldName) =UpperCase(FName) then Result:= Fields[i].Value; end; end; procedure TFrmGetData.init; begin Application.CreateForm(TFrmGetData,FrmGetData); end; procedure TFrmGetData.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; end. procedure TUP_KeepSaleFm1.DBGrid1EditButtonClick(Sender: TObject); begin if LowerCase(DBGrid1.SelectedField.FieldName)= '果名'Then begin FrmGetData.init; FrmGetData.MyDatasource:=DM.DSItems; if FrmGetData.Show then begin DM.TBOrdersItem.Edit; DM.TBOrdersItem.FieldByName('果名').Value:=FrmGetData.GetValue('果名'); end; end; end; =====>>上列程式是小弟跟書本學習 [開窗查詢擷取資料]程式設計 然後引用到另一個Form 的 DBGrid1 ButtonStyle cbsEllipsis 結果出現問題 ※ [Error] UP_KeepSalef_01.pas(535): Undeclared identifier: 'DM' private { Private declarations } Dm:TDatasource; 宣告後不再出現 [Error] 但卻 DSItems 沒有定義 小弟因是初學不瞭解也不知這個問題如何處理,請教個位大大指導 謝謝! [/code] 編輯記錄
K1086 重新編輯於 2011-01-20 18:26:19, 註解 無‧
|
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
|
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
===================引 用 老大仔 文 章=================== "DM"是在UP_KeepSalef_01.pas中 那請先看書本中的"DM"什麼東西 應該是沒定義/宣告又或者可能是你在打的時候打錯了...XD ===>>小弟確定沒打錯 關於 DM應該是 DataSource 的公用變數定義 所以我在共域變數區定義之後就沒出現錯誤 可是 DSItems 就說沒有效用的定義 是否DM.DSItems 這語法不適用 或是 .DSItems 有其他代用的名稱? 請教老大仔 如何解決謝謝! |
mephise
高階會員 發表:4 回覆:149 積分:205 註冊:2004-02-09 發送簡訊給我 |
DM 有點像是 DataModule
您程式中是不是有用到 DataModule 呢? ===================引 用 K1086 文 章=================== ===================引 用 老大仔 文 章=================== "DM"是在UP_KeepSalef_01.pas中 那請先看書本中的"DM"什麼東西 應該是沒定義/宣告又或者可能是你在打的時候打錯了...XD ===>>小弟確定沒打錯 關於 DM應該是 DataSource 的公用變數定義 所以我在共域變數區定義之後就沒出現錯誤 可是 DSItems 就說沒有效用的定義 是否DM.DSItems 這語法不適用 或是 .DSItems 有其他代用的名稱? 請教老大仔 如何解決謝謝!
------
Mephise Chen 前興德工程師 |
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
看不太懂你的意思...
你的意思是DM=datasource??? datasource是元件耶 它哪來的公用變數= =??? 我怎麼看都不像啊... 會不會是DataModule?? ===================引 用 K1086 文 章=================== ===================引 用 老大仔 文 章=================== "DM"是在UP_KeepSalef_01.pas中 那請先看書本中的"DM"什麼東西 應該是沒定義/宣告又或者可能是你在打的時候打錯了...XD ===>>小弟確定沒打錯 關於 DM應該是 DataSource 的公用變數定義 所以我在共域變數區定義之後就沒出現錯誤 可是 DSItems 就說沒有效用的定義 是否DM.DSItems 這語法不適用 或是 .DSItems 有其他代用的名稱? 請教老大仔 如何解決謝謝! |
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
+ 1
也可能是在UP_KeepSalef_01.pas有用到DM,但是可能沒use到??? ===================引 用 mephise 文 章=================== DM 有點像是 DataModule 您程式中是不是有用到 DataModule 呢? ===================引 用 K1086 文 章=================== ===================引 用 老大仔 文 章=================== "DM"是在UP_KeepSalef_01.pas中 那請先看書本中的"DM"什麼東西 應該是沒定義/宣告又或者可能是你在打的時候打錯了...XD ===>>小弟確定沒打錯 關於 DM應該是 DataSource 的公用變數定義 所以我在共域變數區定義之後就沒出現錯誤 可是 DSItems 就說沒有效用的定義 是否DM.DSItems 這語法不適用 或是 .DSItems 有其他代用的名稱? 請教老大仔 如何解決謝謝! |
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
===================引 用 老大仔 文 章=================== 看不太懂你的意思... 你的意思是DM=datasource??? datasource是元件耶 它哪來的公用變數= =??? 我怎麼看都不像啊... 會不會是DataModule?? ====>>謝謝老大仔的回覆 關於小弟說的 DM 變數是指 DataModule 那個Form 有 DM=datasource 的意思 但我把DataModule 關連的 Table 取代為Table1.DSItems 再編譯 就沒出現 DM 錯誤訊息 反而出現DSItems 是沒有效用的定義,因此小弟才會覺得很迷糊 請教老大仔要如何解決 謝謝! ===================引 用 K1086 文 章=================== ===================引 用 老大仔 文 章=================== "DM"是在UP_KeepSalef_01.pas中 那請先看書本中的"DM"什麼東西 應該是沒定義/宣告又或者可能是你在打的時候打錯了...XD ===>>小弟確定沒打錯 關於 DM應該是 DataSource 的公用變數定義 所以我在共域變數區定義之後就沒出現錯誤 可是 DSItems 就說沒有效用的定義 是否DM.DSItems 這語法不適用 或是 .DSItems 有其他代用的名稱? 請教老大仔 如何解決謝謝! |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
1.我覺得你照書中的範例, 應該有有前, 中. 後段三篇, 而你可能只是取中段來實作
2.DM 的宣告應該不是 TDataSource 物件, 而是 TDataModule 物件, 你弄錯了, TDataMoudle 是一個 另類Form的型態, 有兩種方式來宣告, 一是透過Delphi的VCL直接拉一個DataMoudle Form 或者手動建立 DM, 例如 DM:= TDataModule.Create(xxx) 3. 由於在發上來的源碼中看不到 DM的宣告, 所以我想, 最大的可能是有另一段SOURCE 是在處理DM的東東, 所以, 我才會說, 範例應該有前, 中, 後段 因此請你先再仔細查看書中範例, 仔細往前(後)翻翻看, 有沒有相關連的程式 |
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
===================引 用 P.D. 文 章=================== 1.我覺得你照書中的範例, 應該有有前, 中. 後段三篇, 而你可能只是取中段來實作 2.DM 的宣告應該不是 TDataSource 物件, 而是 TDataModule 物件, 你弄錯了, TDataMoudle 是一個 另類Form的型態, 有兩種方式來宣告, 一是透過Delphi的VCL直接拉一個DataMoudle Form 或者手動建立 DM, 例如 DM:= TDataModule.Create(xxx) 3. 由於在發上來的源碼中看不到 DM的宣告, 所以我想, 最大的可能是有另一段SOURCE 是在處理DM的東東, 所以, 我才會說, 範例應該有前, 中, 後段 因此請你先再仔細查看書中範例, 仔細往前(後)翻翻看, 有沒有相關連的程式 ====>> 謝謝 PD 的指導 我會認真再一次從頭看到尾 |
cancer
高階會員 發表:58 回覆:319 積分:190 註冊:2004-07-31 發送簡訊給我 |
|
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
===================引 用 P.D. 文 章=================== 1.我覺得你照書中的範例, 應該有有前, 中. 後段三篇, 而你可能只是取中段來實作 2.DM 的宣告應該不是 TDataSource 物件, 而是 TDataModule 物件, 你弄錯了, TDataMoudle 是一個 另類Form的型態, 有兩種方式來宣告, 一是透過Delphi的VCL直接拉一個DataMoudle Form 或者手動建立 DM, 例如 DM:= TDataModule.Create(xxx) 3. 由於在發上來的源碼中看不到 DM的宣告, 所以我想, 最大的可能是有另一段SOURCE 是在處理DM的東東, 所以, 我才會說, 範例應該有前, 中, 後段 因此請你先再仔細查看書中範例, 仔細往前(後)翻翻看, 有沒有相關連的程式 ===>>>謝謝 PD版主的提示 小弟認真看範例 終於知道那裡出問題了 謝謝!同時也感謝 K-TOP 所有大大熱心回應與解釋 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |