程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VB的“問”與“答”

VB的“問”與“答”

編輯:VB綜合教程
作為一個VB愛好者,一個人在黑暗中摸索真是太累了。現將我摸索的一些心得貢獻給大家,希望起拋磚引玉的作用(我用的是VISUALBASIC50中文版)。
  1.問題:有一程序含有兩個Form,其中Form2的Picture屬性為一張BMP位圖,而以下是Form1顯示Form2的程序:
  Form2Show
  '延遲2秒
  Time1=Timer
  WhileTimer-Time1<2
  Wend
  以上程序的目的是希望顯示Form2的圖片兩秒之後,Form1才繼續執行,結果竟然是2秒之後,Form2的圖片才顯示出來。為什麼圖片會延遲顯示呢?
  回答:一般而言,繪圖會比一般的指令費時,因此,繪圖指令的優先級較低,也就是說,直到其他指令都執行完畢之後,才會輪到繪圖指令的執行,在以上的Form1程序中,由於Form2Show之後,又執行了一個費時2秒的While循環,因此,Form2的圖片必須等待2秒鐘,才會被描繪出來。
  可按如下方法解決:
  在While循環中增加DoEvents,如下:
  Form2Show
  '延遲2秒
  Time1=Timer
  WhileTimer-Time1<2
  DoEvents
  Wend
  DoEvents的作用是短暫地停止執行,使得優先級較低的繪圖指令被執行,於是Form2的圖片便可以在While循環執行的階段就被顯示出來。
  2.問題:在編數據庫程序時,根據幫助來聲明變量,如下:
  DimdbAsDatabase
  DimrsAsRecordset
  結果程序編譯時VB竟然說“用戶定義類型未定義”,是何原因呢?
  回答:Database及Recordset屬於DAO(DataAccessObject)模塊裡的,不是VB內定的,因此必須將DAO的定義包含在“引用中”,VB才會認得Database及Recordset,操作方法是選取功能表的“工程(P)”,待出現“引用(N)”窗時,再選取MicrosoftDAO30ObjectLibrary或MicrosoftDAO25/30CompatibilityLibrary(兼容Access20以前的版本)。(如果使用的是16位版本的VB,則選取MicrosoftDAO25ObjectLibrary)
  3.問題:我想控制I/O,VB是否有類似QuickBASIC的INP、OUT指令可使用?
  回答:VB並無INP及OUT的指令可用,即使是Windows的API函數也沒有類似的函數,原因是Windows不希望應用程序直接控制硬件。如果想控制RS232的通訊口,則VB專業版(或企業版)有現成的“MSComm”控件可用。
  4.問題:如何創建橢圓形的窗體?
  回答:當然是用Win32API函數了,用VB50中文版的API文本查看器將下列API函數加入窗體的通用代碼中,就可以做一個橢圓窗口。
  PrivateDeclareFunctionCreateEllipticRgnLib″gdi32″(ByValX1AsLong,ByValY1AsLong,ByValX2AsLong,ByValY2AsLong)AsLong
  PrivateDeclareFunctionSetWindowRgnLib″user32″(ByValhWndAsLong,ByValhRgnAsLong,ByValbRedrawAsBoolean)AsLong
  在Form_Load()窗體中加入如下代碼:
  PrivateSubForm_Load()
  Show
  SetWindowRgnhWnd,CreateEllipticRgn(0,0,300,200),True
  EndSub
  上述代碼可以創建一個橢圓形狀的窗口。->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved