Giả tỉ bạn đang ở trong Form1 và muốn làm cho Form2 hiện ra, dùng:
Mã lệnh (VB) |
Form2.Show |
Khi muốn dấu Form2, dùng:
Mã lệnh (VB) |
Form2.Hide |
Khi một Form được 'Show' lần đầu tiên, nó được 'Load' (cho thành hình) và 'Show' ngay sau đó. Khi một Form đã có rồi, tức là đã được 'Load' rồi, lúc bạn 'Hide' nó cũng giống như kéo một tấm màn che nó lại. Kế đó, khi bạn 'Show' nó cũng giống như mở màn ra, không có gì ảnh hưởng Form.
Bạn có thể cho Form biến mất bằng cách 'Unload' nó, như:
Mã lệnh (VB) |
Unload Form2 |
Lần tới khi bạn 'Show' nó, Form sẽ được 'Load' trở lại. Mỗi khi Form được 'Load', nó 'execute' sub Form_Load. Form_Load là nơi bạn viết các 'statements' để 'initialise' Form, tức là những gì cần phải được sắp xếp cho sẵn sàng trước khi Form thành hình.
Do đó bạn phải quyết định khi nào dùng Unload hay Hide đê? Làm cho Form biến mất. Nhớ rằng mỗi khi Form được 'Load' thì nó 'initialise' và mất một ít thì giờ.
Nếu bạn muốn làm cho một Form hiện ra và khiến nó dành nhận tất cả 'keystrokes' và 'mouse clicks' thì dùng:
Mã lệnh (VB) |
Form2.Show vbModal |
Ngay sau khi Form2 được 'Show' dưới dạng vbModal, nó dành ngay CPU process, đến đổi statement nằm ngay dưới đó trong Form1 cũng đợi cho đến khi Form2 biến mất bằng Unload hay Hide mới chạy tiếp được.
Nếu bạn muốn Form2 hiện ra trong Modeless (không phải Modal) nhưng luôn luôn nằm trên Form1, ngay cả khi Form1 trở thành active, dùng:
Mã lệnh (VB) |
Form2.Show ,Me ' Me là Form1 |
Trong Sub Form_Load, dùng
Mã lệnh (VB) |
Move fLeft, fTop, fWidth, fHeight |
Để nhớ thứ tự các parameters trong Sub Move hãy nhớ tọa độ có X,Y. Trong Sub Move ta nói đến vị trí X,Y ( fLeft, fTop) rồi cỡ X,Y (fWidth, fHeight).
Move là một method có thể được dùng cho Form hay Control và rất hiệu quả.
Nếu muốn Frame1 luôn luôn nằm ở đỉnh trái, dùng:
Mã lệnh (VB) |
Frame1.move 0,0 |
Nếu muốn chỗ và cỡ của Form 'configurable' (user có thể thay đổi) thì chứa các dừ kiện đó trong Registry rồi đọc fLeft, fTop, fWidth, fHeight từ Registry trong Sub Form_Load. ( xem Function GetSetting )
Để cho Form2 hiện ra bên phải và ngang hàng với Form1, trom Sub Form_Load của Form2 dùng:
Mã lệnh (VB) |
Sub Form_Load()
Move Form1.Width, Form1.Top End Sub |
Mỗi khi trở lại một Form sau khi làm việc ở một Form khác, ta muốn 'update' một số dữ kiện đang được 'display' để phản ảnh nhừng thay đổi vừa mới xãy ra.
Để code trong Sub Form_Activate.
Dùng Function sau đây của Microsoft:
Mã lệnh (VB) |
Function FormIsLoaded(MyFormName As String) As Boolean
' Determines if a form is loaded. Dim i As Integer FormIsLoaded = False For i = 0 To Forms.Count - 1 If Forms(i).FormName = MyFormName Then FormIsLoaded = True Exit Function ' Quit function once form has been found. End If Next i End Function |
Đi qua hết collection của Forms để xem có Form nào trùng tên.
Cách dùng:
Mã lệnh (VB) |
If FormIsLoaded("Form2") then
MsgBox "Form2 is already loaded" End If |
Nhiều khi bạn muốn thu xếp mọi chuyện đàng hoàng trước khi Unload một Form nên bạn làm một Exit hay Close button cho user dùng. Để làm mất dấu X phía đỉnh phải, 'set' Property ControlBox của Form ra False. Nếu làm thế nầy có điểm bất lợi là khi 'minimize' Form, ta không thấy icon của Form. Có một cách vẫn để nguyên dấu X, nhưng khi user click nó thì ta check 'unloadMode' trong Sub Form_QueryUnload để biết lý do tại sao Form phải unload. Trong Sub Form_Unload có thể 'assign' Cancel ra True để 'abort' Unload.
Nếu bạn muốn không cho user minimise Form thì set Property MinButton ra False.
Nhiều khi bạn muốn làm một Form giống giống một Form đã có sẵn trong Project. Thí dụ bạn muốn 'duplicate' Form2 để làm nên một Form3 để sau đó sữa chữa nó chút đỉnh. Bạn làm như sau:
Bây giờ bạn có thêm Form3 trong Project, trong khi Form2.frm vẫn còn đó nhưng không còn thuộc về Project nữa. Nếu bạn muốn cho nó vào Project trở lại thì dùng Project | Ad File .. menu command để chọn Form2.frm bỏ vào Project.