a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > Delphi > 正文

Delphi深度探索-數(shù)據(jù)庫明了的ActiveX控件

2019-11-18 18:41:27
字體:
供稿:網(wǎng)友

Delphi深度探索-數(shù)據(jù)庫明了的ActiveX控件

   強大的數(shù)據(jù)庫開發(fā)功能無疑是Delphi王冠上的明珠,至少有80%以上的人每天使用Delphi來開發(fā)數(shù)據(jù)庫程序。基于積木式的VCL數(shù)據(jù)庫控件,以及Dev ExPRess和Woll2Woll等公司提供的強大的第三方數(shù)據(jù)庫明了控件,毫不夸張的說只需要簡單的設(shè)置一下屬性,拖拉幾下鼠標(biāo)我們就可以非常快速的完成數(shù)據(jù)庫程序的開發(fā)。由于Delphi的數(shù)據(jù)庫功能過于強大了,所以很多人就忽視了一個事實,就是ActiveX同樣可以提供靈活的數(shù)據(jù)庫綁定,遺憾的是Delphi本身所提供的幾個第三方的ActiveX控件中沒有一個是數(shù)據(jù)庫明了的控件,這間接導(dǎo)致了一個誤解,使得很多人誤以為Delphi并不支持數(shù)據(jù)明了的ActiveX控件(也包括很久以前的我J)。這當(dāng)然是錯誤的看法。
    在Delphi中使用數(shù)據(jù)明了的ActiveX控件
    在下面的例子中,我們將使用隨Office 2000安裝到系統(tǒng)中的Microsoft Calendar 9.0控件來進行演示,它就是一個數(shù)據(jù)明了控件。選擇Component | Import ActiveX Control,選擇Microsoft Calendar 9.0(見下圖1.12),把類名從TCalendar改成TAXCalendar,以避免同系統(tǒng)中原有的同名控件沖突,然后點Install按鈕安裝此控件。

圖1.12
 

 
 
 
 
 
 
 
 
 
 
 
 

    新建一個程序,在窗體上放置一個TAXCalendar控件。再放上一個DataSource 和Table控件。設(shè)定DataSource的Dataset為Table1,然后設(shè)定Table1的DataBaseName 屬性為DBDEMOS,TableName 屬性為EMPLOYEE.DB,最后設(shè)定Table1.Active屬性為True。
    接下來就該進行數(shù)據(jù)庫綁定了,注意一下引入的TAXCalendar具有DataSource和DataBindings這兩個同一般ActiveX控件不同的屬性,這是因為ActiveX Import Wizard在引入ActiveX控件先判斷是否是數(shù)據(jù)庫明了的控件,如果是就以TDBOleControl作為基類進行繼承,如果不是就從TOleControl開始繼承。而TDBOleControl實現(xiàn)了DataBindings和DataSource屬性。設(shè)定AXCalendar1.DataSource屬性為Datasource1。
    這時我們在窗體上用鼠標(biāo)右鍵單擊TAXCalendar控件的話,會發(fā)現(xiàn)在右鍵菜單中多出了一個DataBindings…菜單項(見下圖1.13)。
 

圖1.13
 

 
 
 
 
 
 
 
 
 

    點擊菜單項后,會顯示數(shù)據(jù)綁定屬性編輯框(見下圖1.14)。分別在FieldName列表框中選定HireDate,在Property Name列表框中選擇Value(12)(其中12是Value的Dispid號),點擊Bind按鈕,就會在數(shù)據(jù)庫字段和Value屬性間建立數(shù)據(jù)關(guān)聯(lián)。

圖1.14
 

 
 
 
 
 
 
 
 
 
 
 

    最后,再在窗體上放置一個DBGrid和DBNavigator控件,并設(shè)定它們的DataSource為DataSource1。運行程序,移動當(dāng)前數(shù)據(jù)位置的時候,你可以注意到ActiveX的日期顯示也會隨之變化,同數(shù)據(jù)庫中的Hiredate保持一致。如圖1.15所示:

圖1.15
 

 
 
 
 
 
 
 
 
 
 
 
 

    創(chuàng)建數(shù)據(jù)明了的ActiveX控件
