日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Delphi 框架Frames的使用

發(fā)布時間:2024/6/21 综合教程 39 生活家
生活随笔 收集整理的這篇文章主要介紹了 Delphi 框架Frames的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉眼間使用Delphi開發(fā)已近2年了,其間有幾次想把它學好,但總有一種排斥心理,找各種借口間斷了自己的努力,不知不覺間自己差距越來越大,無奈我必須面對現(xiàn)實,從現(xiàn)在起堅持做自己該做的,出來混,遲早要換的,現(xiàn)在就要努力補課,換自己以前的偷懶和惰性。今天第一次聽說delphi中的Frames,程序中要復用一個界面,我一開始想用彈出一個模特Frame的方法實現(xiàn),聽一位delphi大牛說可以用Frames實現(xiàn)更好,我頓時傻眼了,也沒好意思問Frames為何物,只好自己百度搜索一下。找了幾篇文章看了后依舊頭暈,于是就按照一篇文章所說嘗試了一下:1.在我現(xiàn)有的工程中加入框架Frames:菜單File-》New –》Frames然后命名;2.單擊standard選項卡上的Frames拖到我想放置Frames的主窗體panel上,彈出Select frame to insert對話框,選擇我剛才新建的Frame。3.發(fā)現(xiàn)我原來Frame命名為FrameCount,而新插入的Frame被命名為FramesCount1,我于是在FrameCount上放置幾個按鈕控件,切換到主窗體上的FrameCount1,居然上面多了同名按鈕控件;我直接在FrameCount1上放置幾個按鈕,F(xiàn)rameCount上沒有,我大概明白了框架重用的含義,也逐漸明白了幾篇文章,現(xiàn)摘錄如下:

那么Frame到底是什么呢?簡單來說:

1. Frame是組件容器,類似Panel

2. Frame在使用上類似Components組件,但并沒有構造器和解析器,依賴于父容器完成Destroy的工作

3. Frame可以繼承和嵌套

4. Frame內部的控件都是公開的,可以在IDE里重置屬性和事件,所以frame的內部封裝一般都是松散的。訪問frame上的組件用frame.control方式

5. Frame的使用范圍僅在當前工程內

6. Frame的使用不像一般組件component有獨立的功能,很多時候需要和父容器耦合在一起

frame和普通components組件一樣,都是為復用設計的。只是frame是Delphi的特技,是一種簡化版組件。如果你有一組可視化組件的集合,在多個地方重復出現(xiàn),就應該考慮使用Frame了。

摘自:http://blog.csdn.net/ppayun/article/details/7570946

Delphi中TFrame組件的使用

從Delphi 5.0開始,Borland 引進了一個新的可視化的容器類TFrame。這個類,我們稱之為TFrame框架組件,使程序開發(fā)人員能夠可視化的設置一組組件,之后系統(tǒng)中對它進行重用。

TFrame框架有兩個主要的好處:

第一、框架可大幅減少需要存儲在工程中的資源量。

第二、框架允許你可視化的創(chuàng)建能復制和擴展的對象。對可視化窗體繼承(VFI), 你可以享受同樣的好處。

VFI允許你很簡單的創(chuàng)建由繼承得來的窗體。VFI的限制是你必須用"全部或全無"的方式來使用窗體。更具體的說,當你用VFI時,你總是創(chuàng)建一個新的窗 體。

TFrame框架也可認為與組件模板(含一個或更多組件并用Component | Create Component Template命令保存到組件 面板的一個組)相似。但是,相似之處僅限于它們都是被可視化設計的(不象傳統(tǒng)的完全基于代碼的組件設計)。實際上,框架與組件模板的差異是巨大的。正如我 們已學過的,框架是一定義類的實例,當定義類發(fā)生改變時框架也將發(fā)生變化。與之相比,組件模板是組件的集合。對組件模板的改變不影響以前從這一模板創(chuàng)建的 對象。

創(chuàng)建框架

1> 選擇 File | New Application 建立一個新的工程。

