標題:
UserForm顯示問題
[打印本頁]
作者:
clio
時間:
2016-3-31 13:29
標題:
UserForm顯示問題
各位前輩
小的設定一個UserForm,執行時會根據,輸入的資料大小,而改變視窗的相對應大小,會先計算資料的筆數,再設定好視窗大小,才執行Show,但是有時會很正常的呈現,有時又會沒有照我設定的去改變大小
造成有些控制項不見,要是我用F8一步步的執行,就都正常,這個有解決的方法嗎?
作者:
clio
時間:
2016-3-31 14:56
各位前輩,我後來試著很多次,在我的程式中加入DoEvents,而且是加在那一個位置上,就可以了,但是我也不清楚為什麼,要是有清楚的前輩,能否幫我解疑,感謝您
With UFLB
.Caption = UFListBox_Caption
.ListBox1.ListStyle = fmListStyleOption '讓前端有一個勾選的框,可以更清楚是否有被選取
.ListBox1.MultiSelect = LB_MultiSelect_Lng
.ListBox1.List = LB_List_AR_Str
'UserForm1的InsideHeight , 與InsideWidth,都為唯讀,不能改變其數值,這二個數值是指,UserForm的內部空間大小,因為UserForm還有抱括標頭與邊線,所以要取出其差距,再來加上InsideHeight,來設定Height;加上InsideWidth來設定Width。
HeightGap_Sng = .Height - .InsideHeight
WidthGap_Sng = .Width - .InsideWidth
.ListBox1.Height = LB_Height_Sng
.ListBox1.Width = LB_Width_Sng
'上面二值要決定ListBox1的大小
DoEvents
'需要加這一行,要不然有時下方的二個控制項OK與Cancel會無法顯示出來
.OK.Height = OKC_Height_Sng
.OK.Width = OKC_Width_Sng
'上面二值要決定OK的大小
.Cancel.Height = CancelC_Height_Sng
.Cancel.Width = CancelC_Width_Sng
'上面二值要決定Cancel的大小
.ListBox1.Top = 0
.ListBox1.Left = 0
.OK.Top = .ListBox1.Top + .ListBox1.Height
.OK.Left = 0
.Cancel.Top = .OK.Top
.Cancel.Left = .OK.Left + .OK.Width
'上述是決定這三個控制項的排列位置
.Height = .ListBox1.Height + .OK.Height + HeightGap_Sng
.Width = .ListBox1.Width + WidthGap_Sng
'設定UFListBox的呈現大小
.ListBox1.ListIndex = -1
'初始化ListBox1為無任何勾選
.Show 'Initialize在前面「Set UFLB = New UFListBox」執行過了,所以這邊Show不會再執行
End With
作者:
jackyq
時間:
2016-3-31 16:45
原本 Height 的設定在 ListStyle = fmListStyleOption 之後
.ListBox1.ListStyle = fmListStyleOption
.ListBox1.MultiSelect = LB_MultiSelect_Lng
.ListBox1.List = LB_List_AR_Str
......
.ListBox1.Height = LB_Height_Sng
.ListBox1.Width = LB_Width_Sng
把他改成 在 ListStyle = fmListStyleOption 之前
變成
.ListBox1.Height = LB_Height_Sng
.ListBox1.Width = LB_Width_Sng
.ListBox1.ListStyle = fmListStyleOption
.ListBox1.MultiSelect = LB_MultiSelect_Lng
.ListBox1.List = LB_List_AR_Str
然後拿掉 Doevents
是否ok?
作者:
clio
時間:
2016-4-1 09:28
回復
3#
jackyq
感謝前輩,照妳這樣改就可以耶,是不是有什麼規定,要先設控制項的大小,再設定他的一些參數值,才能正常動作?
作者:
jackyq
時間:
2016-4-2 21:49
(1)
listbox 會自動縮放 height
Private Sub CommandButton1_Click()
ListBox1.ListStyle = fmListStylePlain
ListBox1.ListStyle = fmListStyleOption
End Sub
(2)
listbox 有瑕疵
連按很多次 CommandButton1 後, 你會看到瑕疵
瑕疵出現後, 移動一下 Form
Private Sub CommandButton1_Click()
h = ListBox1.Height
ListBox1.ListStyle = fmListStylePlain
ListBox1.ListStyle = fmListStyleOption
ListBox1.Height = h
End Sub
作者:
clio
時間:
2016-4-7 15:09
回復
5#
jackyq
感謝前輩的解說…
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)