Thursday, October 29, 2009

Thủ thuật nhỏ trong VB p1

Sau đây là một số câu hỏi nhỏ của các bạn tôi, bạn có thể dùng chúng để tô điểm thêm cho ứng dụng Visual Basic của mình. Đây không phải là những điều cao siêu, lạ lẵm và cũng không phải là cách giải thích tối ưu nhưng nó giúp chúng ta hiểu thấu đáo được một số vấn đề. Hy vọng sau khi đọc xong bạn sẽ "à thì ra là vậy ! ..."

Làm sao để có được những dòng chữ chạy liên tục trên màn hình ?

Thật ra chuyện này cũng dễ hiểu, bạn chỉ cần cắt chữ ở đầu đoạn văn bản và gắn nó vào cuối đoạn văn bản, làm liên tục như vậy sẽ tạo cho người dùng có cảm giác là dòng chữ đang chạy. Bạn hãy mở 1 form mới, trên đó tạo 1 textbox (Text1), gán 1 dòng văn bản vào thuộc tính text của textbox, tạo 1 timer (timer1).

Khi form load sẽ khởi động Timer với trị Interval = 100

Private Sub Form_Load()
Timer1.Interval = 100
End Sub

Và timer sẽ xử lý các lệnh theo yêu cầu của bạn mỗi khi nó phát sinh 1 sự kiện thời gian.
Private Sub Timer1_Timer()
Dim x As String
Dim y As String
'gán x = 1 ký tự đầu dòng văn bản
x = Left(Text1.Text, 1)
'gán y là phần còn lại

y = Right(Text1.Text, Len(Text1.Text) - 1)
'Hiển thị trở lại textbox theo thứ tự ngược lại.
Text1.Text = y + x
End Sub

Bạn có thể thay textbox bằng labelbox để người dùng không thể can thiệp vào dòng văn bản đang chạy, lúc này bạn phải thay đổi thuộc tính caption thay vì text của textbox.

Canh form giữa màn hình khi hiển thị ?

Chỉ việc thêm đính lệnh này vào thủ tục tình huống FormLoad của form tương ứng.

Me.Move (Screen.Width - Me.Width)\2, Screen.Height.Height - Me.Height)\2

Làm thế nào để tạo hiệu ứng 3D ?

Bạn hãy mở 1 form trống, trên đó tạo 1 image, vẻ 4 đối tượng Line. Khảo sát tình huống MouseMove của Image, khi rê mouse trên Image lập tức 4 đối tượng line sẽ hiển thị xung quanh Image. Còn 3D ư ? Bạn chỉ việc cho 2 line của cạnh phải và dưới màu đen (Line1, Line2), còn 2 line của cạnh trái và trên màu trắng (Line3, Line4).

Form khi thiết kế

Khi di chuyển Mouse trên form, mọi chuyện đều bình thường, 4 đối tượng Line không xuất hiện (thuộc tính Visible=False)

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Line1.Visible = False
Line2.Visible = False
Line3.Visible = False
Line4.Visible = False
End Sub

Khi di chuyển mouse trên đối tượng Image, 4 line sẽ được xếp xung quanh và hiển thị lại bằng cách thay đổi các thuộc tính X1, Y1, X2, Y2 của line. Nhờ có màu sắc thích hợp nên ta có cảm giác Image nổi lên khi rê mouse đến.

Khi rê mouse đến

Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Cạnh Phải
Line1.X1 = Image1.Left + Image1.Width
Line1.Y1 = Image1.Top
Line1.X2 = Image1.Left + Image1.Width
Line1.Y2 = Image1.Top + Image1.Height
'Cạnh dưới
Line2.X1 = Image1.Left
Line2.Y1 = Image1.Top + Image1.Height
Line2.X2 = Image1.Left + Image1.Width
Line2.Y2 = Image1.Top + Image1.Height
'Cạnh trái
Line3.X1 = Image1.Left
Line3.Y1 = Image1.Top
Line3.X2 = Image1.Left
Line3.Y2 = Image1.Top + Image1.Height
'Phía trên
Line4.X1 = Image1.Left
Line4.Y1 = Image1.Top
Line4.X2 = Image1.Left + Image1.Width
Line4.Y2 = Image1.Top
'Cho hiện lại 4 đối tượng Line
Line1.Visible = True
Line2.Visible = True
Line3.Visible = True
Line4.Visible = True
End Sub

Khi nhấn Mouse trên Image, sự kiện MouseDown (nhấn mouse) phát sinh và đảo màu của 4 đối tượng line tạo cảm giác Image bị lõm xuống.

Và khi nhấn mouse

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Line1.BorderColor = QBColor(7) 'Màu trắng
Line2.BorderColor = QBColor(7)
Line3.BorderColor = QBColor(0) 'Màu đen
Line4.BorderColor = QBColor(0)
End Sub

Sau khi nhấn, thả mouse ra làm phát sinh sự kiện MouseUp, các lệnh cần xử lý trong sự kiện này là trả màu sắc lại như ban đầu.

Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Line1.BorderColor = QBColor(0)
Line2.BorderColor = QBColor(0)
Line3.BorderColor = QBColor(7)
Line4.BorderColor = QBColor(7)
End Sub

Thấy có vẻ hơi cực khổ quá các bạn nhỉ ?

No comments:

Post a Comment