2> 選擇 File | New Frame 建立一個新的TFrame框架。在這一框架上,添加三個Label和三個DBEdit,還有一個 DBNavigator和一個DataSource。將Label的Caption分別設為ID,F(xiàn)irst Name和Last Name。將 DBEdit和DBNavigator的DataSource屬性設為DataSource1。

3> 將框架的Name屬性設為NameFrame。(相比其它對象,起一個有意義的名字對框架來說非常重要)最后,選擇File | Save As 保存框 架。在這里,用文件名NAMEFRAM.PAS保存框架。

使用框架

1> 在由上面步驟建立的工程中選擇Form1。

2> 加兩個GroupBox到窗體上,其中一個在另一個之上。設置第一個的Caption為Customers,第二個的Caption為 Employees。

3> 現(xiàn)在添加框架。選擇組件面板的Standard頁,點擊Frame組件并將其拖到名為Customers的GroupBox中。這時Delphi會顯示一 個Select frame to insert對話框。

4> 在對話框中選擇NameFrame。現(xiàn)在框架將在名為Customers的GroupBox中顯示。重復這一步驟,這一次將框架放在名為 Employees的GroupBox中。你可能要調節(jié)框架的尺寸,這跟你最初是如何放置有關。

5> 將兩個Table組件放到窗體中,將其DatabaseName屬性都設為IBLocal。將Table1的TableName屬性設為 CUSTOMER,將Table2的TableName屬性設為EMPLOYEE。將兩個Table的Active屬性都設為True,使它們有效。

6> 下面的步驟將把事情變得有趣。選擇名為Customers的GroupBox中的DataSource,將其DataSet屬性設為Table1。一般的 你不能直接選擇組件中的對象,但是框架是個例外。你可以選擇框架中的任何對象,操作它們的屬性。然后,選擇名名為Customers的GroupBox中 DataSource,其DataSet屬性設為Table2。

7> 最后,設置好所有的DBEdits。將名為Customers的 GroupBox中的三個DBEdits的DataField屬性分別設為CUST_NO,CONTACT_FIRST和CONTACT_LAST。對 Employees中的,設置DataField屬性為EMP_NO,F(xiàn)IRST_NAME和LAST_NAME。

8> 保存工程并運行。

框架和繼承

1> 在上面建立的工程中,按[Shift][F12]并在窗體列表中選擇NameFrame。

2> 將DataSource的AutoEdit屬性設為False 。

3> 然后,選擇DBNavigator,展開它的VisibleButtons屬性,并設置nbInsert,nbDelete,nbEdit,nbPost 和nbCancel標志為False。

4> 現(xiàn)在看一下你的主窗體,注意兩個NameFrame的后代都繼承了你對框架做的修改。

重載包含組件的屬性

框架的優(yōu)點之一(與VFI一樣)是你可以改變框架中對象的屬性和事件處理函數(shù)。這些修改重載了繼承的值。說得具體些,隨后對初始框架的重載屬性的修改將不 改變后代的重載屬性的值。

1> 在名為Customers的GroupBox中,選擇標題為"ID"的label,在Object Inspector將其Caption屬性改為 "Customer No:"。現(xiàn)在選擇名為Customers的GroupBox中的標題為"ID"的Label,其Caption屬性改為 "Employee ID:"。

2> 按[Shift][F12]并選擇NameFrame。將標題為"ID"的Label的Caption屬性改為Identifier。

3> 回到主窗體,注意Label的Caption屬性沒有變?yōu)镮dentifier。它們仍保持它們的重載值。

4> 這一效果是由保存在DFM文件中的信息實現(xiàn)的。

注意所有其屬性改變過的在框架中的對象,都出現(xiàn)在DFM文件中的內置部分。但是,這一部分僅列出那些改變的值,所有其它屬性值要么按初始框架的值設置(它 們已經(jīng)存儲在框架的DFM文件中),要么按每一組件的默認類定義值。

就象窗體中的對象的事件處理函數(shù)是窗體類的公開方法,框架中的對象的事件處理函數(shù)也是框架類的公開方法。(代碼段實際上并沒有說框架的這些方法是公開的, 而是它們在框架聲明的默認可見部分被聲明,其可見性默認是公開的。)

