2006 VCL夢,期待2007年完成!DB通用編輯物件、和管理物件開發 |
尚未結案
|
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
2006 VCL夢,期待2007年完成!DB通用編輯物件、和管理物件開發
各位前輩和版主大人: 我來野人獻曝了!之前在ktop問了許多問題,可見得自己對Delphi仍有許多不清楚的地方, 但是我一直有一個夢想,可不可以簡簡單單的寫程式? 我只想寫簡單的應用程式,其實不 想懂太多的技術層次問題,但是買不起太貴的開發工具和套件(如訊光EEP),因為自己之前 用了一段時間的MS-ACCESS,我發現使用MS-ACCESS真的有其優點,但是當專案越來越大,就會 出現諸多致命傷,無法如Delphi、VB等等較為專業的開發工具,進行表單的細部控制,所以一 路鑽研進Delphi VCL的世界,我一直有一個幻象,就是能不能,類似ACCESS一樣,定義好TABLE 後,開出表單,直接選擇要的欄位,然後定義該輸入欄位的屬性,如ACCESS一樣,很快的完成 一個基本表單的操作,大家一定會想說,你說的可以做到啊! 但是我真的卡了好久,希望各位前輩能給予指正和提示,一個人自己亂搞真的進步很慢 期待2007年能完成這個自己的目標,萬分感謝! 計畫說明文件 http://140.125.88.4/doc/yaotest/DIY2007.doc 原始範例 http://140.125.88.4/doc/yaotest/VCL_DIY2007.rar
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
|
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
我來野人獻曝了!之前在ktop仍有許多不清楚的地方, ),因為自己之前用了一段時間的MS-ACCESS真的有其優點,但是當專案越來越大,就會出現諸多致命傷,無法如Delphi等等較為專業的開發工具,進行表單的細部控制,所以一路鑽研進Delphi VCL一樣,定義好TABLE一樣,很快的完成一個基本表單的操作,大家一定會想說,你說的可以做到啊! 但是我說的不只單單如此,我希望我拉一個拉出這個輸入物件後,類似Delphi 7將資料欄位的標題也設定好,當然快捷鍵也一併設定好(如按下ALT 1 跳到第二個欄位……搭配ALT我的思考是資料輸入時: 1.有些欄位是Primary_Key,就是欄位一定要輸入資料(如產品基本檔的貨品編號) 就是外鍵,如進貨單內的貨品編號一定要存在於貨品基本檔內, 2.資料型別我歸類成幾種型態,我寫程式的經驗下,常用的是這幾種 TDB_Field_TYPE = (tcDate, tcString, tcNumber, tcBoolean, tcStringList, tcDBRUNSQL); TcDate選擇這個型別後,只接受字串 TcNumber選擇這個型別後,只能選擇「是」、「否」 TcStringList作為分隔,當資料來源為[1.測試二] 選擇這個型別後,我希望能下達SQL下拉,然後傑何第一個欄位,看是定義成Combobox能達成),或者設定欄位屬性成 3.顏色部份:我希望能針對使用者輸入時,能明確的顏色顯示,就是欄位顏色可以跟著變化。 雖然自己已寫了物件,但是總覺得還不是很理想,所以這一次心一橫將寫的爛作品公開,希望大家幫忙、完成我這個夢想! 安裝後 管理物件 1.EnterTABFocus 2.YaoFRMYaoEdit YaoFRM DataSource 讓YaoEdit能選擇資料庫內所有TABLE讓YaoEdit以選定後TABLE欄位清單
------
將問題盡快結案也是一種禮貌! |
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
g9221712你會有 "YaoFRM 這個元件,若設定管制的DataSource會出現這個錯誤"
是因為沒有處理 Notification 的關係, 請參考以下的code protected procedure Notification(AComponent: TComponent; Operation: TOperation); override; ... 略 ... procedure YaoFRM.Notification(AComponent: TComponent; Operation: TOperation); begin inherited Notification(AComponent, Operation); if (Operation = opRemove) then begin if (FDataLink <> nil) and (AComponent = DataSource) then DataSource := nil; end; end; 另外, 建議你元件的類別以T開頭, 例如: TYaoFRM, 這樣才不會在使用時分不清楚是 Class 還是 Object.
------
將問題盡快結案也是一種禮貌! |
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
我對你這樣的批評,我可以認同,但是我不能接受,因為我這個議題除了跟vcl開發有關,
也是自己開發的元件,若是你要將他定義成cross post,說真的我很難過! 因為我花了快一年的時間思考這個物件,我不只是單單想尋求答案的人! 若增加了您的困擾,我會將所有的文章刪除,造成您的困擾,我很對不起! ===================引 用 文 章=================== whatever, 請不要cross post, 不是要潑你冷水,在這個站這麼久了,你在找資料應該也會常看到那種一點用處也沒有的post, 尤其是corss post增加網頁讀取和你要瀏覽的時間,己所不欲,勿施於人
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
我並沒有要批評你的意思,我也不認為你的作品不好或者其它類似的意思
雖然這篇文章可以指涉的範圍很大,但應該還是要選一個比較好發揮的地方 我指Cross post也僅僅止於其動作,並不是說這個post的內容不好 suppose後面的人在找資源時發現有這樣的東西有三篇,那麼他還是要看這三篇才發現其中一篇有用 或者是文章被散在三篇中,看的不是很累嗎? 而且這還只是三篇,當我們在搜尋要用的資源時不會是只有這些吧? 而我們也希望今天在這裡留下問題有人解,或者是替別人解問題,後來的人也能利用這些資源吧? 一個人三篇的威力是很可怕的,找資料的人累,主機loading也大,我沒別的意思,請不要誤會。 我相信你並不是來只是要答案的人,否則也不會把文件跟想作的事寫的這麼詳細 我相信你的用心,只是要請你體諒一下主機跟使用這個網站的人。 我自己也有很多懸而未解的問題,到現在還在找答案中...
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。 為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。 在引述到我的文時自然會儘量替各位想辦法,謝謝大家! |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
Coffee 兄並無惡意, 禁止 "一文多貼" 是很多論壇的規定
不管您那篇和幾個分類相關, 建議您選個最接近的分類張貼, 而不是相關的全部張貼 某些網站的作法, 一文多貼站長或版主是不知會而直接砍剩下一篇 ===================引 用 文 章=================== 因為我這個議題除了跟vcl開發有關, 也是自己開發的元件,若是你要將他定義成cross post,說真的我很難過!
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
感謝兩位前輩的提醒!不知道我要如何跟版主聯繫,可以將bcb的VCL所post的文章,和自己發表的作品部份刪除!
可能太急著想要得到回應,忘記了造成大家的困擾,再次跟大家深深地說聲抱歉,對不起! ===================引 用 文 章=================== Coffee 兄並無惡意, 禁止 "一文多貼" 是很多論壇的規定 不管您那篇和幾個分類相關, 建議您選個最接近的分類張貼, 而不是相關的全部張貼 某些網站的作法, 一文多貼站長或版主是不知會而直接砍剩下一篇 ===================引 用 文 章=================== 因為我這個議題除了跟vcl開發有關, 也是自己開發的元件,若是你要將他定義成cross post,說真的我很難過!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
danny前輩感謝您的回覆,還將我圖檔處理成網頁可以直接觀看!真是很感謝您!
我火侯其實都不足各位前輩的萬分之一,只是我想雖資質愚鈍,但是作苦力我還是 期待能有一些成果,尤其面對開發工具越來越強(如VS2005),我實在有點迷失, 尤其看到VS2005開發自訂元件如此簡單,說真的我真的心動了!但是看到ktop上 各位前輩回應,我實在很感動,說真的努力想找到問題答案! Coffee前輩,其實您的回應我一樣很感謝您,就如您說的我的作法可能招致反感, 我會改進並小心的參與ktop討論的! 問題: danny前輩,我有照您的的方式加入: procedure YaoFRM.Notification(AComponent: TComponent; Operation: TOperation); begin inherited Notification(AComponent, Operation); if (Operation = opRemove) then begin if (FDataSource <> nil) and (AComponent = DataSource) then DataSource := nil; end; end; 仍難會出現如下錯誤訊息: http://140.125.88.4/doc/yaotest/20060102_bug.jpg 另外一個怪問題,當我將所以所有自訂物件都如前輩您加上T開頭 但是卻會發生Delphi7 元件盤上的[YAOS]這個分頁無法出現,不知道 是否我有哪邊出錯了! 感謝各位前輩,希望2007年是個可以進展的一年! ===================引 用 文 章=================== g9221712你會有 "YaoFRM 這個元件,若設定管制的DataSource會出現這個錯誤" 是因為沒有處理 Notification 的關係, 請參考以下的code protected procedure Notification(AComponent: TComponent; Operation: TOperation); override; ... 略 ... procedure YaoFRM.Notification(AComponent: TComponent;Operation: TOperation); begin inherited Notification(AComponent, Operation); if (Operation = opRemove) then begin if (FDataLink <> nil) and (AComponent = DataSource) then DataSource := nil; end; end; 另外, 建議你元件的類別以T開頭, 例如: TYaoFRM, 這樣才不會在使用時分不清楚是 Class 還是 Object.
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
|
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
感謝danny前輩、Coffee前輩和版主大人:
Coffee前輩您不用客氣啦!我其實能力有限啦!尤其參與KTOP討論越久,發現自己所知有如滄海一粟,就如您所說使用Delphi的人越來越少, 原因就是簡單可直覺使用的物件太少(或者說我跟它不熟吧!)Delphi是個高級的玩具,我真心的想拿他來開發好用的資料庫程式 我是從Clipper、Foxpro、Visual Foxpro、VB、Access一路走來,發現vcl元件開發的模式,真是一個美麗天堂,但是我卻在這個 天堂門口一直撞牆,不得其門而入,看到版上大家問的問題其實都是針對一些物件使用,難得有一套開發元件的制定及使用,我 心中一直有這樣的幻想,能不能簡單一點、能不能再簡單一點,我po上得這個範例,我看到有如毒藥產生的幻境,恰似可以完成 這樣的美麗,我也期待版上得前輩給我一些建議和提示,讓我早日看見這美麗的境界! 目前改寫狀況: ============================================================================================= 以遵照danny 前輩指正和提示加入,上一個發言錯誤訊息已經沒有了!我打錯部份字元。 procedure YaoFRM.Notification(AComponent: TComponent; Operation: TOperation); begin inherited Notification(AComponent, Operation); if (Operation = opRemove) then begin if (FDataSource <> nil) and (AComponent = DataSource) then FDataSource := nil; end; end; 目前問題列表: ============================================================================================= 當我使用YaoFRM這個物件procedure YaoFRM.NewStateChange(Sender: TObject);內我偵測 表單上公用的dataSource物件,我想讓YaoFRM自動將游標移到第一個YaoEdit物件上(因為我以前寫vb時 都需要下達很笨的xxx.SetFocus指令去將游標移到第一個輸入物件上),但是我在表單上得按鈕 上下達ds1.DataSet.Append(ds1是我BaseForm的dataSource物件),但是我發現觸發YaoEdit 的SetFocus 事件,好像會發生需要下達兩次ds1.DataSet.Append、ds1.DataSet.Append才會正常,不知道是否可以 煩請各位前輩給予提示! ============================================================================================= dsinsert: // 新增 begin if Trim(Get_FocusObject_Edit) <> '' then begin if FRM.FindComponent(Get_FocusObject_Edit) is YaoEdit then begin yaoedit(FRM.FindComponent(Get_FocusObject_Edit)).Setfocus; end; end else begin // 假設沒有設定編輯的物件Fcosu設定Primary key 為第一個 if Has_tcPrimary_Key then begin yaoedit(FRM.Components[Has_tcPrimary_Key_Item]).Setfocus; end; end; end; =============================================================================================
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
danny
版主 發表:100 回覆:522 積分:595 註冊:2002-03-11 發送簡訊給我 |
danny前輩感謝您的回覆,還將我圖檔處理成網頁可以直接觀看!真是很感謝您!
我火侯其實都不足各位前輩的萬分之一,只是我想雖資質愚鈍,但是作苦力我還是 期待能有一些成果,尤其面對開發工具越來越強(如VS2005),我實在有點迷失, 尤其看到VS2005開發自訂元件如此簡單,說真的我真的心動了!但是看到ktop上 各位前輩回應,我實在很感動,說真的努力想找到問題答案! VS2005(or 2006) 開發自訂元件如此簡單 ? Delphi 的 VCL 開發從來都是手工業, 不曉得 VS2005(or 2006)是如何簡單了. 我有照您的的方式加入: procedure YaoFRM.Notification(AComponent: TComponent; Operation: TOperation); ... 略 ... 所有元件都有加上 Notification 處理嗎 ? 看起來不像是 YaoFRM 的問題(我改寫成 Delphi 5 VCL 測試沒問題), 因為我只有 Delphi 5, 6 沒有 Delphi 7 , 而你的範例有使用 .bpl (不是獨立執行檔) 我無法開啟或執行, 因此無法測試.請用searching功能找 "YaoFRM" 再全部換成 TYaoFRM, 另外, Register 應該如下 RegisterComponents('YAOS', [TYaoFRM]);
------
將問題盡快結案也是一種禮貌! |
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
danny前輩:
謝謝您花了這麼多時間測試和提供意見!不知道怎麼感謝您! 我有原版的Delphi7如果您覺得有需要,我可以提供給您測試! >> VS2005(or 2006) 開發自訂元件如此簡單 ? >> Delphi 的 VCL 開發從來都是手工業, 不曉得 VS2005(or 2006)是如何簡單了. 我使用VS2005撰寫自訂物件,雖然還沒有摸熟,但是只少都是透過視覺化拖拉 方式開發,不用類似Delphi 手工加上幻想,才可以達成!當然細部的控制, 我還沒有實際開發!! 所有元件都有加上 Notification 處理嗎 ? 這部份我今晚會熬夜看看自己的程式 Notification 真是重要啊!YaoEdit其實是我這組套件內,比較核心的部份, 真是想把Delphi對資料庫開發,搞得跟Access一樣,但是以我的能力, 可能還在幾萬公里之後! 不過前輩又給小弟一點點98高級汽油,多了更多的動力! danny前輩,實在很高興能得到您的回應!版上要是多幾位您這樣的高手 我想Delphi一定可以更有前景!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
最新撰寫問題1/3/2007 2:12:58 AM
當我按下新增Button執行self.DS1.DataSet.Append;,這是正常狀況 因為我將商品編號設定成tcPrimary_Key,也就是新增時,他會透過YaoFRM 偵測到表單DataSource的StateChange而我在YaoFRM內撰寫了若StateChange 我會設定Focus到第一個yaoedit物件上(因為寫了n年的純手工SetFocus) 所以想讓程式自動化一點! 但是問題來.... 我將範例改寫了一下,變為繼承一個BaseForm的方式執行,比較符合我實際 開發的方式,開發問題如下: 我將整個問題放到 http://140.125.88.4/doc/yaotest/20060103_BUG.doc 原始範例 http://140.125.88.4/doc/yaotest/20060103_BUG.rar 不知道各位前輩是否可以給予建議,懇請給予一些建議!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
前輩
我看了一下,我DBEDIt的Enter事件部份不知道是否為這個問題,導致錯誤 但我還是找不到錯誤在哪! procedure YaoEdit.UTEdit_Enter(Sender: TObject); begin if UTEdit.ReadOnly = True then begin // 進入設定顏色 呈現不可編輯顏色 UTEdit.Color := cl3DDkShadow; UTEdit.Font.Color := clWhite; // 旁邊按鈕不顯示 UTButton.Visible := False; end else begin UTEdit.Color := FUTEdit_Color_InTo; UTEdit.Font.Color := clBlack; // 旁邊按鈕顯示 if F_UTButton_Visible = True then begin UTButton.Visible := True; // 旁邊按鈕顯示 end else begin UTButton.Visible := False; // 旁邊按鈕不顯示 end; end; TControl_arrangement; UTEdit.SetFocus; if Assigned(UTEnter) then UTEnter(Sender); end; //==============================================================================$
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
|
g9221712
高階會員 發表:145 回覆:344 積分:162 註冊:2006-07-06 發送簡訊給我 |
對了!有人反應他裝的時候少了物件,無法執行,因為裡面我為了可以讓編輯物件
可以看到一些特殊中文字體,所以我繼承了tnt的物件(這個物件要先裝,才可以正常使用) http://www.tntware.com/delphicontrols/unicode/ 感謝各位前輩的持續關注!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」 程式寫的越久,卻發現自己越來越不會寫程式! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |