第一篇:Visual C++ 2010 MFC ActiveX 控件小結[推薦]
一、ActiveX控件
ActiveX控件是基于組件對象模型COM--Components Object Modem的可重用軟件組件,旨在用于普通的ActiveX控件容器和Internet上的網頁,這里介紹用MFC創建ActiveX控件。一個典型的ActiveX控件,具有方法、屬性、事件這三種特性。
二、ActiveX控件的測試與注冊
1、使用ActiveX控件測試容器對控件進行測試
對于VC6.0,安裝CommonTools目錄下的TSTCON32.EXE即可使用。
而vs2010中的TSTCON(ActiveX Control Test Container)工具非自動安裝,而是作為一個例程提供。所以應找到該例程,并編譯: 如vs2010安裝在默認路徑則
1, 進入:C:Program FilesMicrosoft Visual Studio 10.0Samples1033,可找到VC2010Samples.zip文件,2, 將其解決到同一個文件夾,解壓后將出現一個C++子文件夾。
3, TstCon例程在:C:Program FilesMicrosoft Visual Studio 10.0Samples1033C++MFColeTstCon,雙擊其中的.sln文件啟動工程,直接編譯,4, 編譯后在Debug子文件夾中將出現一個TstCon.exe文件,將其復制到:C:Program FilesMicrosoft Visual Studio 10.0Common7Tools文件夾。
5, 在vs2010中的Tools菜單點擊“External Tools...”,出現如下對話框,點擊“Add”添加一項工具。6, 新工具項的“Title”為:ActiveX Control Test Container,“Command” 為:C:Program FilesMicrosoft Visual Studio 10.0Common7Tools TstCon.exe。
7, 確認退出對話框,Tools菜單將出現“ActiveX Control Test Container”菜單項。Visual C++ 2010 MFC ActiveX 控件小結Captain棟蟈 打開控件測試容器初始界面如下圖
Visual C++ 2010 MFC ActiveX 控件小結Captain棟蟈 Edit→Insert New Control→選擇要測試的控件→OK
2、ActiveX控件的注冊與刪除
所有的ActiveX控件必須在注冊之后才能使用,實際上在VS2010開發環境中生成控件程序時,就已經通過regsvr32程序注冊了該控件;如果要刪除ActiveX控件的注冊信息,利用regsvr32程序的/u選項來完成。通??梢赃x擇“開始”→“運行”命令,然后輸入“regsvr32/u”,再在其后輸入要刪除的ActiveX控件的完整路徑。Tips:在“運行”中先輸入regsvr32/u,然后拖動要刪除的控件到“regsvr32/u”之后,即可獲取其完整路徑。
將xxx.ocx文件拷貝至Windowssystem下,然后regsvr xxx.ocx即注冊;regsvr32/u xxx.ocx即刪除。
三、ActiveX控件開發完整過程 經典Clock控件案例~~
1、創建工程
創建MFC ActiveX Control類項目,命名為Clock,MFC ActiveX Control Wizard全選默認,Finish。
2、時鐘控件的實現
獲取當前系統時間,CClockCtrl類的OnDraw函數中 CTime time=CTime::GetCurrentTime();CString str=time.Format(“%H:%M:%S”);pdc->TextOut(0,0,str);動態顯示時間,CClockCtrl類添加WM_CREATE和WM_TIMER消息及處理函數 設置定時器SetTimer(1,1000.NULL);定時器相應函數InvalidateControl();//其實就是調用OnDraw函數
編譯并運行ActiveX控件,然后打開ActiveX控件容器中插入該控件,可以看到動態顯示的時間
3、屬性 3.1標準屬性
以背景色和前景色為例,類視圖中展開Lib結尾的選項,右鍵“_DClock”→“添加”→“屬性”,然后添加標準屬性,及選中“Stock”,在PropertyName中選則BackColor,其余選中默認,單擊完成。同理添加前景色ForeColor。
為屬性對話框添加“顏色”選項卡,修改類CClockCtrl.cpp中的屬性頁映射宏PROPPAGEID(CLSID_CColorPropPage);切記計數參數要增加1: // 屬性頁
// TODO: 按需要添加更多屬性頁。請記住增加計數!BEGIN_PROPPAGEIDS(CClockCtrl, 2)
PROPPAGEID(CTimePropPage::guid)
PROPPAGEID(CLSID_CColorPropPage);END_PROPPAGEIDS(CClockCtrl)然后在修改OnDraw函數使控件顏色根據顏色選項卡的選則而變化:
CBrush brush(TranslateColor(GetBackColor()));
pdc->FillRect(rcBounds,&brush);
pdc->SetBkMode(TRANSPARENT);
pdc->SetTextColor(TranslateColor(GetForeColor()));3.2自定義屬性
添加一個自定義屬性:時間間隔(UpdateInterval),用于設置更新時間的間隔。
與標準屬性添加相同,在添加屬性向導中,在PropertyName中輸入UpdateInterval,類型設置為SHORT??梢钥吹较驅ё詣犹砑恿送ㄖ瘮礝nUpdateIntervalChange(),單擊Finish完成添加。void CClockCtrl::OnUpdateIntervalChanged(void){
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: 在此添加屬性處理程序代碼
if(m_UpdateInterval<1000 || m_UpdateInterval>6000)
{
//解決輸入值不合要求的問題
m_UpdateInterval=1000;
}
else
{
//解決輸入值不是整數的問題
m_UpdateInterval=m_UpdateInterval/1000*1000;
}
KillTimer(1);
SetTimer(1,m_UpdateInterval,NULL);
SetModifiedFlag();} 關聯某控件變量,需要手動添加:
DDP_Text(pDX, IDC_EDIT1, m_updateInterval,_T(“Interval”));DDX_Text(pDX, IDC_EDIT1, m_updateInterval);DDP_PostProcessing(pDX);DDP、DDX、PostProcessing,順序不可以調整
為測試自定義屬性,在Edit→Insert New Control→選擇要測試的控件后,選擇Control→Invoke Methods,如果想要獲取,某個屬性值,則選擇PropGet;如果設置,則選PropPut。這里選擇后者,然后輸入2000,單擊SetValue,在單擊【Invoke】按鈕,發現控件時間每個2S更新一次。
4、方法
與添加屬性一樣,_DClock右鍵......選擇“方法”,這里添加一個簡單的“Hello” 代碼:
void CClockCtrl::Hello(void){
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: 在此添加調度處理程序代碼
MessageBox(_T(“Hello world”));} 測試時Control→Invoke Methods,選擇“Hello”
5、事件
5.1添加標準事件
右鍵CClockCtrl類(類視圖CxxxCtrl上點擊右鍵才能添加事件,而在_DxxxEvents接口上點擊右鍵則沒有添加事件),添加“事件”,顯示添加事件向導對話框,“Event Name”下拉列表框中選擇”Click“,單擊Finish。5.2添加自定義事件
添加一個NewMinute事件,實現新的一分鐘時有提示 Event Name中輸入NewMinute,然后Finish。在InDraw函數中獲取系統時間代碼后添加 if(time.GetSecond()==0)
{
NewMinute();//判斷是否過了一分鐘,是則觸發NewMinute事件
}
6、調用ActiveX控件
新建一個名為ClockTest的對話框,在對話框上右鍵,選擇”Insert ActiveX Control“,找到Clock控件添加即可。
或者是,”工具“→”選擇工具箱選項“→”COM Components“,選擇要插入的控件,單擊OK。
第二篇:GridControl控件小結
由于近期要使用gridcontrol控件,整理出來,以便以后參考:
1.DevExpress控件組中的GridControl控件不能使橫向滾動條有效。現象:控件中的好多列都擠在一起,列寬都變的很小,根本無法正常瀏覽控件單元格中的內容。
解決:
gridView1.OptionsView.ColumnAutoWidth屬性是true,即各列的寬度自動調整,你把它設成false,就會出現了。
2.使單元格不可編輯。
gridcontrol-->gridview-->OptionsBehavior-->Editable=false
3.沒有下拉滾動條事件怎么辦?現象:因為需要加載大數據量數據,所以不能一次把所有數據讀入datatable進行綁定,所以決定在用戶進一步瀏覽數據時進行數據的實時加載工作,就是每當用戶拉動滾動條時,多加載一些數據進入datatable.沒有找到合適的滾動條事件,于是用這個事件代替了,非常合適我的需求.TopRowChanged事件.4.獲取選定行,指定列單元格的內容
private string GetSelectOID()
{
int[] pRows = this.gridView1.GetSelectedRows();
if(pRows.GetLength(0)> 0)
return gridView1.GetRowCellValue(pRows[0], mOIDFiledName).ToString();
else
return null;
}
//mOIDFiledName為要獲取列的列名
5.去除“Drag a Column Header Here To Group by that Column”
屬性Gridview->Option View->Show Group Panel=false,就好了
6.在gridcontrol中添加checkbox復選框
gridview->run designer->columns->選擇要變成復選框的那一列->column edit->new(在這里可以選擇很多類型)
加載checkbox數據時,費了一點時間,checkbox的復選框怎么點擊,一失去焦點是,選擇的操作就無效了,問題就出在datatable的綁定上了,一定要綁定一個布爾的類型.代碼是這樣滴!
private void FrmCreateLegend_Load(object sender, EventArgs e)
{
IFeatureLayer pFeatureLayer;
IDataset pDataset;
string pName;
DataTable pDatatable = new DataTable();
pDatatable.Columns.Add(“圖層名稱”, System.Type.GetType(“System.String”));pDatatable.Columns.Add(“選擇”, System.Type.GetType(“System.Boolean”));
DataRow pDataRow;
object[] rowArray = new object[2];
for(int i = 0;i < mFeatureLayers.Count;i++)
{
pDataRow = pDatatable.NewRow();
pFeatureLayer = mFeatureLayers[i] as IFeatureLayer;
rowArray[0] = pFeatureLayer.Name;
rowArray[1] = false;
pDataRow.ItemArray = rowArray;
pDatatable.Rows.Add(pDataRow);
}
this.gridMark.DataSource = pDatatable;
this.gridMark.Refresh();
}
注意:創建的datatable的列名一定要和gridview中的列的fieldname屬性值是一個名字,不然,你會發現添加了和你綁定的datatalbe一樣多的行,可是行里面卻沒有內容的.7.多選
GridControl->GridView->屬性->OptinosSelecttion->MultiSelect
8.不顯示子表信息
當我們對DataTable建立父子關系后,將父表綁定在Grid上,會造成關系列上有加號顯示,并且可以展開.如果你覺得展開的信息對你沒有意義的話,是可以關掉的.這是需要修改屬性 屬性Gridview->Option View->ShowDetailButtons=false
bandedGridView1.Columns[1].Width =
bandedGridView1.CalcColumnBestWidth(bandedGridView1.Columns[1])+ 5;
bandedGridView1.Columns[2].Width =
bandedGridView1.CalcColumnBestWidth(bandedGridView1.Columns[2])+ 5;
bandedGridView1.Columns[3].Width =
bandedGridView1.CalcColumnBestWidth(bandedGridView1.Columns[3])+ 5;
bandedGridView1.Columns[0].Width
bandedGridView1.CalcColumnBestWidth(bandedGridView1.Columns[0])+ 5;=
第三篇:MFC控件關聯變量小結
MFC控件關聯變量總結
通常在要綁定變量的編輯框控件上右鍵添加變量就可以。
綁定變量分value和control兩種,value是賦值用的,control是控制用的。對于編輯框的賦值,共分幾種方法 1.不用綁定變量的方法
GetDlgItem(IDC_EDIT1)->GetWindowText(變量); 如果是數組->GetWindowText(數組名,長度)GetDlgItem(IDC_EDIT1)->SetWindowText(變量); 2.綁的是value型變量 一共3處
<1處>project1Dlg.h : 頭文件 class Cproject1Dlg : public CDialog { // 構造 public: Cproject1Dlg(CWnd* pParent = NULL);// 標準構造函數
// 對話框數據
enum { IDD = IDD_PROJECT1_DIALOG };protected: virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV 支持
// 實現 protected: HICON m_hIcon;// 生成的消息映射函數 virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public: afx_msg void OnBnClickedOk();CString edit1;//定義了該變量 CString edit2;CEdit edit3;CEdit edit4;CString edit5;};<2處> project1Dlg.cpp : 實現文件
Cproject1Dlg::Cproject1Dlg(CWnd* pParent): CDialog(Cproject1Dlg::IDD, pParent), edit1(_T(“")), edit2(_T(”“)), edit5(_T(”")){ m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}
參數列表跟了edit1 <3處> project1Dlg.cpp : 實現文件
void Cproject1Dlg::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, edit1);DDX_Text(pDX, IDC_EDIT2, edit2);DDX_Control(pDX, IDC_EDIT3, edit3);DDX_Control(pDX, IDC_EDIT4, edit4);DDX_Text(pDX, IDC_EDIT5, edit5);}
DDX_Text(pDX, IDC_EDIT1, edit1);變量與控件關聯
通過調用 UpdateData(TRUE)UpdateData(FALSE)將控件數據取到變量或將變量數據顯到控件 如果 變量賦值語句寫在對話框構造函數里,則UpdateData(FALSE)可省略,會被自動調用
3.綁的是control型變量 代碼與上方一樣,看edit3 但只有兩處涉及 CEdit edit3;DDX_Control(pDX, IDC_EDIT3, edit3);程序里只需要 edit3.GetWindowText(變量);edit3.SetWindowText(變量);就可以用了
除了賦值,還能干很多事情.
第四篇:dxp控件總結
From 屬性:
1.MaximizeBox:是否顯示最小化按鈕。2.MinimizeBox:是否顯示最大化按鈕。
3.FormBorderStyle:窗口樣式,如FixedSingle:固定大小。4.StartPosition:初始顯示的位置,CenterScreen:中心。
事件:
TreeList: 屬性:
1.隱藏列頭:設置OptionsView中的ShowColumns改為false 2.隱藏每行最左邊的指示箭頭:設置OptionsView中的ShowIndicator改為false 3.隱藏父節點的指示箭頭:設置OptionsView中的ShowRoot改為false 4.selectImageList:給TreeList綁定imageCollection 5.OptionsView.ShowVertLines:是否顯示網格線(豎直的)6.OptionsView.ShowHorzLines:是否顯示網格線(水平的)
7.OptionsSelection.EnableAppearanceFocusedCell:選中單元格,是否改變該單元格外觀(選中后該單元格有邊線或不顯示邊線)
8.OptionsSelection.EnableAppearanceFocusedRow:選中行。是否改變該行的外觀(選中后該行底色是否變化)
9.OptionsView.ShowCheckBoxes:是否在每一行前顯示勾選框。
事件:
1.FocusedNodeChanged:焦點改變后觸發
2.treeList_Enter:第一次點擊是觸發,初始化控件時候,焦點會在第一行,此時就觸發。3.CustomNodeCellEdit:鼠標選中某個Cell時觸發,可以實現動態的設定Cell綁定的控件類型 4.MouseDoubleClick:雙擊節點觸發
5.FocusedColumnChanged:選中列改變時觸發,即前后點擊的列不一樣時觸發(即使前后選中列不在一行,只要選中列改變就會觸發,與行無關。若前后選中列中某列的ReadOnly = ture則不會觸發該事件)
6.MouseDoubleClick:鼠標雙擊節點時觸發。7.MouseUp:鼠標點擊節點彈起時觸發。(e.Button可以得到曾按下的是哪個按鈕)8.SelectImageClick:點擊SelectImage觸發 9.StateImageClick:點擊StateImage觸發 10.BeforeExpand:節點展開之前 11.BeforeFocusNode:焦點選中之前
DevExpress.XtraTreeList.StyleFormatConditions.StyleFormatCondition styleFormatCondition = new DevExpress.XtraTreeList.StyleFormatConditions.StyleFormatCondition();styleFormatCondition.Appearance.ForeColor = System.Drawing.Color.DarkGray;styleFormatCondition.Appearance.Options.UseForeColor = true;styleFormatCondition.ApplyToRow = true;styleFormatCondition.Condition = DevExpress.XtraGrid.FormatConditionEnum.Expression;styleFormatCondition.Expression = “[Style]”;this.treeList1.FormatConditions.Add(styleFormatCondition);
treeListColumn:TreeList中添加的列
屬性:
1.表示這一列為只讀:OptionsColumn中的ReadOnly = True 2.固定列的寬度不變:OptionsColumn中的FixedWidth = True 3.表示這一列不可編輯(無法實現復制):OptionsColumn中的AllowEdit = False 4.FieldName: 5.UnboundType:
6.SortOrder:列表中的項排序,SortOrder =Descending,遞減排序。SortOrder = Ascending,遞增排序。
treeList.AppendNode();//添加節點(TreeListNode)
TreeListNode:(TreeList中的節點)
屬性: 1.ImageIndex:正常情況下節點前面顯示的圖片的索引
2.SelectImageIndex:選中節點時節點前邊顯示的圖片的索引
3.StateImageIndex:節點開頭顯示的圖片索引(在SelectImageIndex之后)4.Level:節點的級別(0:根節點、1:一級節點···)imageCollection 屬性:
1.Images:在imageCollection中添加圖片
ImageComboBoxEdit ComboBoxEdit 屬性:
1.調整下拉菜單直觀顯示出來的行數(即不用滾動條就可以看的到的行數):DropDownRows 2.Properties.Items:綁定數據源
3.Properties.TextEditStyle:Standard(可輸入,可選),HideTextEditor(只能通過下拉菜單選擇,選中后不在界面上顯示),DisableTextEditor(只能通過下拉菜單選擇并且選中后在界面上顯示)
4.ToolTip:
5.SelectedIndex:選擇的Item的索引(get,set)
事件:
1:EditValueChanged:只要是值改變就會觸發 2:SelectedIndexChanged:(值改變觸發)SelectedIndex改變觸發。3:SelectedValueChanged:(值改變觸發)SelectedValue改變觸發。
4:DrawItem:光標在下拉菜單上移動的時候觸發,即光標在選擇項上來回移動時觸發
ComboBox(win)
屬性:
1.DroppedDown:設置/獲取下拉菜單是否展開。
2.SelectionStart:設置光標的位置(輸入文本時用,設置為Text.Length可以保證光標在最后一個字符的后面,避免將前邊的字符覆蓋掉)。事件:
1.TextUpdate:輸入的值時(text屬性值改變時)觸發。(在TextChanged事件之前)2.TextChanged:輸入的值時(text屬性值改變時)觸發。(在TextUpdate事件之后)3.MouseDown:鼠標在控件上按下時觸發。
LabelControl:
屬性: 事件:
notePane:
屬性:
1.MaxRow:設置notePane最大顯示行數
TextEdit:單行文本輸入
事件:
1.EditValueChanged:TextEdit值改變時候觸發
2.Validating:焦點離開TextEdit時觸發,驗證有效性(有效性的標準通過自己在事件里面的代碼來寫,若設置了EditMask,進入該事件會先自動根據EditMask為標準來驗證有效性,完成之后執行事件里面的代碼)3.KeyPress:鍵盤按下某一個鍵觸發。
屬性:
1.TextEdit.Mask.EditMask:可以規定輸入的格式,類似正則表達式
2.TextEdit.Mask.MaskType:指定可填寫的文本類型(如:數字、字符串或者是根據正則表達式(RegEx)來約束···EditMask與MaskType配合使用,若MaskType= RegEx,EditMas = 某正則表達式,當MaskType是DateTime,Numeric時,EditMask為指定的相應類型)3.MaxLength:可填的最大字符長度,僅當MaskType = None時有效
4.TextEdit.Mask.BeepOnError:當用戶輸入不滿足EdiMask要求時,是否發beep聲。5.UseSystemPasswordChar: true –密碼框(輸入的內容在界面上是 ****)6.實現水印文字:Properties.NullValuePrompt = “輸入密碼”
Properties.NullValuePromptShowForEmptyValue = true;
memoEdit:多行文本輸入
屬性: 事件:
checkEdit:
屬性:
1.Checked:是否選中
事件:
1.CheckedChanged:勾選狀態改變時觸發(選中變不選中,不選中變選中)
checkedListBoxControl:(實現多選框)
屬性: 事件:
1.DrawItem:光標在選擇菜單上移動的時候觸發,即光標在選擇項上來回移動時觸發(與ComboBoxEdit的DrawItem事件相似)2.ItemCheck:勾選或取消勾選Item時觸發。(e.Index:點擊的Item的索引,e.State:改變的狀態)3.方法: 1.UnCheckAll();//全部不選 2.CheckAll();//全選中
PopupContainerEdit:
屬性:
1. Properties.PopupControl:(PopupContainerEdit和PopupContainerControl組合,實現下拉組合框)this.popupContainerEdit1.Properties.PopupControl = this.popupContainerControl1;
事件:
1.EditValueChanged 2.QueryResultValue PopupContainerControl:
屬性: 事件:
splitContainerControl: barManager: popupMenu:
lookUpEdit:
屬性:
1.Properties.DataSource:綁定數據(可以直接將list<>賦值給它)。
2.Properties.TextEditStyle:Standard(可輸入),HideTextEditor(只能通過下拉菜單選擇,選中后不在界面上顯示),DisableTextEditor(只能通過下拉菜單選擇并且選中后在界面上顯示)3.事件:
panelControl:
屬性:
1.BorderStyle(邊框風格):NoBorder–無邊框,事件:
wizardControl:
屬性:
1.HeaderImage:右上角圖片。2.CancelText:3.FinishText:4.NextText:5.PreviousText:
當在最后一頁時中間按鈕變為“結束”
事件:
1.CancelClick:點擊“取消”觸發。2.FinishClick:最后一頁點擊結束觸發。3.SelectedPageChanging:切換頁面時觸發。(e.Direction:判斷是向前翻頁還是向后翻頁,e.Page:新頁)
4.SelectedPageChanged:切換頁面后觸發。(e.PrevPage:舊頁)
wizardPage:(wizardControl中的每一頁)
屬性:
1. DescriptionText:2. Text:
事件:
1.PageValidating:驗證事件。(e.Direction:判斷是向前翻頁還是向后翻頁,e.Valid = false;翻不過去)2.simpleButton:
屬性:
1.事件: buttonEdit:
屬性: 事件:
dropDownButton: 屬性:
1.DropDownControl:(dropDownButton控件實現下拉框)
增加2個控件barManager1。
dropDownButton 的DropDownControl屬性選擇popupMenu1。popupMenu1的Manager屬性選擇事件:
radioGroup:
屬性: 事件:
spinEdit:
屬性:
1.Appearance.TextOptions.HAlignment:輸入的文本的位置,如:Near,近前邊。,靠事件:
GridControl 事件: 1.MouseDoubleClick:雙擊某一行。
gridView
屬性:
1.OptionsBehavior.Editable:是否可用
vGridControl 屬性:
1.2.3.4.5.OptionsBehavior.Editable:是否可用
OptionsBehavior.ResizeHeaderPanel:是否可以拖拽改變每一行的高度 OptionsBehavior.ResizeRowHeaders:是否可以拖拽改變每一列的寬度。LayoutStyle:布局風格
OptionsView.AutoScaleBands:當LayoutStyle為SingleRecordViewBandsView,設置該屬性為true,列寬自動填充 6.XtraTabControl 屬性:
1.ClosePageButtonShowMode:如何顯示每個tabPage上的關閉按鈕。
如:InActiveTabPageHeader:當TabPage為當前選中時顯示關閉按鈕。2.HeaderLocation:標簽位置(上下左右)3.ShowTabHeader:是否顯示標簽
4.HeaderOrientation:標簽方向(Horizontal:水平,Vertical豎直)5.HeaderButtons:當tabpage過多,需要翻頁時,設置翻頁按鈕如何組合。如
6.TabPageWidth:統設標簽寬度。
事件:
1.CloseButtonClick:點擊標簽上的X按鈕事件
XtraTabPage:
屬性:
1.ShowCloseButton:是否顯示關閉按鈕。2.TabPageWidth:這一頁的標簽寬度。
第五篇:VB6控件LISTVIEW使用指南(本站推薦)
功----VB6無疑是當前最先進的編程工具之一,無論是它的代碼編寫還是與視窗98的完美結合, 都令人們特別是程序員們贊嘆不已。在這里,我將自己在編程實踐中對LISTVIEW控件的一些使用經驗和心得體會與廣大的同仁們作以探討,希望大家批評指正,或者有所借鑒。
----在VB6專業版或者企業版中,LISTVIEW控件并不是默認的工具箱的配置項目,你必須要手工添加---單擊“工程”菜單項目,選擇“部件”,在部件對話框的“控件”欄目中選擇“MICROSOFT WINDOWS COMMON CONTROLS 6.0”,確認在它前面的復選框中有一個黑色的對號,單擊“確認” 按鈕,這時你的工具箱中便添加了幾個控件,其中,有五個空心圓圈的便是LISTVIEW控件了, 當然怎么把它添加到窗體上就不用我多說了吧。
----我個人認為,作為一個增強功能的列表框,它的本質是用來顯示更多的信息的.因此, 在這篇文章中,我著重介紹它VIEW屬性的LVWREPORT(報表)值的使用.至于它的外觀怎樣設計,諸位當然可以隨心所欲了.為了直觀一點,我舉一個應用實例來說明。
----設計完成后的主界面參見圖一,它實際上是一個增強功能的文件瀏覽器。
----首先新建一個標準EXE工程,主窗體名稱為FRMMAIN,添加一個驅動器列表框DRIVE1,一個文件列表框FILE1(設置VISIBLE屬性FALES,PATTERN屬性(*.EXE;*.DLL)),一個目錄列表框DIR1,一個增強列表框LISTVIEW1,一個IMAGE控件IMAGE1和一個IMAGELIST控件IMALIST1,在IMALIST1控件上單擊右鍵,設計IMAGELIST控件,添加一個你最喜歡的圖標(最好使用ICON圖標),索引為一。在主窗體FRMMAIN的通用聲明段輸入以下代碼: Dim clmX As ColumnHeader;標題欄 Dim itmX As ListItem;列表項目 Dim Counter As Long;計數器 Dim Fname As String;讀取文件名
Dim dname As String;增強列表框完整路徑名稱 Public CurrentDir As String;完整的目錄名稱 在主窗體的LOAD事件中寫入以下代碼: Private Sub Form_Load()Me.Caption = App.Title;窗體的標題為生成可執行文件的標題 Me.Left =(Screen.WidthMe.Height)/ 2; 窗體位置在屏幕中間
ListView1.ColumnHeaders.Add , , “文件名稱”,ListView1.Width / 3, 0 ’第一個標題欄是“文件名稱“,長度為ListView1 寬度的三分之一,文字左對齊
Set clmX = ListView1.ColumnHeaders.Add(, , “序號”, ListView1.Width / 5, 2)’第二個標題欄是“序號“ 依次往下
Set clmX = ListView1.ColumnHeaders.Add(, , “文件大小 ”, ListView1.Width / 4, 1)Set clmX = ListView1.ColumnHeaders.Add(, , “創建時間”, ListView1.Width / 3, 0)ListView1.BorderStyle = ccFixedSingle;邊界類型 ListView1.SmallIcons = ImageList1 ;
關聯圖標倉庫ImageList1 For Counter = 0 To File1.ListCount1 Fname = File1.List(Counter)Set itmX = ListView1.ListItems.Add(, , Fname);添加文件名
itmX.SubItems(1)= CStr(Counter + 1)+ “/” + CStr(File1.ListCount)itmX.SubItems(2)= CStr(FileLen(CurrentDir & Fname))itmX.SmallIcon = 1 itmX.SubItems(3)= Format(FileDateTime(CurrentDir & Fname), “HH:MM YYYY/MMMM/DD”)Next Counter;添加增強列表框的各個項目
Dir1.ToolTipText = “當前目錄是:” & Dir1.Path;提示 End Sub----通過以下代碼取得鼠標單擊增強列表框返回的項目名稱: Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)allfname = Item;文件名
dname= CurrentDir& Item;完整的路徑和文件名
sElectmain = ListView1.SelectedItem.Index;文件序號 End Su