Hiệu ứng làm Form xuất hiện giống AV

Các thủ thuật liên quan đến việc xử lý ứng dụng, biểu mẫu và control
Post Reply
User avatar
phanthequang4101987
Thành viên danh dự
Thành viên danh dự
Posts: 116
Joined: Tue 01/04/2008 6:39 am
Location: Nghi Xuân - Hà Tĩnh
Has thanked: 5 times
Been thanked: 21 times
Contact:

Hiệu ứng làm Form xuất hiện giống AV

Post by phanthequang4101987 »

Thủ thuật: Hiệu ứng làm Form xuất hiện giống AV
Tác giả: Sưu tầm
Mô tả: Form xuất hiện từ dưới lên ngay đồng hồ hệ thống
Thêm vào Form 1 Timer:

Code: Select all

Private Sub Form_Load()    Me.Top = Screen.Height    Me.Left = Screen.Width - Me.Width    Timer1.Interval = 10End Sub Private Sub Timer1_Timer()    Me.Top = Me.Top - 50    If Me.Top < Screen.Height - Me.Height - 300 Then Timer1.Enabled = FalseEnd Sub
†™_Çøø£_™†.......♥.......†™_U††»ñhøç_™†
Đưa người ta chưa đưa qua sông
mà sao nghe tiếng sóng trong lòng
.(¯`v´¯)_______ÎÎ_____ÎÎ________(¯`v´¯)
User avatar
vietteiv
Quản trị
Quản trị
Posts: 1325
Joined: Sat 10/02/2007 12:17 am
Location: Cung cấp giải pháp quản lý doanh nghiệp, dự án, tư vấn xây dựng
Has thanked: 6 times
Been thanked: 70 times
Contact:

Re: hiệu làm form xuất hiện giống AV

Post by vietteiv »

ko thấy nói gì về cái interval của Timer. thiếu khai báo cái này đố mà chạy được :))

Code: Select all

' thêm cái dòng này trong form_loadTimer1.Interval = 10
code gọn mà ứng dụng được đấy. set thêm cái thuộc tính ShowInTaskbar = False nữa thì hay hơn :)
dactung93
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 496
Joined: Tue 04/11/2008 8:43 am
Has thanked: 6 times
Been thanked: 8 times

Re: Hiệu ứng làm Form xuất hiện giống AV

Post by dactung93 »

Code: Select all

Private Sub Form_Load()    Me.Top = Screen.Height    Me.Left = Screen.Width - Me.Width    Timer1.Interval = 10    Timer3.Enabled = False    Timer2.Interval = 10    Timer3.Interval = 3000End Sub Private Sub Timer1_Timer()    Me.Top = Me.Top - 50    If Me.Top < Screen.Height - Me.Height - 300 Then    Timer3.Enabled = True    Timer1.Enabled = False    End IfEnd Sub Private Sub Timer2_Timer()Me.Top = Me.Top + 50If Me.Top = Screen.Height ThenEndEnd If End Sub Private Sub Timer3_Timer()Timer2.Enabled = TrueEnd Sub 
User avatar
playgemboy
Thành viên danh dự
Thành viên danh dự
Posts: 289
Joined: Sun 13/04/2008 6:10 am
Location: Bình Phú, Quận 6, TP.HCM
Been thanked: 1 time
Contact:

Re: Hiệu ứng làm Form xuất hiện giống AV

Post by playgemboy »

Cái này muốn cho form di chuyển tự nhiên hơn, ta nên cho nó chuyển động có gia tốc.Tức là mỗi chu kì lặp lại của Timer, ta cộng vào (hoặc trừ ra) một số giảm dần (hoặc tăng dần).
Nói khó hiểu, demo code là hiểu :)

Code: Select all

Dim Giatoc As IntegerPrivate Sub Form_Load()    Me.Top = Screen.Height    Me.Left = Screen.Width - Me.Width    Timer1.Interval = 10     Giatoc = Me.Height / 20End Sub Private Sub Timer1_Timer()    Giatoc = Giatoc - 3 ' chuyen dong cham dan deu    Me.Top = Me.Top - Giatoc    If Me.Top < Screen.Height - Me.Height - 300 Then Timer1.Enabled = FalseEnd Sub
Nếu nói đúng ra thì cái số -2 kia mới là gia tốc :D, hoặc có thể làm cho "giatoc" điều hòa cũng được, kết hợp thêm hàm sin(rad) hoặc cos thì tùy

Code: Select all

