Ch

ng Ba - Form và các Controls thông th

ng

ươ

ườ

ng trình, Form n y s ề ạ ộ

H u h t các ch

ệ ươ ả ượ ệ ệ ầ ẽ c gì nhi u, nên ề ng trình VB6 đ u có ít nh t m t Form. Khi ta ch y ch ấ c h t đ ta ra l nh nó làm chuy n gì. Cái Form tr ng không ch làm đ ộ ố ữ ể ng trình ệ ấ ể ươ ế ầ ươ hi n ra tr ướ ế ể ta đ t lên Form nh ng controls nh Textbox(h p đ đánh ch vào), Label(nhãn), ữ ặ Commandbutton(nút b m m nh l nh), .v.v.. Các controls cho ta enter các d ki n đ ch ữ ệ dùng x lý, và các controls cũng hi n th (display) k t qu cho chúng ta xem. ư ệ ể ử ế ả ị

S p đ t controls lên Form

t k m t ch ớ ươ ằ ườ ắ ầ ể ế ế ộ ậ ọ ố ộ ạ ẵ ồ ặ ộ ồ ủ ấ ẽ ộ ở ủ ộ ấ ứ ế ạ ờ ỗ ố ế ệ Menu View|Toolbox ể ệ ấ ằ ạ ồ ng trình m i (New Project) b ng cách ch n Standard EXE, môi Ta hãy b t đ u thi tr ng tri n khai l p trình (IDE) cho b n s n m t Form tên là Form1. Mu n đ t m t Control lên ộ Form, click hình cái Control trong Toolbox r i Drag (b m nút trái c a con chu t r i kéo cho thành hình ch nh t tr c khi buông nút trái ra) con chu t trên Form v thành c c a Control. M t cách ộ ữ ậ ướ ẽ ệ khác đ đ t m t control lên Form là doubleclick cái Control trong Toolbox, m t hình control s hi n ộ ể ặ ạ ra trên Form. K đó b n d i control đi đ n ch mình mu n và resize nó. N u b t c lúc nào b n ế không th y Túi đ ngh (Toolbox) n m bên trái, b n có th dùng m nh l nh đ b t nó hi n ra. Có m t cách khác là click lên toolbox icon trên toolbar chính c a VB6. ể ắ ề ộ ủ ệ