框架節(jié)省資源

在聲明窗體中有兩個框架。我們已經(jīng)討論了TwoButtonFrame框架。第二個框架顯示公司標志,名為LogoFrame。

LogoFrame在FramDemo的多個窗體中出現(xiàn)。一種替代使用框架的做法是在每個窗體中設置一個Image對象來顯示公司標志。但是,用框架可以 顯著減少需要編譯到EXE文件中的資源,生成一個較小的可執(zhí)行文件。

如果把一個TImage放在窗體中,窗體的DFM文件將必須包含整個公司標志的二進制數(shù)表示。而且,每一個含有圖象的窗體都重復保存這一資源。但用框架 時,資源只定義一次。

簡化框架的使用

在一單個、小的工程中,使用組件面板Standard頁上的框架組件是相當簡單的。但是對更大的、或是要在多個程序中使用同一個框架的情況下,你需要使操 作更簡單。幸運的是,Delphi允許你將單個框架放到組件面板,使這些框架不需要另外的步驟而簡單的重復使用。框架也可放到對象庫 (Object Repository)中,使它可以簡單的拷貝。這兩個技術都將在下面敘述。

把框架添加到組件面板

把一個框架添加到組件模板,你可以使放置這一框架變得與其它組件一樣簡單。與之相比,用組件模板的Standard頁中的框架組件需要四步,而且限制你僅 能放置在你的工程中已經(jīng)定義的框架。將一特定框架添加到組件模板中,需要:

1> 保存框架。如果你要在多個程序中使用一個框架,我非常建議你將框架保存到升級Delphi時不會被刪除的目錄中。例如,建立一個名為 c:\Program Files\Borland\DelphiFrames的目錄來保存你的框架。

2> 選擇框架并在上面點鼠標右鍵,選擇Add to Palette,Delphi會顯示Component Template Information對話 框。

3> 在Component name欄定義框架組件的名稱,在Palette page欄填寫你想讓框架在組件模板內出現(xiàn)的頁。如果你已為框架建立了一個 24 x 24象素、16色的圖標,點擊Change按鈕來選擇這個BMP文件。當你完成后,點擊OK按鈕。

從組件模板使用框架

要使用一個已添加到組件面板的框架,在組件面板中選擇你保存框架的頁,選擇框架圖標并在你要框架后代出現(xiàn)的窗體上拖出該框架。這個過程僅需這兩步。

將框架添加到對象庫

把框架添加到對象庫,你可以使拷貝該框架到一個新工程的過程變得簡單。尤其重要的是對象庫提供放置繼承的框架到新的工程的能力,它使框架和它的祖先之間的 關系得以保持。要將框架添加到對象庫,需要以下步驟:

1> 保存框架。除了保存框架到Delphi的OBJREPOS目錄或是共享目錄,你還可以使用你保存添加到組件模板中的框架的目錄。如果你使用共享庫,將框架 保存到共享目錄特別好,它允許多個開發(fā)者共享框架。

2> 在框架上面點鼠標右鍵,選擇Add To Repository,Delphi會顯示Add To Repository對話框。

3> 就像你添加其它模板到Object Repository一樣填寫Add To Repository對話框。完成后點擊OK按鈕。

從對象庫中使用框架

按照下面步驟來從對象庫中使用框架:

1> 選擇 File | New.

2> 選擇你在Object Repository保存框架模板的頁。

3> 選擇代表框架的圖標,然后選擇Inherit單選按鈕。

4> 點擊OK按鈕,添加框架的繼承版本到你的工程

如果你選擇Copy單選按鈕而不是Inherit單選按鈕,添加進的框架將是原框架的一個拷貝。當你需要創(chuàng)建一個新的框架,但又不想保持它與原框架的關系 時是很有用的。

