天天看點

在頂層表單實作動态顯示視窗清單

在頂層表單實作動态顯示視窗清單

' 在頂層表單實作動态顯示視窗清單

在頂層表單實作動态顯示視窗清單

'     我從一開始程式設計,就徹底抛棄了_screen,而改用頂層表單。我個人感覺頂層表單做出的系統顯示專業些,也許是因為我對_screen了解不夠深入吧。選用頂層表單作為系統主表單,就意味着很多東西必須自己去實作。例如如何實作動态顯示視窗清單,以為是我的個人經驗,希望能抛磚引玉!

在頂層表單實作動态顯示視窗清單

' *************************

在頂層表單實作動态顯示視窗清單

' 基于base.vcx中的_form類

在頂層表單實作動态顯示視窗清單

' *************************

在頂層表單實作動态顯示視窗清單

' ''''''*!* LoadValues事件代碼:

在頂層表單實作動态顯示視窗清單

' ''''''*-- 表單狀态設定

在頂層表單實作動态顯示視窗清單

With  This

在頂層表單實作動态顯示視窗清單

 .cFormName  =  .Caption

在頂層表單實作動态顯示視窗清單

 .JustName  =  FindWin(This)

在頂層表單實作動态顯示視窗清單

 .Name  =   " _ "   +  Alltrim(Str(.hWnd))

在頂層表單實作動态顯示視窗清單

 .Icon  =   " ImagesLogo.ico "

在頂層表單實作動态顯示視窗清單

 .MDIForm  =  .F.

在頂層表單實作動态顯示視窗清單

 .ShowTips  =  .T.

在頂層表單實作動态顯示視窗清單

 .BorderStyle  =   2

在頂層表單實作動态顯示視窗清單

 .oldWidth  =  .Width

在頂層表單實作動态顯示視窗清單

 .oldHeight  =  .Height

在頂層表單實作動态顯示視窗清單

 .chkFormType()  && 檢查表單類型

在頂層表單實作動态顯示視窗清單

 ToBar (.cFormName)

在頂層表單實作動态顯示視窗清單

Endwith

在頂層表單實作動态顯示視窗清單

' '''''*-- 儲存表機關置

在頂層表單實作動态顯示視窗清單

Local  cThisName

在頂層表單實作動态顯示視窗清單

cThisName  =  This.JustName

在頂層表單實作動态顯示視窗清單

If  Type( " _Screen.&cThisName " )  =   " U "   Then

在頂層表單實作動态顯示視窗清單

 _Screen.AddObject(cThisName, " Custom " )

在頂層表單實作動态顯示視窗清單

  With  _Screen. & cThisName.

在頂層表單實作動态顯示視窗清單

  .AddProperty( " LEFT " , 0 )

在頂層表單實作動态顯示視窗清單

  .AddProperty( " TOP " , 0 )

在頂層表單實作動态顯示視窗清單

 Endwith

在頂層表單實作動态顯示視窗清單

End   If

在頂層表單實作動态顯示視窗清單

With  _Screen. & cThisName.

在頂層表單實作動态顯示視窗清單

 This.Left  =  This.Left  +  .Left

在頂層表單實作動态顯示視窗清單

 This.Top  =  This.Top  +  .Top

在頂層表單實作動态顯示視窗清單

  ' '''''*-- 計算表單在螢幕中的位置

在頂層表單實作動态顯示視窗清單

  If  Sysmetric( 2 )  -  (This.Top  +  This.Height)  >=   140   Then

在頂層表單實作動态顯示視窗清單

  .Left  =  .Left  +   20

在頂層表單實作動态顯示視窗清單

  .Top  =  .Top  +   20

在頂層表單實作動态顯示視窗清單

  Else

在頂層表單實作動态顯示視窗清單

  .Left  =   0

在頂層表單實作動态顯示視窗清單

  .Top  =   0

在頂層表單實作動态顯示視窗清單

  End   If

在頂層表單實作動态顯示視窗清單

Endwith

在頂層表單實作動态顯示視窗清單

' '''''*-- 重新整理視窗清單

在頂層表單實作動态顯示視窗清單

If  !This.nWindowType  =   1   Then

在頂層表單實作動态顯示視窗清單

  If   Vartype (_Screen.WindowListText)  =   " U "   Then

在頂層表單實作動态顯示視窗清單

  _Screen.AddProperty( " WindowListText " , "" )

在頂層表單實作動态顯示視窗清單

  End   If

在頂層表單實作動态顯示視窗清單

 cFormInf  =  Alltrim(This.Name)  +   " # "   +  Alltrim(This.Caption)  +   " , "

在頂層表單實作動态顯示視窗清單

 _Screen.WindowListText  =  _Screen.WindowListText + cFormInf

在頂層表單實作動态顯示視窗清單

 This.AddWindowList()

在頂層表單實作動态顯示視窗清單

End   If

在頂層表單實作動态顯示視窗清單

