电竞比分网-中国电竞赛事及体育赛事平台

分享

Visual FoxPro Grid——一個小技巧和一個日歷類

 Alkaid2015 2016-04-12

http://www./SPSBlog/PermaLink.aspx?guid=878c1b11-1770-405c-92ea-cdbe2c838dfa

Visual FoxPro 中的 Grid
    我的意見是,有時,針對 Visual FoxPro 中的 Grid ,有著不公正的態(tài)度。雖然它確實(shí)有很古怪的地方,但它也是一個功能強(qiáng)大的控件,我甚至用它工作的很愉快。它的簡單另人驚訝。你能對 column 有多重的控制,甚至可以將一個 Grid 放置到 Grid 中,所以,本質(zhì)上,你可以在一個單元格顯示很多記錄。

    在這一篇,我想向你展示一些 Grid 控件鮮為人知的特性。如果你了解了這些特性,你就成為了解它的人之一。當(dāng) Grid 刷新或重繪時,它將訪問 columns 包含的每個控件的 backstyle 屬性,在這里你可以做任何事,來單獨(dú)控制 Grid 中顯示。

來自 MS Fox Team 的一些幫助
    請?jiān)试S我來嘗試說明... 假設(shè)你有一個 Grid ,它只有一個 column ,并且包含 Textbox1 。如果你通過代碼設(shè)置 Textbox1 的背景色,假設(shè),設(shè)置為紅色,那么,顯示在 column1 中的每個單元格都會是紅色。那么,如何得到動態(tài)的顏色(在同一 column 的單元格具有不同的顏色)?是的,MS Fox Team 為我們提供了 column 對象的一些動態(tài)(dynamic)屬性,它們作用于單元格(DynamicAlignment、DynamicBackColor、DynamicCurrentControl、DynamicFontBold、DynamicFontItalic、DynamicFontName、DynamicFontOutline、DynamicFontShadow、DynamicFontSize、DynamicFontStrikeThru、DynamicFontUnderline、DynamicForeColor 和 DynamicInputMask)。這些都是非常有用的,并且,我假設(shè) DynamicColor 可以很好的工作,來改變 Grid 中 column 里的單個單元格的背景色。但是,如果你想做更復(fù)雜的怎么辦?如果你在 column 中有一個包含多個控件的容器,并且你想完全的動態(tài)定義每個控件的前景色和背景色,或者你想在 Grid 中的單元格顯示不同的圖片,怎么辦?

開發(fā)者通常采用的解決方案
    針對這些問題的一個解決方法是,對于 Grid 的 column 包含多個控件,使用 DynamicCurrentControl 來來決定顯示哪些。例如一個 Textbox 具有紅色背景,而另一個具有白色的背景,或者對于不同的圖片使用不同的 image 控件。

    一些 Visual FoxPro 開發(fā)者會采用另一個巧妙的解決方法,子類化 column 對象并與一個并不使用的 column 動態(tài)屬性掛鉤來解決其他問題(例如 DynamicForeColor)。如果 ForeColor 被設(shè)置為 1 ,那么就執(zhí)行它,如果 forecolor 被設(shè)置為 2就做其他的事情,如果forecolor 被設(shè)置為 3... 依此類推。這個方法和前面的方法都是有效的,這里,還有另一種方法。

另一種方法
    根據(jù)前面的說明,column 中當(dāng)前控件的 backstyle 會被訪問,而且,它并不僅僅訪問一次,Grid 中每個可見單元格都會訪問。所以,使用這個我們幾乎可以為所欲為,動態(tài)格式化也好,顯示什么也好。想要顯示不同的圖片嗎?子類化一個容器,并在其中放入一個 image 控件,然后將容器置于 column 中。然后,在 backstyle_access 方法中(你需要在子類化的容器中添加這個 access 方法)設(shè)置所包含的 image 控件的 picture 屬性值為數(shù)據(jù)源中的一個字段,這個字段包含 image 控件 backstyle_access 方法中的不同路徑。

this.picture = crsImages.Paths

    提供的下載包含一個這樣的示例。當(dāng)你運(yùn)行示例時,它會詢問你包含圖象文件的目錄。如果你不想使用它,你可以選擇項(xiàng)目所在文件夾,因?yàn)槲乙呀?jīng)在其中包含了下面所顯示的屏幕截圖。這個解決方案更有效率。這比在Grid 的 column 中針對你想顯示的每一個圖象添加一個 image 控件要好的多。如果有 100 個圖象,我企不要添加 100 個 image 控件?如果這么做,我寧愿死。

日歷類和真實(shí)的示例
    好了,怎樣才能把這些應(yīng)用到現(xiàn)實(shí)問題中呢?哪一類問題可以很好的使用 backstyle_access 動態(tài)的改變?nèi)萜髦械捻?xiàng)目呢?各種個樣的!為了示范,這里有一個非常有用的例子,我做了一個日歷類的演示。我已經(jīng)使用 Grid 控件創(chuàng)建了一個超級日歷類。它可以很好的示范在 Grid 中使用 backstyle_access 的強(qiáng)大,更不要說 Visual FoxPro 是多么強(qiáng)大了。下面是項(xiàng)目源代碼的下載鏈接和一些屏幕截圖(你知道該期待什么了)。在源代碼的文件夾中有一個可執(zhí)行文件來運(yùn)行示例,如果你喜歡,你可以單獨(dú)的運(yùn)行其中的表單。這個示例是使用 Visual FoxPro 9.0 創(chuàng)建的,所以,如果你使用先前的版本,你需要修改代碼,或者,更好的辦法,就是升級你的 Visual FoxPro !還會有更偉大的事情到來,Visual FoxPro 前進(jìn)!

下載 VFP 日歷示例和源代碼 (大約 91 KB)

Visual FoxPro Grid——一個小技巧和一個日歷類 - openvfp - openvfp的博客
這是一個簡單的日歷

Visual FoxPro Grid——一個小技巧和一個日歷類 - openvfp - openvfp的博客
日歷類的一些高級特性的示范Visual FoxPro Grid——一個小技巧和一個日歷類 - openvfp - openvfp的博客
使用日歷類改良的日期和日期時間控件

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多