把需要重復使用的框架添加到組件模板與添加到對象庫有不同的效果嗎?答案是:"Yes!"。在 大多數(shù)情況,你要把你頻繁使用的框架添加到組件面板中。這樣當你放置框架時,你得到的是框架的一個實例。你然后可以容易的修改這一實例 的屬性和事件處理函數(shù),就象本文先前介紹的一樣。與之相比,從對象庫放置一個框架會產生一個新的類,而不是一個實例。這 個類要么是原來的拷貝要么是原來的繼承,取決于你在Object Repository對話框中選擇了哪一個單選按鈕。如果你要在工程中 使用框架,添加一個框架實例比定義一個框架新類有意義的多。如果是這一目的,將框架保存到組件面板是最好的方法。

有一種情況你要使用對象庫:當你需要專門創(chuàng)建一框架層次,并且每一個框架后代引進了附加的對象、方法或事件處理函數(shù)。這時,對象庫提 供的繼承性使創(chuàng)建后代變得簡單。定義好需要經(jīng)常使用框架的后代,可以將它們添加到組件面板以簡化它們的使用。

摘自:http://www.itqun.net/content-detail/138582_2.html

總結

以上是生活随笔為你收集整理的Delphi 框架Frames的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产午夜性春猛交ⅹxxx | 爱操在线 | 国产精品入口麻豆九色 | 国产馆在线观看 | 中日韩中文字幕 | 欧美日韩一级二级 | 毛片高清免费 | 妺妺窝人体色www聚色窝仙踪 | 亚洲片国产一区一级在线观看 | 美女操出白浆 | 中国极品少妇xxxx做受 | 国产精品s色 | 在线视频综合网 | 日韩av在线播放网址 | 成人av一区二区三区 | 性一交一乱一精一晶 | 中文在线a√在线 | 我们俩电影网mp4动漫官网 | 国产黄色网 | 国产一av| 爱草在线视频 | 色综合久久综合 | 香蕉视频久久久 | 中文亚洲字幕 | av综合网站 | 国产精品无码免费播放 | 男女搞黄网站 | 顶级嫩模啪啪呻吟不断好爽 | 吃奶av | 免费在线视频一区二区 | 中文字幕免费视频观看 | 色婷婷网 | 精品无码久久久久久国产 | 怡红院精品视频 | 一区二区三区av | 成年人在线视频 | 一级二级三级黄色片 | 日韩有码在线视频 | 97视频在线免费观看 | 欧美黄色视屏 | 国产成人精品一区二区在线观看 | 亚洲色图第一页 | 午夜毛片在线 | www在线观看视频 | 日本丰满熟妇bbxbbxhd | 国产精品一区二区不卡 | 与亲女洗澡时伦了毛片 | 美女100%视频免费观看 | 日韩欧美123 | 国产成人精品一区二区三区 | 久久精精品久久久久噜噜 | 一本色道久久综合亚洲精品图片 | 久久精品人人爽 | 久久伊人在 | 欧美a级黄色 | 琪琪秋霞午夜被窝电影网 | 初高中福利视频网站 | 污导航在线 | 第一色综合 | 日本视频在线看 | 久国产视频| 久久综合加勒比 | 精品伦精品一区二区三区视频密桃 | 欧美成人精品一区二区综合免费 | 欧美91视频| 在线日本中文字幕 | 日韩专区视频 | 蜜桃臀aⅴ精品一区二区三区 | 狠狠干狠狠撸 | 免费看一级 | 97视频在线免费观看 | 免费国产在线视频 | 性色视频 | 国产亚洲精品久久久久丝瓜 | 女生被草 | 亚洲天堂女人 | 亚洲成人激情av | 日韩草比 | 久久久久久网 | 高跟鞋和丝袜猛烈xxxxxx | 久久成人免费电影 | 日韩欧美中 | 久久久久久国产精品日本 | 在线观看成人免费视频 | 女同性做爰全过程 | 蜜臀久久精品久久久久久酒店 | 欧美极品视频在线观看 | 欧美一级二级三级视频 | 一级片日韩 | 国产a级片视频 | 国产网站在线看 | av大片网 | 精品一区日韩 | 国产又粗又猛又黄又爽无遮挡 | 中文字幕女同女同女同 | 国产精品毛片一区二区在线看舒淇 | 国产suv一区二区 | 九色在线观看视频 | 极品少妇xxxx精品少妇偷拍 |