雖然我們已經(jīng)清楚了Delphi的確可以使用數(shù)據(jù)明了的ActiveX控件,那么一個新的問題就產(chǎn)生了,Delphi本身可不可以創(chuàng)建數(shù)據(jù)明了的ActiveX控件呢?由于Delphi提供了一步到位的ActiveX控件轉(zhuǎn)換生成,就有很多人希望能夠把Delphi中強大的數(shù)據(jù)庫控件轉(zhuǎn)換為ActiveX控件,以便能在其他支持ActiveX的開發(fā)環(huán)境開發(fā)數(shù)據(jù)庫程序時仍然能夠享受到象在Delphi中一樣的輕松愉快的感覺。但是我在前面第一部分中已經(jīng)提到了,由于Delphi的數(shù)據(jù)明了控件同ActiveX數(shù)據(jù)庫控件的在內(nèi)部機制上差距過大,因此Delphi無法簡單的直接轉(zhuǎn)換其強大的數(shù)據(jù)庫控件。那么是不是就意味我們就沒有辦法了呢?of course not! 其實使用類型庫編輯器,我們可以異常輕松的實現(xiàn)數(shù)據(jù)明了的ActiveX控件,就讓我們用TEdit控件來試驗一下,看看如何去做。
選菜單命令New | ActiveX | ActiveX Control啟動ActiveX Control Convert Wizard,選TEdit控件作為轉(zhuǎn)化對象,生成EditX ActiveX框架。
    接下來,我們將改造TEdit的Text屬性,使其支持數(shù)據(jù)綁定。選 View | Type Library來察看Delphi生成的類型庫,并選中Text屬性,然后切換到Flags屬性頁(見下圖1.16)。
 

圖1.16
 

 
 
 
 
 
 
 
 
 
 

    注意在Flags屬性頁有很多多選框,對于我們來說,只關(guān)心同數(shù)據(jù)綁定相關(guān)的選項。它們是Bindable,Display Bindable,Default Bindable,Immediate Bindable和Request Edit選項。
    標(biāo)記一個屬性為bindable后,并將其同數(shù)據(jù)庫字段綁定后,當(dāng)用戶修改了屬性后,控件就會通知數(shù)據(jù)庫值已經(jīng)變化,并請求數(shù)據(jù)庫記錄更新狀況,數(shù)據(jù)庫反過來也會通知記錄更新是否成功。
    Bindable選項表明屬性支持數(shù)據(jù)綁定,如果把屬性標(biāo)記為bindable,屬性將在其值變化時通知其容器。
    Request Edit表明屬性支持OnRequestEdit 通知消息,這允許控件詢問容器屬性值是否允許用戶修改。
    Display Bindable表示容器可以向用戶顯示這個屬性是可綁定的。
    Default Bindable表示它是唯一的,缺省的可綁定屬性,使用它必須同時標(biāo)記了Bindable屬性。
    Immediate Bindable當(dāng)被標(biāo)記時,所有的改變都會被通知,同時還需要設(shè)定bindable和Request Edit標(biāo)記。
    下面我們就標(biāo)記EditX控件的Text屬性為Bindable,Display Bindable,Default Bindable,和Request Edit。然后點Refresh按鈕刷新類型庫,最后選Run | Register ActiveX Server注冊ActiveX控件。
    再引入新的EditX ActiveX控件,就會發(fā)現(xiàn)它確實實現(xiàn)了數(shù)據(jù)綁定的功能,下面就是一個使用了數(shù)據(jù)明了的EditX的程序的運行示意圖1.17,(Delphi的ActiveX數(shù)據(jù)明了功能的實現(xiàn)的確簡單很COOL,不是嗎?。

上一篇:讓彩色光標(biāo)出現(xiàn)在Delphi程序中

下一篇:先人的DELPHI基礎(chǔ)開發(fā)技巧

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關(guān)注

主站蜘蛛池模板: 极品少妇xxxxⅹ另类 | 亚洲精品成人av | 欧美一级片在线 | 色橹橹欧美在线观看视频高清 | 91一区二区三区 | 久久精品国产精品亚洲 | 国产精品福利在线观看 | 骚鸭av | 成人午夜在线视频 | 先锋资源中文字幕 | 自拍偷拍欧美日韩 | 国产一区二区久久久 | 黄色一级片在线观看 | www.日韩三级 | av在线免费观看一区二区 | 亚洲黄色毛片 | 久久久国产精品入口麻豆 | 欧美精品久久久久久久久 | 久久精品高清视频 | 久久国产精品视频 | 国产乱精品一区二区三区视频了 | 97在线免费观看 | 一级日韩片| 日本视频网址 | 亚洲黄色免费在线看 | 国产精品一区二区无线 | 欧美三级视频在线播放 | 国产伦精品一区二区三区视频网站 | 精品一区二区在线播放 | 亚洲精品在线播放 | 久久久久亚洲一区二区三区 | 免费在线色| 一区二区三区四区 | 久久久美女 | 欧美日韩国产在线看 | 伊人网一区 | 久久久久久久久久久久久九 | 国产精品久久久久久久午夜片 | 操网| 欧美国产日韩视频 | 看真人视频a级毛片 |