??
字號:
--------------------------------------------------------------------------------
VB中MsFlexGrid控件的使用細則(收集)
>> 將文本賦值給MsFlexGrid的單元格
MsFlexGrid.TextMatrix(3,1)=”Hello”
>> 在MsFlexGrid控件單元格中插入背景圖形
Set MsFlexGrid.CellPicture=LoadPicture(“C:\temp\1.bmp”)
>>選中某個單元
MsFlexGrid.Row=1
MsFlexGrid.Col=1
>>用粗體格式化當前選中單元
MsFlexGrid.CellFontBold=True
>> 添加新的一行
使用AddItem方法,用Tab字符分開不同單元格的內容
dim row as string
row=”AAA”&vbtab&”bbb”
MsFlexFrid1.addItem row
>>怎樣來實現MSFlexGrid控件單數行背景為白色,雙數的行背景為藍色?
Dim i As Integer
With MSFlexGrid1
.AllowBigSelection = True ’ 設置網格樣式
.FillStyle = flexFillRepeat
For i = 0 To .Rows - 1
.Row = i: .Col = .FixedCols
.ColSel = .Cols() - .FixedCols - 1
If i Mod 2 = 0 Then
.CellBackColor = &HC0C0C0 ’ 淺灰
Else
.CellBackColor = vbBlue ’ 蘭色
End If
Next i
End With
>> MSFlexGrid控件如何移到最后一行
MSFlexGrid1.TopRow = MSFlexGrid1.Rows – 1
>>如何判斷msflexgrid有無滾動條
Declare Function GetScrollRange Lib "user32" (ByVal hWnd As Long, ByVal nBar As Long, lpMinPos As Long, lpMaxPos As Long) As Long
Public Const SB_HORZ = &H0
Public Const SB_VERT = &H1
Public Function VsScroll(MshGrid As MSHFlexGrid) As Boolean ’判斷水平滾動條的可見性
Dim i As Long
VsScroll = False
i = GetScrollRange(MshGrid.hWnd, SB_HORZ, lpMinPos, lpMaxPos)
If lpMaxPos <> lpMinPos Then VsScroll = True
End Function
Public Function HeScroll(MshGrid As MSHFlexGrid) As Boolean ’判斷垂直滾動條的可見性
Dim i As Long
HeScroll = False
i = GetScrollRange(MshGrid.hWnd, SB_VERT, lpMinPos, lpMaxPos)
If lpMaxPos <> lpMinPos Then HeScroll = True
End Function
>>程序運行時,想動態增加MSFlexgrid的列數
在第2列后插入一列:
Private Sub Form_Load()
Me.MSHFlexGrid1.Cols = 5
MSHFlexGrid1.Rows = 2
For i = 0 To Me.MSHFlexGrid1.Cols - 1
Me.MSHFlexGrid1.TextMatrix(0, i) = i
Me.MSHFlexGrid1.TextMatrix(1, i) = i
Next
End Sub
Private Sub Command1_Click()
Me.MSHFlexGrid1.Cols = Me.MSHFlexGrid1.Cols + 1
Me.MSHFlexGrid1.ColPosition(5) = 3
End Sub
>> 請教MSFlexGrid中的對齊功能的使用
設置MSFlexGrid1.ColAlignment(index)=n
>>得到MSFlexGrid控件中當前選中的一行
msflexgrid1.rowsel就是當前選中行
>> 如何通過代碼調節列寬度
msflexgrid1.colwidth(i)=4000
collected by junglesong
junglesong@etang.com
2004-1-21
///////////////////////////////////
If Trim(Text2.Text) <> "" Then
If str = "" Then
str = "姓名'" + Trim(Text2.Text) + "'"
Else
str = str + "and 姓名='" + Trim(Text2.Text) + "'"
End If
End If
If Trim(Text3.Text) <> "" Then
If str = "" Then
str = "單位'" + Trim(Text3.Text) + "'"
Else
str = str + "and 單位='" + Trim(Text3.Text) + "'"
End If
End If
If Trim(Text4.Text) <> "" Then
If str = "" Then
str = "級別'" + Trim(Text4.Text) + "'"
Else
str = str + "and 級別='" + Trim(Text4.Text) + "'"
End If
End If
If Trim(Text5.Text) <> "" Then
If str = "" Then
str = "性別'" + Trim(Text5.Text) + "'"
Else
str = str + "and 性別='" + Trim(Text5.Text) + "'"
End If
End If
/////////////////////////////////////////////////////////////
在VB程序中,如果你用如下語句動態創建一個Combo控件
Dim WithEvents cmbDropList As ComboBox
...
Set cmbDropList = Controls.Add("VB.ComboBox", "cmbDropList")
后,Combo控件的Style值是1 (VbComboDropDown 下拉式組合框,包括一個下拉式列表和一個文本框。可以從列表選擇或在文本框中輸入 ),若想把Style的值更改2 (VbComboDrop-DownList 2 下拉式列表。這種樣式僅允許從下拉式列表中選擇 )
通過語句Combo1.Style=2是不行的,因為Style是只讀屬性。為了突破這個限制,我動用的Spy++這個武器,對兩種不同Style值的combo控件進行偵察,發現了兩處不同
1、combo控件的style的值為1-VbComboDropDown時,combo控件窗口的Styles=&H54010242,而combo控件的style的值為2-VbComboDrop-DownList時,combo控件窗口的Styles=&H54010243
2、combo控件的style的值為1-VbComboDropDown時,combo控件里有一個Edit文本框窗口,而combo控件的style的值為2-VbComboDrop-DownList時,則沒有Edit文本框窗口
我首先試著用API函數改變combo控件窗口的Styles值,
Call SetWindowLong(Combo1.hwnd, GWL_STYLE,&H54010243)
看Combo控件有沒有什么改變,結果大失所望,
我再次試著用API函數殺死Combo控件里的那個Edit窗口,耶~~~,成功了
下面是我的實現代碼:
Private Const GWL_STYLE = (-16)
Private Const GW_CHILD = 5
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Const SW_HIDE = 0
Const SW_SHOW = 5
Dim WithEvents cmbDropList As ComboBox
Private Sub cmbDropList_Click()
MsgBox cmbDropList.Text
End Sub
Private Sub Command1_Click()
Dim ChildHwnd As Long
Set cmbDropList = Controls.Add("VB.ComboBox", "cmbDropList")
cmbDropList.Visible = True
cmbDropList.AddItem "One"
cmbDropList.AddItem "Two"
ChildHwnd = GetWindow(cmbDropList.hwnd, GW_CHILD) 注釋:取edit句柄
Call DestroyWindow(ChildHwnd) 注釋:Kill edit窗口
注釋:改變cmbDropList的Style,這一語句可有可無~~~~,
Call SetWindowLong(cmbDropList.hwnd, GWL_STYLE, GetWindowLong(cmbDropList.hwnd, GWL_STYLE) + 1)
End Sub
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -