hn4u @ Last updated 21/11/04 22:42
Go to my homepage at http://4u.jcisio.com
Full version available at http://4u.jcisio.com/r/article367.htm

Vovisoft

Form

Làm hiện ra một Form khác

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

Làm cho Form luôn luôn hiện ra một chỗ và cùng một cỡ

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

Dùng Event nào để update Form?

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.

Làm sao ta biết  một Form  đã được Loaded?

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

Không cho User Unload Form bằng cách click dấu x

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.

Làm một Form giống một Form có sẵn

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.


hainam4u @ Last updated 21/11/04 22:42
Go to my homepage at http://4u.jcisio.com