第一篇:GridControl控件小結
由于近期要使用gridcontrol控件,整理出來,以便以后參考:
1.DevExpress控件組中的GridControl控件不能使橫向滾動條有效。現(xiàn)象:控件中的好多列都擠在一起,列寬都變的很小,根本無法正常瀏覽控件單元格中的內(nèi)容。
解決:
gridView1.OptionsView.ColumnAutoWidth屬性是true,即各列的寬度自動調整,你把它設成false,就會出現(xiàn)了。
2.使單元格不可編輯。
gridcontrol-->gridview-->OptionsBehavior-->Editable=false
3.沒有下拉滾動條事件怎么辦?現(xiàn)象:因為需要加載大數(shù)據(jù)量數(shù)據(jù),所以不能一次把所有數(shù)據(jù)讀入datatable進行綁定,所以決定在用戶進一步瀏覽數(shù)據(jù)時進行數(shù)據(jù)的實時加載工作,就是每當用戶拉動滾動條時,多加載一些數(shù)據(jù)進入datatable.沒有找到合適的滾動條事件,于是用這個事件代替了,非常合適我的需求.TopRowChanged事件.4.獲取選定行,指定列單元格的內(nèi)容
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數(shù)據(jù)時,費了一點時間,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();
}
注意:創(chuàng)建的datatable的列名一定要和gridview中的列的fieldname屬性值是一個名字,不然,你會發(fā)現(xiàn)添加了和你綁定的datatalbe一樣多的行,可是行里面卻沒有內(nèi)容的.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控件關聯(lián)變量小結
MFC控件關聯(lián)變量總結
通常在要綁定變量的編輯框控件上右鍵添加變量就可以。
綁定變量分value和control兩種,value是賦值用的,control是控制用的。對于編輯框的賦值,共分幾種方法 1.不用綁定變量的方法
GetDlgItem(IDC_EDIT1)->GetWindowText(變量); 如果是數(shù)組->GetWindowText(數(shù)組名,長度)GetDlgItem(IDC_EDIT1)->SetWindowText(變量); 2.綁的是value型變量 一共3處
<1處>project1Dlg.h : 頭文件 class Cproject1Dlg : public CDialog { // 構造 public: Cproject1Dlg(CWnd* pParent = NULL);// 標準構造函數(shù)
// 對話框數(shù)據(jù)
enum { IDD = IDD_PROJECT1_DIALOG };protected: virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV 支持
// 實現(xiàn) protected: HICON m_hIcon;// 生成的消息映射函數(shù) 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 : 實現(xiàn)文件
Cproject1Dlg::Cproject1Dlg(CWnd* pParent): CDialog(Cproject1Dlg::IDD, pParent), edit1(_T(“")), edit2(_T(”“)), edit5(_T(”")){ m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}
參數(shù)列表跟了edit1 <3處> project1Dlg.cpp : 實現(xiàn)文件
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);變量與控件關聯(lián)
通過調用 UpdateData(TRUE)UpdateData(FALSE)將控件數(shù)據(jù)取到變量或將變量數(shù)據(jù)顯到控件 如果 變量賦值語句寫在對話框構造函數(shù)里,則UpdateData(FALSE)可省略,會被自動調用
3.綁的是control型變量 代碼與上方一樣,看edit3 但只有兩處涉及 CEdit edit3;DDX_Control(pDX, IDC_EDIT3, edit3);程序里只需要 edit3.GetWindowText(變量);edit3.SetWindowText(變量);就可以用了
除了賦值,還能干很多事情.
第三篇:Visual C++ 2010 MFC ActiveX 控件小結[推薦]
一、ActiveX控件
ActiveX控件是基于組件對象模型COM--Components Object Modem的可重用軟件組件,旨在用于普通的ActiveX控件容器和Internet上的網(wǎng)頁,這里介紹用MFC創(chuàng)建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, 將其解決到同一個文件夾,解壓后將出現(xiàn)一個C++子文件夾。
3, TstCon例程在:C:Program FilesMicrosoft Visual Studio 10.0Samples1033C++MFColeTstCon,雙擊其中的.sln文件啟動工程,直接編譯,4, 編譯后在Debug子文件夾中將出現(xiàn)一個TstCon.exe文件,將其復制到:C:Program FilesMicrosoft Visual Studio 10.0Common7Tools文件夾。
5, 在vs2010中的Tools菜單點擊“External Tools...”,出現(xiàn)如下對話框,點擊“Add”添加一項工具。6, 新工具項的“Title”為:ActiveX Control Test Container,“Command” 為:C:Program FilesMicrosoft Visual Studio 10.0Common7Tools TstCon.exe。
7, 確認退出對話框,Tools菜單將出現(xiàn)“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開發(fā)環(huán)境中生成控件程序時,就已經(jīng)通過regsvr32程序注冊了該控件;如果要刪除ActiveX控件的注冊信息,利用regsvr32程序的/u選項來完成。通常可以選擇“開始”→“運行”命令,然后輸入“regsvr32/u”,再在其后輸入要刪除的ActiveX控件的完整路徑。Tips:在“運行”中先輸入regsvr32/u,然后拖動要刪除的控件到“regsvr32/u”之后,即可獲取其完整路徑。
將xxx.ocx文件拷貝至Windowssystem下,然后regsvr xxx.ocx即注冊;regsvr32/u xxx.ocx即刪除。
三、ActiveX控件開發(fā)完整過程 經(jīng)典Clock控件案例~~
1、創(chuàng)建工程
創(chuàng)建MFC ActiveX Control類項目,命名為Clock,MFC ActiveX Control Wizard全選默認,F(xiàn)inish。
2、時鐘控件的實現(xiàn)
獲取當前系統(tǒng)時間,CClockCtrl類的OnDraw函數(shù)中 CTime time=CTime::GetCurrentTime();CString str=time.Format(“%H:%M:%S”);pdc->TextOut(0,0,str);動態(tài)顯示時間,CClockCtrl類添加WM_CREATE和WM_TIMER消息及處理函數(shù) 設置定時器SetTimer(1,1000.NULL);定時器相應函數(shù)InvalidateControl();//其實就是調用OnDraw函數(shù)
編譯并運行ActiveX控件,然后打開ActiveX控件容器中插入該控件,可以看到動態(tài)顯示的時間
3、屬性 3.1標準屬性
以背景色和前景色為例,類視圖中展開Lib結尾的選項,右鍵“_DClock”→“添加”→“屬性”,然后添加標準屬性,及選中“Stock”,在PropertyName中選則BackColor,其余選中默認,單擊完成。同理添加前景色ForeColor。
為屬性對話框添加“顏色”選項卡,修改類CClockCtrl.cpp中的屬性頁映射宏PROPPAGEID(CLSID_CColorPropPage);切記計數(shù)參數(shù)要增加1: // 屬性頁
// TODO: 按需要添加更多屬性頁。請記住增加計數(shù)!BEGIN_PROPPAGEIDS(CClockCtrl, 2)
PROPPAGEID(CTimePropPage::guid)
PROPPAGEID(CLSID_CColorPropPage);END_PROPPAGEIDS(CClockCtrl)然后在修改OnDraw函數(shù)使控件顏色根據(jù)顏色選項卡的選則而變化:
CBrush brush(TranslateColor(GetBackColor()));
pdc->FillRect(rcBounds,&brush);
pdc->SetBkMode(TRANSPARENT);
pdc->SetTextColor(TranslateColor(GetForeColor()));3.2自定義屬性
添加一個自定義屬性:時間間隔(UpdateInterval),用于設置更新時間的間隔。
與標準屬性添加相同,在添加屬性向導中,在PropertyName中輸入UpdateInterval,類型設置為SHORT。可以看到向導自動添加了通知函數(shù)OnUpdateIntervalChange(),單擊Finish完成添加。void CClockCtrl::OnUpdateIntervalChanged(void){
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: 在此添加屬性處理程序代碼
if(m_UpdateInterval<1000 || m_UpdateInterval>6000)
{
//解決輸入值不合要求的問題
m_UpdateInterval=1000;
}
else
{
//解決輸入值不是整數(shù)的問題
m_UpdateInterval=m_UpdateInterval/1000*1000;
}
KillTimer(1);
SetTimer(1,m_UpdateInterval,NULL);
SetModifiedFlag();} 關聯(lián)某控件變量,需要手動添加:
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】按鈕,發(fā)現(xiàn)控件時間每個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事件,實現(xiàn)新的一分鐘時有提示 Event Name中輸入NewMinute,然后Finish。在InDraw函數(shù)中獲取系統(tǒng)時間代碼后添加 if(time.GetSecond()==0)
{
NewMinute();//判斷是否過了一分鐘,是則觸發(fā)NewMinute事件
}
6、調用ActiveX控件
新建一個名為ClockTest的對話框,在對話框上右鍵,選擇”Insert ActiveX Control“,找到Clock控件添加即可。
或者是,”工具“→”選擇工具箱選項“→”COM Components“,選擇要插入的控件,單擊OK。
第四篇:dxp控件總結
From 屬性:
1.MaximizeBox:是否顯示最小化按鈕。2.MinimizeBox:是否顯示最大化按鈕。
3.FormBorderStyle:窗口樣式,如FixedSingle:固定大小。4.StartPosition:初始顯示的位置,CenterScreen:中心。
事件:
TreeList: 屬性:
1.隱藏列頭:設置OptionsView中的ShowColumns改為false 2.隱藏每行最左邊的指示箭頭:設置OptionsView中的ShowIndicator改為false 3.隱藏父節(jié)點的指示箭頭:設置OptionsView中的ShowRoot改為false 4.selectImageList:給TreeList綁定imageCollection 5.OptionsView.ShowVertLines:是否顯示網(wǎng)格線(豎直的)6.OptionsView.ShowHorzLines:是否顯示網(wǎng)格線(水平的)
7.OptionsSelection.EnableAppearanceFocusedCell:選中單元格,是否改變該單元格外觀(選中后該單元格有邊線或不顯示邊線)
8.OptionsSelection.EnableAppearanceFocusedRow:選中行。是否改變該行的外觀(選中后該行底色是否變化)
9.OptionsView.ShowCheckBoxes:是否在每一行前顯示勾選框。
事件:
1.FocusedNodeChanged:焦點改變后觸發(fā)
2.treeList_Enter:第一次點擊是觸發(fā),初始化控件時候,焦點會在第一行,此時就觸發(fā)。3.CustomNodeCellEdit:鼠標選中某個Cell時觸發(fā),可以實現(xiàn)動態(tài)的設定Cell綁定的控件類型 4.MouseDoubleClick:雙擊節(jié)點觸發(fā)
5.FocusedColumnChanged:選中列改變時觸發(fā),即前后點擊的列不一樣時觸發(fā)(即使前后選中列不在一行,只要選中列改變就會觸發(fā),與行無關。若前后選中列中某列的ReadOnly = ture則不會觸發(fā)該事件)
6.MouseDoubleClick:鼠標雙擊節(jié)點時觸發(fā)。7.MouseUp:鼠標點擊節(jié)點彈起時觸發(fā)。(e.Button可以得到曾按下的是哪個按鈕)8.SelectImageClick:點擊SelectImage觸發(fā) 9.StateImageClick:點擊StateImage觸發(fā) 10.BeforeExpand:節(jié)點展開之前 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.表示這一列不可編輯(無法實現(xiàn)復制):OptionsColumn中的AllowEdit = False 4.FieldName: 5.UnboundType:
6.SortOrder:列表中的項排序,SortOrder =Descending,遞減排序。SortOrder = Ascending,遞增排序。
treeList.AppendNode();//添加節(jié)點(TreeListNode)
TreeListNode:(TreeList中的節(jié)點)
屬性: 1.ImageIndex:正常情況下節(jié)點前面顯示的圖片的索引
2.SelectImageIndex:選中節(jié)點時節(jié)點前邊顯示的圖片的索引
3.StateImageIndex:節(jié)點開頭顯示的圖片索引(在SelectImageIndex之后)4.Level:節(jié)點的級別(0:根節(jié)點、1:一級節(jié)點···)imageCollection 屬性:
1.Images:在imageCollection中添加圖片
ImageComboBoxEdit ComboBoxEdit 屬性:
1.調整下拉菜單直觀顯示出來的行數(shù)(即不用滾動條就可以看的到的行數(shù)):DropDownRows 2.Properties.Items:綁定數(shù)據(jù)源
3.Properties.TextEditStyle:Standard(可輸入,可選),HideTextEditor(只能通過下拉菜單選擇,選中后不在界面上顯示),DisableTextEditor(只能通過下拉菜單選擇并且選中后在界面上顯示)
4.ToolTip:
5.SelectedIndex:選擇的Item的索引(get,set)
事件:
1:EditValueChanged:只要是值改變就會觸發(fā) 2:SelectedIndexChanged:(值改變觸發(fā))SelectedIndex改變觸發(fā)。3:SelectedValueChanged:(值改變觸發(fā))SelectedValue改變觸發(fā)。
4:DrawItem:光標在下拉菜單上移動的時候觸發(fā),即光標在選擇項上來回移動時觸發(fā)
ComboBox(win)
屬性:
1.DroppedDown:設置/獲取下拉菜單是否展開。
2.SelectionStart:設置光標的位置(輸入文本時用,設置為Text.Length可以保證光標在最后一個字符的后面,避免將前邊的字符覆蓋掉)。事件:
1.TextUpdate:輸入的值時(text屬性值改變時)觸發(fā)。(在TextChanged事件之前)2.TextChanged:輸入的值時(text屬性值改變時)觸發(fā)。(在TextUpdate事件之后)3.MouseDown:鼠標在控件上按下時觸發(fā)。
LabelControl:
屬性: 事件:
notePane:
屬性:
1.MaxRow:設置notePane最大顯示行數(shù)
TextEdit:單行文本輸入
事件:
1.EditValueChanged:TextEdit值改變時候觸發(fā)
2.Validating:焦點離開TextEdit時觸發(fā),驗證有效性(有效性的標準通過自己在事件里面的代碼來寫,若設置了EditMask,進入該事件會先自動根據(jù)EditMask為標準來驗證有效性,完成之后執(zhí)行事件里面的代碼)3.KeyPress:鍵盤按下某一個鍵觸發(fā)。
屬性:
1.TextEdit.Mask.EditMask:可以規(guī)定輸入的格式,類似正則表達式
2.TextEdit.Mask.MaskType:指定可填寫的文本類型(如:數(shù)字、字符串或者是根據(jù)正則表達式(RegEx)來約束···EditMask與MaskType配合使用,若MaskType= RegEx,EditMas = 某正則表達式,當MaskType是DateTime,Numeric時,EditMask為指定的相應類型)3.MaxLength:可填的最大字符長度,僅當MaskType = None時有效
4.TextEdit.Mask.BeepOnError:當用戶輸入不滿足EdiMask要求時,是否發(fā)beep聲。5.UseSystemPasswordChar: true –密碼框(輸入的內(nèi)容在界面上是 ****)6.實現(xiàn)水印文字:Properties.NullValuePrompt = “輸入密碼”
Properties.NullValuePromptShowForEmptyValue = true;
memoEdit:多行文本輸入
屬性: 事件:
checkEdit:
屬性:
1.Checked:是否選中
事件:
1.CheckedChanged:勾選狀態(tài)改變時觸發(fā)(選中變不選中,不選中變選中)
checkedListBoxControl:(實現(xiàn)多選框)
屬性: 事件:
1.DrawItem:光標在選擇菜單上移動的時候觸發(fā),即光標在選擇項上來回移動時觸發(fā)(與ComboBoxEdit的DrawItem事件相似)2.ItemCheck:勾選或取消勾選Item時觸發(fā)。(e.Index:點擊的Item的索引,e.State:改變的狀態(tài))3.方法: 1.UnCheckAll();//全部不選 2.CheckAll();//全選中
PopupContainerEdit:
屬性:
1. Properties.PopupControl:(PopupContainerEdit和PopupContainerControl組合,實現(xiàn)下拉組合框)this.popupContainerEdit1.Properties.PopupControl = this.popupContainerControl1;
事件:
1.EditValueChanged 2.QueryResultValue PopupContainerControl:
屬性: 事件:
splitContainerControl: barManager: popupMenu:
lookUpEdit:
屬性:
1.Properties.DataSource:綁定數(shù)據(jù)(可以直接將list<>賦值給它)。
2.Properties.TextEditStyle:Standard(可輸入),HideTextEditor(只能通過下拉菜單選擇,選中后不在界面上顯示),DisableTextEditor(只能通過下拉菜單選擇并且選中后在界面上顯示)3.事件:
panelControl:
屬性:
1.BorderStyle(邊框風格):NoBorder–無邊框,事件:
wizardControl:
屬性:
1.HeaderImage:右上角圖片。2.CancelText:3.FinishText:4.NextText:5.PreviousText:
當在最后一頁時中間按鈕變?yōu)椤敖Y束”
事件:
1.CancelClick:點擊“取消”觸發(fā)。2.FinishClick:最后一頁點擊結束觸發(fā)。3.SelectedPageChanging:切換頁面時觸發(fā)。(e.Direction:判斷是向前翻頁還是向后翻頁,e.Page:新頁)
4.SelectedPageChanged:切換頁面后觸發(fā)。(e.PrevPage:舊頁)
wizardPage:(wizardControl中的每一頁)
屬性:
1. DescriptionText:2. Text:
事件:
1.PageValidating:驗證事件。(e.Direction:判斷是向前翻頁還是向后翻頁,e.Valid = false;翻不過去)2.simpleButton:
屬性:
1.事件: buttonEdit:
屬性: 事件:
dropDownButton: 屬性:
1.DropDownControl:(dropDownButton控件實現(xiàn)下拉框)
增加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:統(tǒng)設標簽寬度。
事件:
1.CloseButtonClick:點擊標簽上的X按鈕事件
XtraTabPage:
屬性:
1.ShowCloseButton:是否顯示關閉按鈕。2.TabPageWidth:這一頁的標簽寬度。
第五篇:iOS UITextField控件總結
iOS UITextField控件總結
//初始化textfield并設置位置及大小
UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];
//設置邊框樣式,只有設置了才會顯示邊框樣式
text.borderStyle = UITextBorderStyleRoundedRect;typedef enum {
UITextBorderStyleNone,UITextBorderStyleLine,UITextBorderStyleBezel,UITextBorderStyleRoundedRect
} UITextBorderStyle;
//設置輸入框的背景顏色,此時設置為白色 如果使用了自定義的背景圖片邊框會被忽略掉
text.backgroundColor = [UIColor whiteColor];
//設置背景
text.background = [UIImage imageNamed:@“dd.png”];
//設置背景
text.disabledBackground = [UIImage imageNamed:@“cc.png”];
//當輸入框沒有內(nèi)容時,水印提示 提示內(nèi)容為password text.placeholder = @“password”;
//設置輸入框內(nèi)容的字體樣式和大小
text.font = [UIFont fontWithName:@“Arial” size:20.0f];
//設置字體顏色
text.textColor = [UIColor redColor];
//輸入框中是否有個叉號,在什么時候顯示,用于一次性刪除輸入框中的內(nèi)容
text.clearButtonMode = UITextFieldViewModeAlways;
typedef enum {
UITextFieldViewModeNever, 從不出現(xiàn)
UITextFieldViewModeWhileEditing, 編輯時出現(xiàn)
UITextFieldViewModeUnlessEditing, 除了編輯外都出現(xiàn)
UITextFieldViewModeAlways 一直出現(xiàn) } UITextFieldViewMode;
//輸入框中一開始就有的文字
text.text = @“一開始就在輸入框的文字”;
//每輸入一個字符就變成點 用語密碼輸入
text.secureTextEntry = YES;
//是否糾錯
text.autocorrectionType = UITextAutocorrectionTypeNo;
typedef enum {
UITextAutocorrectionTypeDefault, 默認
UITextAutocorrectionTypeNo, 不自動糾錯
UITextAutocorrectionTypeYes, 自動糾錯 } UITextAutocorrectionType;
//再次編輯就清空
text.clearsOnBeginEditing = YES;
//內(nèi)容對齊方式
text.textAlignment = UITextAlignmentLeft;
//內(nèi)容的垂直對齊方式 UITextField繼承自UIControl,此類中有一個屬性contentVerticalAlignment text.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
//設置為YES時文本會自動縮小以適應文本窗口大小.默認是保持原來大小,而讓長文本滾動
textFied.adjustsFontSizeToFitWidth = YES;
//設置自動縮小顯示的最小字體大小
text.minimumFontSize = 20;
//設置鍵盤的樣式
text.keyboardType = UIKeyboardTypeNumberPad;
typedef enum {
UIKeyboardTypeDefault,默認鍵盤,支持所有字符
UIKeyboardTypeASCIICapable, 支持ASCII的默認鍵盤
UIKeyboardTypeNumbersAndPunctuation, 標準電話鍵盤,支持+*#字符
UIKeyboardTypeURL,URL鍵盤,支持.com按鈕 只支持URL字符 UIKeyboardTypeNumberPad,數(shù)字鍵盤 UIKeyboardTypePhonePad,電話鍵盤
UIKeyboardTypeNamePhonePad, 電話鍵盤,也支持輸入人名 UIKeyboardTypeEmailAddress, 用于輸入電子 郵件地址的鍵盤
UIKeyboardTypeDecimalPad,數(shù)字鍵盤 有數(shù)字和小數(shù)點
UIKeyboardTypeTwitter,優(yōu)化的鍵盤,方便輸入@、#字符
UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, } UIKeyboardType;
//首字母是否大寫
text.autocapitalizationType = UITextAutocapitalizationTypeNone;
typedef enum {
UITextAutocapitalizationTypeNone, 不自動大寫
UITextAutocapitalizationTypeWords, 單詞首字母大寫
UITextAutocapitalizationTypeSentences, 句子的首字母大寫
UITextAutocapitalizationTypeAllCharacters, 所有字母都大寫 } UITextAutocapitalizationType;
//return鍵變成什么鍵
text.returnKeyType =UIReturnKeyDone;
typedef enum {
UIReturnKeyDefault, 默認 灰色按鈕,標有Return
UIReturnKeyGo, 標有Go的藍色按鈕
UIReturnKeyGoogle,標有Google的藍色按鈕,用語搜索
UIReturnKeyJoin,標有Join的藍色按鈕
UIReturnKeyNext,標有Next的藍色按鈕
UIReturnKeyRoute,標有Route的藍色按鈕
UIReturnKeySearch,標有Search的藍色按鈕
UIReturnKeySend,標有Send的藍色按鈕
UIReturnKeyYahoo,標有Yahoo的藍色按鈕
UIReturnKeyYahoo,標有Yahoo的藍色按鈕
UIReturnKeyEmergencyCall, 緊急呼叫按鈕 } UIReturnKeyType;
//鍵盤外觀
textView.keyboardAppearance=UIKeyboardAppearanceDefault; typedef enum { UIKeyboardAppearanceDefault,默認外觀,淺灰色 UIKeyboardAppearanceAlert,深灰 石墨色
} UIReturnKeyType;
//設置代理 用于實現(xiàn)協(xié)議
text.delegate = self;
//把textfield加到視圖中
[self.window addSubview:text];//最右側加圖片是以下代碼
左側類似
UIImageView *image=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@“right.png”]];
text.rightView=image;
text.rightViewMode = UITextFieldViewModeAlways;
typedef enum {
UITextFieldViewModeNever,UITextFieldViewModeWhileEditing,UITextFieldViewModeUnlessEditing,UITextFieldViewModeAlways } UITextFieldViewMode;
//按return鍵 鍵盤往下收 becomeFirstResponder
類要采用UITextFieldDelegate協(xié)議
text.delegate = self;聲明text的代理是我,我會去實現(xiàn)把鍵盤往下收的方法 這個方法在UITextFieldDelegate里所以我們要采用UITextFieldDelegate這個協(xié)議
-(BOOL)textFieldShouldReturn:(UITextField *)textField { [text resignFirstResponder];//主要是[receiver resignFirstResponder]在哪調用就能把receiver對應的鍵盤往下收 return YES;}
重寫繪制行為
除了UITextField對象的風格選項,你還可以定制化UITextField對象,為他添加許多不同的重寫方法,來改變文本字段的顯示行為。這些方法都會返回一個CGRect結構,制定了文本字段每個部件的邊界范圍。以下方法都可以重寫。
– textRectForBounds:
//重寫來重置文字區(qū)域
– drawTextInRect:
//改變繪文字屬性.重寫時調用super可以按默認圖形屬性繪制,若自己完全重寫繪制函數(shù),就不用調用super了.– placeholderRectForBounds: //重寫來重置占位符區(qū)域
– drawPlaceholderInRect: //重寫改變繪制占位符屬性.重寫時調用super可以按默認圖形屬性繪制,若自己完全重寫繪制函數(shù),就不用調用super了.– borderRectForBounds: //重寫來重置邊緣區(qū)域 – editingRectForBounds: //重寫來重置編輯區(qū)域
– clearButtonRectForBounds: //重寫來重置clearButton位置,改變size可能導致button的圖片失真 – leftViewRectForBounds: – rightViewRectForBounds: 委托方法
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
//返回一個BOOL值,指定是否循序文本字段開始編輯
return YES;}
-(void)textFieldDidBeginEditing:(UITextField *)textField{ //開始編輯時觸發(fā),文本字段將成為first responder }
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField{
//返回BOOL值,指定是否允許文本字段結束編輯,當編輯結束,文本字段會讓出first responder
//要想在用戶結束編輯時阻止文本字段消失,可以返回NO
//這對一些文本字段必須始終保持活躍狀態(tài)的程序很有用,比如即時消息
return NO;}
-(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
//當用戶使用自動更正功能,把輸入的文字修改為推薦的文字時,就會調用這個方法。
//這對于想要加入撤銷選項的應用程序特別有用
//可以跟蹤字段內(nèi)所做的最后一次修改,也可以對所有編輯做日志記錄,用作審計用途。
//要防止文字被改變可以返回NO
//這個方法的參數(shù)中有一個NSRange對象,指明了被改變文字的位置,建議修改的文本也在其中
return YES;}
-(BOOL)textFieldShouldClear:(UITextField *)textField{
//返回一個BOOL值指明是否允許根據(jù)用戶請求清除內(nèi)容
//可以設置在特定條件下才允許清除內(nèi)容
return YES;}
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
//返回一個BOOL值,指明是否允許在按下回車鍵時結束編輯
//如果允許要調用resignFirstResponder 方法,這回導致結束編輯,而鍵盤會被收起[textField resignFirstResponder];//查一下resign這個單詞的意思就明白這個方法了
return YES;}
通知
UITextField派生自UIControl,所以UIControl類中的通知系統(tǒng)在文本字段中也可以使用。除了UIControl類的標準事件,你還可以使用下列UITextField類特有的事件
UITextFieldTextDidBeginEditingNotification UITextFieldTextDidChangeNotification UITextFieldTextDidEndEditingNotification 當文本字段退出編輯模式時觸發(fā)。通知的object屬性存儲了最終文本。因為文本字段要使用鍵盤輸入文字,所以下面這些事件發(fā)生時,也會發(fā)送動作通知
UIKeyboardWillShowNotification //鍵盤顯示之前發(fā)送 UIKeyboardDidShowNotification //鍵盤顯示之后發(fā)送 UIKeyboardWillHideNotification //鍵盤隱藏之前發(fā)送 UIKeyboardDidHideNotification //鍵盤隱藏之后發(fā)送
1、Text :設置文本框的默認文本。
2、Placeholder : 可以在文本框中顯示灰色的字,用于提示用戶應該在這個文本框輸入什么內(nèi)容。當這個文本框中輸入了數(shù)據(jù)時,用于提示的灰色的字將會自動消失。
3、Background :
4、Disabled : 若選中此項,用戶將不能更改文本框內(nèi)容。
5、接下來是三個按鈕,用來設置對齊方式。
6、Border Style : 選擇邊界風格。
7、Clear Button : 這是一個下拉菜單,你可以選擇清除按鈕什么時候出現(xiàn),所謂清除按鈕就是出一個現(xiàn)在文本框右邊的小 X,你可以有以下選擇:
7.1 Never appears : 從不出現(xiàn)
7.2 Appears while editing : 編輯時出現(xiàn)
7.3 Appears unless editing :
7.4 Is always visible : 總是可見
8、Clear when editing begins : 若選中此項,則當開始編輯這個文本框時,文本框中之前的內(nèi)容會被清除掉。比如,你現(xiàn)在這個文本框 A 中輸入了 “What”,之后去編輯文本框 B,若再回來編輯文本框 A,則其中的 “What” 會被立即清除。
9、Text Color : 設置文本框中文本的顏色。
10、Font : 設置文本的字體與字號。
11、Min Font Size : 設置文本框可以顯示的最小字體(不過我感覺沒什么用)
12、Adjust To Fit : 指定當文本框尺寸減小時,文本框中的文本是否也要縮小。選擇它,可以使得全部文本都可見,即使文本很長。但是這個選項要跟 Min Font Size 配合使用,文本再縮小,也不會小于設定的 Min Font Size。接下來的部分用于設置鍵盤如何顯示。
13、Captitalization : 設置大寫。下拉菜單中有四個選項:
13.1 None : 不設置大寫
13.2 Words : 每個單詞首字母大寫,這里的單詞指的是以空格分開的字符串
13.3 Sentances : 每個句子的第一個字母大寫,這里的句子是以句號加空格分開的字符串
13.4 All Characters : 所以字母大寫
14、Correction : 檢查拼寫,默認是 YES。
15、Keyboard : 選擇鍵盤類型,比如全數(shù)字、字母和數(shù)字等。
16、Appearance:
17、Return Key : 選擇返回鍵,可以選擇 Search、Return、Done 等。
18、Auto-enable Return Key : 如選擇此項,則只有至少在文本框輸入一個字符后鍵盤的返回鍵才有效。
19、Secure : 當你的文本框用作密碼輸入框時,可以選擇這個選項,此時,字符顯示為星號。
1.Alignment Horizontal 水平對齊方式 2.Alignment Vertical 垂直對齊方式
3.用于返回一個BOOL值 輸入框是否 Selected(選中)Enabled(可用)Highlighted(高亮)
限制只能輸入特定的字符
(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSCharacterSet *cs;
cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@“"];//按cs分離出數(shù)組,數(shù)組按@”“分離出字符串
BOOL canChange = [string isEqualToString:filtered];
return canChange;}
上面那個NUMBERS是一個宏,可以在文件頂部定義:
#define NUMBERS @”0123456789n”(這個代表可以輸入數(shù)字和換行,請注意這個n,如果不寫這個,Done按鍵將不會觸發(fā),如果用在SearchBar中,將會不觸發(fā)Search事件,因為你自己限制不讓輸入n,好慘,我在項目中才發(fā)現(xiàn)的。)所以,如果你要限制輸入英文和數(shù)字的話,就可以把這個定義為: #define kAlphaNum @”ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789″。當然,你還可以在以上方法return之前,做一提示的,比如提示用戶只能輸入數(shù)字之類的。如果你覺得有需要的話。
限制只能輸入一定長度的字符
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;{ //string就是此時輸入的那個字符 textField就是此時正在輸入的那個輸入框 返回YES就是可以改變輸入框的值 NO相反
if([string isEqualToString:@”n“])//按回車可以改變
{
return YES;
}
NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];//得到輸入框的內(nèi)容
if(self.myTextField == textField)//判斷是否時我們想要限定的那個輸入框
{
if([toBeString length] > 20){ //如果輸入框內(nèi)容大于20則彈出警告
textField.text = [toBeString substringToIndex:20];
UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:nil message:@”超過最大字數(shù)不能輸入了“ delegate:nil cancelButtonTitle:@”O(jiān)k" otherButtonTitles:nil, nil] autorelease];
[alert show];
return NO;
}
}
return YES;}