征服VF中的「白框」

2021-04-14 15:04:18 字數 3998 閱讀 3973

當我們用visual foxpro 6.0開發資料庫應用程式時,生成.exe的可執行檔案執行時總是有一"白框"―visual

foxpro 6.0的主視窗(如圖1),有的人可能並不需要它(儘管就像後面要提到的那樣,它的功能非常的強大),有什麼方法可以將其遮蔽嗎?

其實,在vfp6.0中,我們有很多方法可以遮蔽此視窗。微軟msdn library visual studio

6.0文件中有關vfp6.0的部分指出,系統變數_screen表示 visual foxpro

6.0的主視窗,我們可以通過呼叫視窗的方法程式或者修改其相關屬性來達到隱藏該視窗的目的:

方法一:呼叫主視窗的hide方法程式。

格式:_screen.hide

在運用時將其放入主控程式中即可。

方法二:修改主視窗的布局屬性(left和width、top和height)。

格式1:_screen.left=-n

_screen.width=m&&m和n是兩個正整數,且m格式:_screen.visible=.f.

有的書上曾說,方法一和方法三無效,可是經過我的實踐,它確實可以達到隱藏visual foxpro 6.0的主視窗的目的,

不管是在visual foxpro 6.0的開發環境中,還是在編譯出來的可執行程式中。

visual foxpro

6.0的主視窗可以支援很多像在開發環境中的主視窗一樣的功能,比如預覽報表,顯示輸出型別為螢幕的的查詢結果(類似select * from

table),輕鬆使用由*******(工具欄)類派生的工具欄子類,從輕鬆實現像visual foxpro 6.0那樣的工具欄效果,等等。

但是有乙個不那麼方便的地方就是在主視窗中新增控制項不那麼方便,你可能要用到視窗類addobject成員函式才行。

下面我們就通過乙個例項來**如何有效利用"白框"。

1.用vfp新建一專案,取名為whitebox.pjx(白框)。

2.新建一自由表,取名為whitebox.dbf,表結構以及內容自己決定,與本文的討論無關。

3.新建一選單,取名為whitebox.mnx,內容自定,注意:在用自己設計的表單作為主表單時,載入到其上面的選單在建立時,要開啟"顯示"->"常規選項"視窗,勾選"頂層表單"。但此處不用這樣。

4.新建一報表,取名為whitebox.frx,以whitebox.dbf的資料為內容。

5.新建一主控程式,取名為main.prg,並將其設為主檔案。

此程式要完成主視窗本身的屬性的設定,介面元素的設計與載入,包括載入主選單,設計與載入工具欄,設計與載入視窗客戶區的控制項(如按鈕、**)。

use whitebox&&開啟表,建立資料環境

*主視窗本身的屬性的設定

with _screen

.caption="whitebox"

.icon="whitebox.ico"

*.backcolor=rgb(192,192,192)&&設定背景色為灰色,這裡不用它,而用背景,見下一語句。

*載入主選單

do whitebox.mpr

*介面元素的設計與載入

*載入工具欄

public tbrwhitebox

tbrwhitebox = createobj('my*******')

tbrwhitebox.dock(0)&&讓其一開始就處於選單欄下方

tbrwhitebox.show&& 顯示工具欄

*載入視窗客戶區的控制項(如按鈕、**)

_screen.addobject('cmdpreviewreportbtn1','cmdpreviewreportbtn')&&載入"預覽報表"按鈕到主視窗客戶區

_screen.addobject('cmdquerybtn1','cmdquerybtn')&&載入"顯示查詢結果"按鈕到主視窗客戶區,其中,cmdquerybtn1為按鈕名,cmdquerybtn為類名

*以下兩句為令新增的按鈕可見

_screen.cmdpreviewreportbtn1.visible=.t.

_screen.cmdquerybtn1.visible =.t.

*載入**控制項並進行初始化

_screen.addobject('grid1','grid')&&載入**控制項。注意我在這裡使用了另外一種方法來將控制項新增到主視窗中,即直接使用已存在的類來建立物件,然後修改其屬性,不像前面那樣將要使用的控制項從已存在的類派生出來,再用它來建立物件,這時不用再修改屬性,因為此類已被設定成所需要的形式。

with _screen.grid1&&初始化

recordsourcetype=0

.recordsource="whitebox"

.left=250

.top=100

.height=250

.visible=.t.

endwith

*進入事件迴圈

read events

*定義工具欄、按鈕。注意:定義區是程式的最後一部分,不要在此區域內寫其它非類定義**,否則不會被執行。

define class my******* as *******&&定義工具欄

add object btnpreviewreport as commandbutton

add object sep1 as separator

add object btnquery as commandbutton

btnpreviewreport.autosize=.t .

btnpreviewreport.caption = "預覽報表"

btnpreviewreport.picture ="report.ico"

btnquery.autosize=.t.

btnquery.caption = "顯示查詢結果"

btnquery.picture = "query.ico"

left = 1

top = 1

width = 25

caption = "工具欄"

procedure btnpreviewreport.click

report form whitebox preview

endproc

procedure btnquery.click

select * from whitebox

endproc

enddefine

define class cmdpreviewreportbtn as commandbutton&&定義"預覽報表"按鈕

caption = '預覽報表(/procedure click

report form whitebox preview

enddefine

define class cmdquerybtn as commandbutton&&定義"顯示查詢結果"按鈕

caption = '顯示查詢結果(/procedure click

select * from whitebox

enddefine

6.新增上面程式中用到的相應的資源檔案到專案中。主要是background.jpg、query.ico、report.ico、whitebox.ico

4個檔案。

連編專案檔案,得到可執行檔案whitebox.exe,執行它,如圖2、3、4所示。其中圖3、4分別是

21:09 04-3-9

初學解決matplotlib中中文白框的問題

要實現的效果如下 正常要顯示這樣,但是中文的地方顯示確實空白框圖 分析原因 不提示錯誤,應該是沒有使用中文字型 解決方式 1 查詢matplotlib的配置檔案matplotlibrc位置 在python中查詢方式 python 3.8.3 default jul 2 2020,17 30 36 m...

網頁設計中的留白

在設計中,留白並非只是說在畫面中留出一塊白色或者某個顏色,留白的真正含義其實是指留出空間感,去除多餘的裝飾,簡化畫面,使整體看起來是簡約的。留出空間感,留白可以使畫面的空間感大大的增強,留的白越多,主體就越突出。如下圖,我相信每個人第一眼看到的都會是那個人和柱子的存在,這就是留出空間感的意義 留出呼...

基於Kubernates的istio中白名單配置

在kubernates中,引入了istio管理流量,這時所有的入口流量均通過istio中的ingressgateway 至目標服務,若是想要配置白名單,限制訪問流量,那麼需要建立乙個istio的authorizationpolicy資源,該資源通過label繫結ingressgateway的pod。...