Dim Giatoc As DoublePrivate Sub Form_Load()    Me.Top = Screen.Height    Me.Left = Screen.Width - Me.Width    Timer1.Interval = 10     Giatoc = 0End Sub Private Sub Timer1_Timer()    Giatoc = Giatoc + 0.05 ' goc rad tang dan    Me.Top = Me.Top - (Sin(Giatoc) * (Me.Height / 8)) / 2    If Me.Top < Screen.Height - Me.Height - 300 Then Timer1.Enabled = FalseEnd Sub
Như vậy, form sẽ chuyển động rất thật.Mấy cái này em rất hay áp dụng cho form của mình (tự chế đấy nhá ;;) , ko phải sưu tầm đâu :P )
<lâu lâu vô 4f post vài bài, mất công lại nói em quên diễn đàn :D >
<I Come Back>
vitcononline
Posts: 3
Joined: Sun 16/11/2008 6:57 pm

Re: Hiệu ứng làm Form xuất hiện giống AV

Post by vitcononline »

Mấy anh có thể chuyển từ VB6 sang Vb2005 được ko vây?.Em chuyển nhưng nó lại báo lỗi ở dòng Screen.Height và Screen.Width em khai báo System.Windows.Form.Screen cũng ko đươc.
Giang Hồ
Thành viên năng nổ
Thành viên năng nổ
Posts: 50
Joined: Sat 12/05/2007 2:36 pm
Location: http://vn-soft.net
Been thanked: 1 time
Contact:

Re: Hiệu ứng làm Form xuất hiện giống AV

Post by Giang Hồ »

Screen.Height - Me.Height - 300
Số 300 này chỉ là đoán mò về chiều cao của Taskbar. Lỡ người ta kéo taskbar lên thành 2 tầng thì sao

Hơn nữa, trong Windows Vista. Nếu ứng dụng của bạn khởi động cùng Windows (tức kích hoạt trước khi Windows Desktop Manager active) thì Screen.Width = Screen.Height -> SAI. gianghoplus cũng hok hiểu vì sao nữa

Muốn chính xác hơn ta xác định lun kích thước taskbar

Code: Select all

Private Declare Function SHAppBarMessage Lib "shell32.dll" (ByVal dwMessage As Long, pData As APPBARDATA) As Long Private Type RECT    Left As Long    Top As Long    Right As Long    Bottom As LongEnd Type Private Type APPBARDATA    cbSize As Long    hwnd As Long    uCallbackMessage As Long    uEdge As Long    rc As RECT    lParam As LongEnd Type Private Type TBSIZE    Width As Long    Height As LongEnd Type Private Function Taskbar() As TBSIZE    Dim tBar As APPBARDATA    SHAppBarMessage &H5, tBar    Taskbar.Height = (tBar.rc.Bottom - tBar.rc.Top) * 15    Taskbar.Width = (tBar.rc.Right - tBar.rc.Left) * 15End Function
Lúc này ta lấy chiều rộng của màn hình bằng với Taskbar.Width thì ok

àh còn nữa. Trong Vista nếu chạy hiệu ứng trong suốt Aero thì lại phải tính thêm đường viền nữa

Code: Select all

Public Function VistaX() As ByteIf (GetOS = "Vista" Or GetOS = "Seven") And _GetDword(HKEY_CURRENT_USER, "Software\Microsoft\Windows\DWM", "Composition") = 1 Then _    VistaX = 100 Else VistaX = 0End Function
lúc đó sửa dòng Me.Left thành như thế này là ổn

Code: Select all

Me.Left = Taskbar.Width - Me.Width - VistaX
Code chỉ một lần mà fix bug thì mãi mãi
-----------------------------------
VnSecurity 2008 - Bảo vệ máy tính theo phong cách của bạn
Website: http://vn-soft.net
User avatar
vietteiv
Quản trị
Quản trị
Posts: 1325
Joined: Sat 10/02/2007 12:17 am
Location: Cung cấp giải pháp quản lý doanh nghiệp, dự án, tư vấn xây dựng
Has thanked: 6 times
Been thanked: 70 times
Contact:

Re: Hiệu ứng làm Form xuất hiện giống AV

Post by vietteiv »

tham khảo thêm cách làm form xuất hiện giống AV hiệu ứng đẹp
http://www.caulacbovb.com/forum/viewtop ... =52&t=6244
duy_phong01
Thành viên chính thức
Thành viên chính thức
Posts: 20
Joined: Fri 31/05/2013 7:27 am
Has thanked: 1 time

Re: Hiệu ứng làm Form xuất hiện giống AV

Post by duy_phong01 »

Mình nghĩ Screen.Width và Screen.Height là sai rồi, mình nghĩ là My.Computer.Screen.WorkingArea.Width hoặc là My.Computer.Screen.WorkingArea.Height
Post Reply

Return to “[VB] Ứng dụng - Form và Control”