ộ ồ ạ ệ ủ ớ ằ ấ ể ờ ộ ớ ơ góc ph i phía trên. N u right click trên Toolbox, nó ể ả ộ b n) . N u m t ế ườ ể ỏ ể Nên nh r ng Toolbox cũng là m t window nh các window khác. Khi nó hi n lên r i b n có th ư n m (b m nút trái c a con chu t và gi nh v y ch không buông ra) title nó đ d i đi n i khác. ữ ư ậ ắ ấ x B n có th đóng nó b ng cách click lên d u ế ạ ở ằ s display context sensitive menu, trong đó có property dockable (có th đ u ể ậ ở ế ẽ window là dockable, sau khi b n d i nó đi kh i vi trí docked bình th ng c a nó, b n có th dock ạ ủ ờ nó l ạ i nh c b ng cách double click lên title c a nó. ư ủ ằ ủ ạ

Resize và di chuy n control

ạ ẽ ệ ộ ọ Khi b n select m t control (click lên nó), chung quanh control s hi n ra resize handle, 8 nút đen d c theo chu vi c a control. ủ

ủ ể ạ ộ ẽ ớ ấ ộ Click lên các nút đen c a resize handle, b n có th resize control. Có m t cách khác đ resize control ể là dùng Shift + ArrowKey. B m nút Shift trong khi b m m t arrow key, control s l n ra hay thu ấ h p theo chi u c a ArrowKey. ề ủ ẹ

c. Thí d nh ư c t ướ ố ộ ố ỏ ơ ượ ể ạ ụ ư L u ý: M t s control có kích th Combobox, nó ph i cao đ đ display m t hàng text. i thi u, b n không th làm cho nó nh h n đ ể ộ ủ ể ả

1

ự ư ế ấ ề ủ nh th , b m nút Ctrl trong khi b m m t arrow key, control s di chuy n theo chi u c a ẽ ể ấ ộ ươ T ng t ArrowKey.

ươ ể ạ ổ ấ ằ ệ ễ ế ị ng trình ch y (at run-time), trong code ta có th thay đ i kích Ngoài ra, nên nh r ng trong lúc ch ớ ằ th c và v trí các controls d dàng, th m chí có th làm cho chúng hi n ra hay bi n m t b ng cách ể ậ ướ s a đ i value các property left, top, width, height và visible c a các controls. ử ổ ủ

Alignment Grid

ặ ạ ắ ạ ộ ể ữ ắ ọ ủ ể ạ ấ ủ ấ ằ ấ ế ể ế Đ giúp b n s p đ t ngay ng n các controls trên m t form, VB6 cho b n Alignment Grid. Nó là nh ng d u đen c a các hàng d c và xuôi trên form. B n có th làm cho các d u đen c a grid trên form bi n m t b ng cách dùng menu command Tools | Options đ display Option Dialog, k đó ch n Tag General và clear checkbox "Show Grid": ọ

ạ ề ộ ề ầ ổ ị c nh nh t c a Width hay Height là 24. Hãy so sánh hai tr ả ấ ủ ướ ấ i đây: ủ B n cũng có th nhân d p n y thay đ i kho ng cách chi u r ng (Width) và chi u cao (Height) c a ể các ch m đen c a grid. Kích th ườ ng ủ h p form có và không có Show Grid nh d ợ ỏ ư ướ

Control Locking

2

ộ ạ ướ ủ ắ ặ ờ Format | Lock c và v trí c a các control trên form r i, r t d ta tình c thay đ i ổ ộ ặ i. Sau khi khóa, cái hình ng khóa trên menu b chìm xu ng. M t khi b n đã s p đ t kích th ồ ấ ễ ị các đ c tính y vì vô ý click lên m t control. Do đó VB6 cho ta Menu command ấ Controls đ khóa chúng l ể ạ ố ố ị

c ho c v trí c a chúng thì nh dùng Menu command ế ầ ạ ố ổ ặ ị ớ i. Sau khi m khóa, cái hình ng khóa trên menu hi n ra bình th ng. N u sau n y b n mu n thay đ i kích th ướ Format | Lock Controls l ở ạ ệ ườ ủ ố

Cài đ t các Properties c a Form

ng đ n di n m o v t lý (physical appearance) c a nó. ộ ả ề ưở ủ ạ ậ ế ị ế ể ủ ế ả c hi u th trong title. N u Property BorderStyle c a form ượ ể ế ị ủ ế ấ ạ ợ ố ỏ ủ

Nhi u property c a m t form nh h ệ ủ Property Caption s quy t đ nh text đ ị ẽ không ph i là Sizable thì User không th resize form at run-time. Property Icon quy t đ nh hình icon đu c dùng trong title c a form, nh t là khi form thu nh (minimized). N u b n không mu n cho phép User minimize hay maximize form thì set value c a property MinButton, MaxButton ra False. N u property ControlBox là False thì form s không có nút minize, maximize hay close ( ẽ ph i c a nó, đ ng th i form cũng không display c icon bên góc trái title nh trong hình d x) trên góc i đây: ế ả ủ ướ ư ả ồ ờ

c thay đ i trong design time b ng cách di chuy n hình ị ầ ủ ể ượ ể ằ ổ V trí đ u tiên (top,left) c a form có th đ nh c a nó trong window Form Layout: ỏ ủ

c bình th ng (normal=0), hay minimized (=1), ẽ ị ướ ườ

3

ẽ ượ ư ặ ằ Property WindowState xác đ nh Form s có kích th maximized =(2). L u ý là property Font c a Form s đ ủ control lên form, property Font c a control y s t c các control n m trên nó th a k . T c là khi b n đ t m t ộ ạ đ ng tr nên gi ng y nh c a form. ủ ừ ế ứ ố ấ ẽ ự ộ ư ủ ở

Vài Event thông d ng c a Form

Private Sub CmdCreateForms_Click()

Dim MyForm, YourForm

Set MyForm = New Form2

MyForm.Caption = "This is My Form"

MyForm.Show

MyForm.Move 1000, 1000

Set YourForm = New Form2

YourForm.Caption = "YOUR FORM IS HERE"

YourForm.Show

YourForm.Move 2000, 2000

End Sub

m t ph ể ố ệ ng t ề ầ ng di n, Form cũng gi ng nh Control. Ta có th instantiate m t form nhi u l n i đây, ta instantiate Form2 hai l n đ có MyForm ươ ư nhau. Trong thí d d ụ ướ ộ ầ ể ợ Nhìn t ươ ừ ộ đ có nhi u form t ề ể và YourForm:

M t Form cũng có nhi u Events r t h u d ng. ề ấ ữ ụ ộ

Private Sub Form_Load()

Timer1.Interval = 500

Timer1.Enabled = True

End Sub

Private Sub Timer1_Timer()

Timer1.Enabled = False ' Timer1_Timer only execute once

txtName.Setfocus ' Make Tab Cursor start at TextBox txtName

End Sub

Form_Initialize: Event n y xãy ra tr ầ ấ ầ c nh t và ch m t l n thôi khi ta instantiate form đ u t c các ỉ ộ ầ ầ ể ự ấ ả ữ ệ ả ướ tiên. Ta dùng Form_Initialize event đ th c hi n nh ng gì c n ph i làm chung cho t instances c a form n y. ủ ầ ầ ỗ ầ ộ ộ Form_Load: Event n y xãy ra m i l n ta instantiate m t form. N u ta ch dùng m t instance ng trình thì Form_Load coi nh t ấ ủ ế ng đ ư ươ ỉ ớ ng v i ươ ươ ể ể ạ ộ ệ ấ ằ ờ ố ộ ả c hoàn t duy nh t c a m t form trong ch ộ Form_Initialize. Ta dùng Form_Load event đ initialise variables, controls v.v. cho instance n y. ầ ư Bên trong Form_Load b n không th dùng Setfocus cho m t control nào trên form vì form ch a h n thành hình (ra đ i). Mu n làm vi c y b n ph i delay (trì ho n) m t chút xíu b ng cách ạ ẳ dùng Control Timer đ đ i cho Form_Load đ ượ ả t. Thí d : ụ ể ợ ấ

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

4

Form_Activate: M i l n m t form tr nên active (current) thì nó generate m t Activate ỗ ầ ộ ở ộ event. Ta có th dùng event n y đ refresh display trên form. ầ ể ể Form_QueryUnload: Khi User click d u ấ x phía trên bên ph i đ close form thì nó generate ả ể QueryUnload event. Syntax c a Sub n y nh d i đây: ư ướ ủ ầ

End Sub

ầ ể ứ ủ ộ ị t ai, task hay form nào mu n close form n y. ố ằ ế ằ t r ng m t form t ộ ế ạ ầ ắ ế ế ượ ể ư ế Unload Form2 ), r i sau đó load tr l ồ ụ ằ t c nh ng gì có ở c loaded r i b n có th hide (làm cho bi n m t) ấ ồ ạ i thì form không có gì thay đ i. Nh ng n u b n Unload m t ộ ạ ổ i b ng cách dùng Form2.Show ở ạ ằ ấ ấ ả ữ ạ ấ c loaded r i thì r t nhanh, còn Unload/Load thì m t ượ ấ ộ ồ