' '''''*-- 重新整理工具條

在頂層表單實作動态顯示視窗清單

If  !Type( " oMytoolsbar " )  =   " U "   Then

在頂層表單實作動态顯示視窗清單

  Local  tForm,cForm,o

在頂層表單實作動态顯示視窗清單

 tForm  =  Lower(Alltrim(This.JustName))

在頂層表單實作動态顯示視窗清單

  For   Each  o In oMytoolsbar.Controls

在頂層表單實作動态顯示視窗清單

  cForm  =  Alltrim(o.Name)

在頂層表單實作動态顯示視窗清單

  cForm  =  Lower(Substrc(cForm,  4 ,  Len (cForm)))

在頂層表單實作動态顯示視窗清單

   If  cForm  =  tForm  Then

在頂層表單實作動态顯示視窗清單

   o.Enabled  =  .F.

在頂層表單實作動态顯示視窗清單

    Exit

在頂層表單實作動态顯示視窗清單

   End   If

在頂層表單實作動态顯示視窗清單

  Next

在頂層表單實作動态顯示視窗清單

End   If

在頂層表單實作動态顯示視窗清單
在頂層表單實作動态顯示視窗清單

' '''''*!* AddWindowList事件代碼

在頂層表單實作動态顯示視窗清單

' '''''*-- 增加視窗清單

在頂層表單實作動态顯示視窗清單

With  _Screen

在頂層表單實作動态顯示視窗清單

 nListForm  =  Alines(aWindowList, .WindowListText,  " , " )

在頂層表單實作動态顯示視窗清單

 Define Bar  4  Of _4 Prompt  " - "

在頂層表單實作動态顯示視窗清單

  For  i  =   1   To  nListForm

在頂層表單實作動态顯示視窗清單

  cFormInf  =  Strtran(aWindowList[i], " , " , "" )

在頂層表單實作動态顯示視窗清單

  cFormName  =   Left (cFormInf, At( " # " , cFormInf)  -   1 )

在頂層表單實作動态顯示視窗清單

  cFormInf  =  Substr(cFormInf, At( " # " , cFormInf)  +   1 )

在頂層表單實作動态顯示視窗清單

  cFormInf  =   " < "   +  Alltrim(Str(i))  +   " . "   +  cFormInf

在頂層表單實作動态顯示視窗清單

  _FontName  =  Alltrim(.MenuFontName)

在頂層表單實作動态顯示視窗清單

  _FontSize  =  .MenuFontSize

在頂層表單實作動态顯示視窗清單

  Define Bar i + 4  Of _4 Prompt  " &cFormInf "  Font  " &_FontName " ,_FontSize

在頂層表單實作動态顯示視窗清單

   * On  Selection Bar i + 4  Of _4 Activate Window  & cFormName Top

在頂層表單實作動态顯示視窗清單

   On  Selection Bar i + 4  Of _4 ActivateWindow( " &cFormName " )

在頂層表單實作動态顯示視窗清單

 Endfor

在頂層表單實作動态顯示視窗清單

Endwith

在頂層表單實作動态顯示視窗清單
在頂層表單實作動态顯示視窗清單

' '''''*!* DeleteWindowList事件代碼

在頂層表單實作動态顯示視窗清單

' '''''*-- 删除視窗清單

在頂層表單實作動态顯示視窗清單

Release Bar  4  Of _4  && 删除 " - "

在頂層表單實作動态顯示視窗清單

With  _Screen

在頂層表單實作動态顯示視窗清單

 nListForm  =  Alines(aWindowList, .WindowListText,  " , " )

在頂層表單實作動态顯示視窗清單

  For  i  =   1   To  nListForm

在頂層表單實作動态顯示視窗清單

  Release Bar i + 4  Of _4

在頂層表單實作動态顯示視窗清單

 Endfor

在頂層表單實作動态顯示視窗清單

 cFormInf  =  Alltrim(This.Name)  +   " # "   +  Alltrim(This.Caption)  +   " , "

在頂層表單實作動态顯示視窗清單

 .WindowListText  =  Strtran(.WindowListText, cFormInf,  "" )

在頂層表單實作動态顯示視窗清單

Endwith

在頂層表單實作動态顯示視窗清單
在頂層表單實作動态顯示視窗清單

' '''''*!* chkFormType

在頂層表單實作動态顯示視窗清單

' '''''*-- 判别目前表單類型

在頂層表單實作動态顯示視窗清單

Local  lFormType

在頂層表單實作動态顯示視窗清單

lFormType  =  .T.

在頂層表單實作動态顯示視窗清單

Try

在頂層表單實作動态顯示視窗清單

 lFormType  =  PEMSTATUS(This.Parent,  " WindowList " ,  5 )

在頂層表單實作動态顯示視窗清單

Catch

在頂層表單實作動态顯示視窗清單

 lFormType  =  .F.

在頂層表單實作動态顯示視窗清單

Finally

在頂層表單實作動态顯示視窗清單

 This.FormType  =  lFormType

在頂層表單實作動态顯示視窗清單

Endtry  

繼續閱讀