ư ạ ộ ố c loaded và show. Đôi khi b n mu n Load ộ Load Form2 r i m t ng h p đó b n dùng ẽ ượ ườ ệ ữ ướ ạ ồ ợ ồ Event n y cho ta m t d p đ cancel Close action c a form (t c là không cho User close form) b ng ằ cách set Cancel b ng 1. UnloadMode cho ta bi ế đ ng Load hay tr nên active n u b n nh c đ n nó, Ngoài ra, b n cũng nên bi ự ộ ạ thí d nh dùng Form2.List1. Khi m t form đã đ ộ ụ ư nó. K đó, khi b n show form ra tr l ở ạ ạ ế form (thí d b ng cách dùng ch ng h n, thì Form ph i tr i qua quá trình Form_Load, và dĩ nhiên form m t t ẳ ả ả c đây. Ngoài ra, Hide/Show m t form đã đ tr ướ h n. thì gi ờ ơ Khi b n Show m t Form ch a hi n h u thì form s đ ạ c khi Show, trong tr m t form, r i làm vi c v i nó tr ch p sau dùng ệ ớ Form2.Show. ộ ậ

MDI Form

ộ ạ ề ứ ng đ ầ ư ượ ộ ể ứ c dùng trong các application nh wordprocessor đ có th m nhi u ề ượ ỗ ể ở ộ ể ể ể ị ả ộ Project | Add MDI Form. M i VB6 project ch có th có t ỗ ể ố ỉ ạ c hi n th trong m t form con. Đ có m t MDIForm b n ộ i đa m t ạ ộ ộ ể ộ ế ố ạ ả ớ ố c nó đ nó n m ngoài t m hi n th c a form. Trong m t ch ể ể ậ ự ể ế ướ ằ ầ ơ ộ ị ươ c và che các form con, nh ng v n luôn ủ ư i là cho nó v trí (top,left) s âm ng trình dùng MDI ẫ ướ ư ả Đôi khi b n mu n có m t MDI form, t c là m t form có th ch a nhi u form con bên trong. D ng ạ ố MDIform n y th ườ document cùng m t lúc, m i document đ ộ c n ph i dùng menu command ầ MDIform. Mu n m t form tr thành m t form con b n set property MDI Child c a nó thành True. ố ở At run-time b n không th hide (bi n nó thành invisible) m t MDIChild form, nh ng có th ạ minimize nó. N u b n th t s mu n hide nó thì ph i dùng mánh l l n h n kích th ị ủ ớ Form, khi b n click MDI Form nó không nh y ra phía tr luôn n m i. ạ d ằ ở ướ

Controls là gì?

ừ ừ ạ ỏ ố ư ộ ề ữ ề ế ấ ộ Controls v a có hình, v a có code ch y bên trong m t window nho nh , gi ng nh m t form. Khi ta ộ l p trình VB6 ta l p ráp các controls (là nh ng v t d ng ti n ch ) trên m t hay nhi u form đ có ể ậ ụ ậ m t ch ng trình nhanh chóng. Ta giao d ch v i m t control qua ba đ c tính c a control: ộ ộ ươ ủ ặ ớ ị

• •

o

o

Private Sub Foods_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

5

ị ợ ậ ủ ể ấ ạ ế ả ệ ẽ ấ ế ổ ề ụ ặ ề ệ ắ ợ ứ ủ ữ ệ ẽ ự ố ữ ế ớ ẽ ử ộ Properties: t p h p các đ c tính c a control mà ta có th n đ nh lúc design time hay run- time. Có nhi u properties v di n m o, n u ta thay đ i at design time s th y k t qu hi n ra l p t c, thí d Font hay màu s c. ậ ứ Methods: nh ng gì control th c hi n đu c, t c là nh ng kh năng c a nó. ả ự ữ Events: nh ng s c mà control s thông báo cho chúng ta bi ộ ế ễ ế ế t đ n ụ ư ư ẵ t khi nó xãy ra v i control. Khi m t event xãy ra VB6 s x lý m t Event Handler (thí d nh Sub Command1_Click()), mi n là chúng ta vi các event lo i đó. Có m t s Events mà chúng ta th ộ ố ườ t code s n trong đó. N u không có code thì coi nh chúng ta không thèm bi ế ạ Click : xãy ra khi user click lên control. Ta th ng x lý là: ử ng dùng nó cho CommandButton và ườ Listbox. ấ ỗ ộ ộ ng dùng MouseDown Event đ MouseDown, MouseUp : m i khi User b m m t mouse button là có m t MouseDown ể ộ ắ ầ ễ ế ộ Event, khi User buông nó ra thì có m t MouseUp Event. Ta th ườ Popup context sensitive menu hay b t đ u m t di n bi n Drag. Thí d : ụ

If Button = vbRightButton Then ' if Right button was pressed

PopupMenu mnuActions ' popup a menu

End If

End Sub

Private Sub DrinkList_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

DrinkList.drag ' Displaying a drag icon to start the drag process

End Sub

ề ự ố ủ ể ế ị ấ ủ ộ ặ ố ử ừ ế ạ ỗ ừ ụ ạ ế ả ẩ ệ ả ủ ạ i ế ấ ợ t gì v s c , trong khi MouseDown/MouseUp cho ta Đ ý là Click không cho chúng ta thêm chi ti ế c b m và lúc y User có b m nút Shift, Ctrl hay Alt t v trí c a cursor, button nào c a Mouse đ bi ấ ượ ấ không. M i Click là đi đôi v i m t c p MouseDown/MouseUp. N u b n mu n x lý v a Click l n ẫ ớ MouseDown thì ph i c n th n. Thí d b n mu n v a handle Click event v a handle Mouse Drag thì ậ ố ừ ng h p. N u không User ch mu n th y k t qu c a Click mà l ph i làm sao phân bi t hai tr ố ỉ ườ th y control b t đ u display m t Drag icon thì s b c mình. ộ ắ ầ ẽ ự ả ấ

o

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

KeyAscii = 0 ' Swallow the character to avoid side effect

SendKeys "{TAB}" ' Emulate entering a TAB

End If

End Sub

KeyPress : xãy ra khi user Press m t key. Ta th ườ ộ ể ạ ố ấ ậ ị 1 đ n 255, c a key. ng dùng nó cho TextBox đ lo i ra (filter out) các keystrokes ta không ch p nh n. KeyPress cho ta ASCII value, m t con s có giá tr ộ t ế ừ Trong thí d d i đây, m t Enter key s đ c coi nh m t TAB key: ủ ụ ướ ẽ ượ ư ộ ộ

o

ộ ặ ỗ KeyDown, KeyUp : m i KeyPress event là cho ta m t c p KeyDown/KeyUp event. ể ầ

Private Sub Text3_KeyDown(KeyCode As Integer, Shift As Integer)

If (KeyCode >= 112) And (KeyCode <= 123) Then

MsgBox "You pressed the Function key: F" & Trim(Str(KeyCode - 111))

End If

End Sub

KeyDown/KeyUp cho ta KeyCode và Shift value. Đ detect Function key ta c n dùng KeyDown event. Trong thí d d i đây, ta display Function key User b m: ụ ướ ấ

o

Private Sub Text2_GotFocus()

Text2.BackColor = vbYellow

End Sub

6

GLotFocus : Control tr nên active khi nó nh n đ ở ậ ượ ủ ể ổ ư ể ộ ụ i đây: ộ c Focus. Nó s generate m t ẽ GotFocus Event. Ta có th dùng nó đ đ i màu background c a m t text box nh trong thí d d ướ

o

Private Sub Text1_LostFocus()

If Not IsNumeric(Text1.Text) Then

MsgBox "Please enter a number!"

Text1.SetFocus

End If

End Sub

ườ ể ộ ướ LLostFocus : Th ể ng h m t Control GotFocus thì tr ể ng th ườ ầ ệ ế ừ i đây, n u User không đánh vào m t con s trong Textbox Text1 thì s đ ố ở ộ ẽ ượ c c đó có m t Control ộ LostFocus. Ta có th dùng Event n y đ Validate entry data hay thu x p công chuy n cho m t ộ control v a m t Focus. ấ Trong thí d d ụ ướ thông báo và Tab Cursor s tr l i Textbox Text1. ế ẽ ở ạ

o

Private Sub Text2_DragDrop(Source As Control, X As Single, Y As Single)

If TypeOf Source Is ListBox Then

Text2.Text = Source.Text

End If

End Sub

rDagDrop : xãy ra khi ta drop m t cái gì lên control . Parameter Source cho ta bi ộ ừ ề ề ể ậ ng h p đó ta ph i test xem ho c Control Type, ho c Name ho c Tag value ặ ặ ế t nhi u control ặ ợ ể ả ử ế ộ t Listbox nào, thì ta copy dòng đ c Drag và Drop. Nhi u khi m t control có th nh n drop t Control nào đã đ ộ ượ khác nhau. Trong tr ườ c a Source control là gì đ tùy nghi x lý. ủ Trong thí d d ụ ướ không c n bi ế i đây, khi User drop mouse xu ng Textbox Text2, n u Source là m t Listbox, c ch n trong Listbox y qua Textbox Text2. ấ ố ượ ầ ọ

TextBox

ợ ấ ể ậ ẵ ườ ng ườ ủ ế t là Text2. Ta có th disable (khi n nó b t l c, không ph n ng gì h t ủ text, t c là th ứ ấ ự ể ử ổ ng th ả ứ ế ớ c vi t t ế ắ ộ ể ượ ử ổ ữ ẽ ị ờ ằ ử ổ ữ ằ ộ ể ượ ữ TextBox là control đu c dùng nhi u nh t đ display text và nh n keystroke c a Userđ s a đ i text ề có s n hay cho vào text m i. Property chính và default c a Textbox là Text2.text có th đ ể và không cho s a đ i) m t text box b ng cách set Property Enable ra False (ch s b m đi), hay Lock (không cho s a đ i) m t text box b ng cách set Property Locked ra True (ch không b m ). ị ờ Text có th đ ả ủ ộ c Align (Alignment Property) đ display bên trái, chính gi a hay bên ph i c a h p ể nó.

7

ủ B n có th ch n BackColor và ForeColor cho background và text c a TextBox. Dùng Tag Palette khi ch n màu đ có đúng m t màu b n mu n. ể ọ ể ạ ọ ạ ộ ố

ọ ể ự ớ ạ ớ ạ ố ở ữ ể ằ ề ể ế ạ ớ ấ ế ỗ ố ng r ng b n đã k t thúc editing. Dĩ nhiên b n có th l a ch n Font và c ch cho Text v i Font Property. B n gi i h n s characters mà User có th enter cho TextBox b ng cách set MaxLength Property. ạ N u Property Multiline là True thì User có th enter nhi u hàng. At Design time, n u b n mu n ố ế enter multiline thì ph i nh b m nút Ctrl khi press Enter m i khi xu ng hàng. N u không VB6 IDE t ưở ả ế ằ ạ

Private Sub Command1_Click()

Dim TextStr

TextStr = "Bau ra bau lay ong cau" & vbCrLf ' Note: vbCrLf = chr(13) & chr(10)

TextStr = TextStr & "Bau cau ca bong ngat dau kho tieu"

Text1.Text = TextStr

End Sub

ố ả ỗ ố Mu n assign cho text box multiline text thì ph i nhét vào m i cu i hàng CarriageReturn và LineFeed characters. Thí d nh : ụ ư

c cho User v cách dùng m t textbox nào đó thì có th dùng Property ạ ế ướ ố ể ề ộ N u b n mu n mách n ToolTipText đ nó display mách n c m i khi mouse cursor n m lên textbox. ể ướ ằ ỗ

8

ừ ỗ ị ể ờ cho Tab Cursor d ng m i khi User b m nút TAB đ d i m t TextBox nào thì Dùng Property TabIndex đ n đ nh th t ứ ự TAB Cursor đ n Textbox k ti p. N u b n không mu n Tab Cursor d ng ạ ế ấ ừ ở ộ ể ấ ế ế ế ố

ằ Textbox có Property Enabled b ng set Property TabStop nó thành False. Tab Cursor không d ng False, nh ng v n d ng Textbox có property Locked b ng True. ừ ở ằ ẫ ừ ở ư

ố ộ *". Làm i khác ứ ộ ằ c trong khi User enter m t Paswword. N u b n mu n dùng Textbox làm m t Password field thì set Property PasswordChar b ng " ạ ế ằ nh th s ép bu c Textbox display m i character b ng PasswordChar, t c là " *", đ ng ể ườ ọ ư ế ẽ không đ c đ ộ ọ ượ

c tình hình hi n th i c a Textbox: SelText cho b n dãy ch đang đ ố ạ ế ệ ờ ủ ữ ạ c ượ t con s ố ủ ế ỗ ượ ố ử ổ ữ ạ ắ ầ ủ ữ ạ ắ ộ ố ấ ạ ố ị

Private Sub Form_Click ()

Dim Search, Where ' Declare variables.

' Get search string from user.

Search = InputBox("Enter text to be found:")

Where = InStr(Text1.Text, Search) ' Find the given string in Text1.Text.

If Where > 0 Then ' If found,

Text1.SelStart = Where - 1 ' set selection start and

Text1.SelLength = Len(Search) ' set selection length.

Else

MsgBox "String not found." ' Notify user.

End If

End Sub

c: Properties SelLength, SelStart và SelText N u b n mu n bi t đ ế ượ selected. SelStart cho b n v trí c a insertion point (ch cursor flashing). SelLength cho bi ị ạ characters đã đ c selected. N u b n mu n s a đ i text trong Textbox: SelText cho b n nhét vào m t dãy ch . SelStart cho b n ạ ạ ế ọ n đ nh v trí b t đ u c a dãy ch b n s p select. SelLength n đ nh s characters b n mu n ch n, ị ị ấ b t đ u t ắ ầ ừ D i đây là m t thí d trong đó ta highlight text tìm đ ướ SelStart. ộ ượ ụ

CommandButton

9

ệ ử ệ ộ ng nh t cho CommanButton là Click. Ta dùng Property Caption c a CommandButton ườ ấ ệ ấ ủ ế ố c ch E trong Caption c a button. ướ ữ ủ ể ấ i. ướ ẽ ớ ộ ạ ộ ữ ể ằ ộ ọ CommandButton r t ti n cho ta dùng vào vi c x lý m t chuy n gì khi User click lên button. Event ta dùng th đ enter cái gì ta mu n display trên button. N u mu n cho phép User dùng ALT+E (đè nút Atl trong ố ể lúc b m nút E) đ generate event click thì nhét d u " ấ &" tr Caption s display ch E v i m t g ch d Ngoài ra ta cũng có th cho thêm m t cái hình vào CommandButton b ng cách ch n m t icon cho property Picture và set Property Style ra Graphical, thay vì Standard.

Private Sub CmdOperation_Click()

If CmdOperation.Caption = "&Stop" Then

CmdOperation.Caption = "St&art"

Else

CmdOperation.Caption = "&Stop"

End If

End Sub

i đây, ủ ể ạ ổ ụ ướ Lúc Run-time b n có th thay đ i hình hay Caption c a CommandButton. Trong thí d d Caption c a CommandButton CmdOperation flip-flop gi a hai values Stop và Start: ủ ữ

Label

ể ủ ụ ư ể ể ỏ ạ ế ẹ ế ằ ằ ườ ủ ẹ ợ ố ng h p Backcolor c a Label làm cho không đ p. ế ể ạ ể ộ ủ ừ ằ ớ ẽ ề M c đích chính c a Label là đ display, không cho User Edit nh Textbox. Do đó ta có th dùng Property Font, ForeColor và Backcolor đ làm cho nó đ p. Ngoài ra Property BorderStyle có th cho ể Label l m xu ng n u b n set nó b ng Fixed Single. N u set property BackStyle b ng Transparent s tránh tr ẽ Label cũng có Property Tabindex. N u b n mu n dùng ALT key đ mang Tab Cursor v m t ề ộ ố s Label có Textbox, hãy đ m t Label v i TabIndex b ng TabIndex c a TextBox tr 1. Gi ả ử ụ ướ i Caption là "&Address" thì ALT+A s mang Tab Cursor v TextBox màu vàng nh trong thí d d ư đây:

Ngoài ra nh r ng b n có th thay đ i Caption c a Label lúc run-time. ớ ằ ủ ể ạ ổ

CheckBox

10

ể ượ ậ ặ ấ ộ ộ ộ ằ ấ ạ ằ ố ủ c dùng đ User xác nh n có đ c tính nào m t cách nhanh chóng. Property Value c a CheckBox đ CheckBox có th là Checked (làm cho h p vuông có d u, b ng 1), Unchecked (làm cho h p vuông ể tr ng không, b ng 0) hay Grayed (làm cho h p vuông có d u màu nh t, b ng 2). M t khi bi ế ằ t r ng ộ ộ ằ CheckBox có Value b ng 1, ta có th đ c Caption c a CheckBox đ dùng n u c n. ế ầ ể ọ ủ ể ằ

ạ ứ ể ể ả B n có th dùng Property Alignment đ làm cho Caption đ ng bên ph i (Left Justify) hay bên trái (Right Justify) c a h p vuông. ủ ộ

OptionButton

ớ ọ ư gi a, thay gì hình vuông v i ớ ấ ở ữ thành m t nhóm, ch a trong ụ ộ gi a nh CheckBox. OptionButton luôn luôn đ ượ ứ ộ ộ ả ứ ộ ạ ở ữ ộ ặ ề ế ố ộ c h t ta ph i Select container, r i k đó ch n OptionButton. S dĩ, t ồ ế ể ộ ở ấ ả t c ả ọ ướ ế ả ằ ề ấ ộ ộ

ậ ự ằ ử ạ ộ ấ ứ gi a). ấ ở ữ t m t OptionButton có th t s n m trong m t container, b n th kéo cái container đi ch ộ ằ ị ờ ử ộ c thì nó không n m trong container. ằ ượ ế ồ container n y sang container khác, b n Cut OptionButton r i ỏ ộ ừ ể ầ ạ ố OptionButton ( còn g i là RadioButton) có hình tròn v i m t ch m m t g ch c qui t m t container. Container là m t Control có kh năng ch a các controls khác. Frame, PictureBox, hay chính Form đ u là Container. Sau khi đ t m t Container lên Form, n u mu n đ m t OptionButton lên Container, tr OptionButtons ph i n m trong m t container là vì b t c lúc nào, nhi u nh t là m t OptionButton trong container có value True (vòng tròn có ch m ỗ Mu n bi ế ố khác. N u OptionButton b d i theo container thì nó n m trong container. M t cách khác là th kéo ế OptionButton ra kh i container. N u kéo ra đ Mu n di chuy n m t OptionButton t Paste nó vô container kia.

11

ằ ộ ộ ộ Đôi khi m t container n m che trên m t control khác. Mu n mang m t container ra phía sau các ố controls khác b n Select container r i dùng Menu command Format | Order | Send to Back. ạ ồ

12