• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

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
Hình đại diện của người dùng
phanthequang4101987
Thành viên danh dự
Thành viên danh dự
Bài viết: 115
Ngày tham gia: T.Ba 01/04/2008 6:39 am
Đến từ: Nghi Xuân - Hà Tĩnh
Has thanked: 5 time
Been thanked: 21 time
Liên hệ:

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

Gửi bàigửi bởi phanthequang4101987 » T.Hai 27/10/2008 7:51 pm

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:

Mã: Chọn hết

  1. Private Sub Form_Load()
  2.     Me.Top = Screen.Height
  3.     Me.Left = Screen.Width - Me.Width
  4.     Timer1.Interval = 10
  5. End Sub
  6.  
  7. Private Sub Timer1_Timer()
  8.     Me.Top = Me.Top - 50
  9.     If Me.Top < Screen.Height - Me.Height - 300 Then Timer1.Enabled = False
  10. End 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´¯)

Hình đại diện của người dùng
vietteiv
Quản trị
Quản trị
Bài viết: 1318
Ngày tham gia: T.Bảy 10/02/2007 12:17 am
Đến từ: 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 time
Been thanked: 69 time
Liên hệ:

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

Gửi bàigửi bởi vietteiv » T.Hai 27/10/2008 10:18 pm

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=vb6]
  1. ' thêm cái dòng này trong form_load
  2. Timer1.Interval = 10
[/code]
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
Bài viết: 496
Ngày tham gia: T.Ba 04/11/2008 8:43 am
Has thanked: 6 time
Been thanked: 8 time

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

Gửi bàigửi bởi dactung93 » T.Ba 04/11/2008 10:17 am

Mã: Chọn hết

  1. Private Sub Form_Load()
  2.     Me.Top = Screen.Height
  3.     Me.Left = Screen.Width - Me.Width
  4.     Timer1.Interval = 10
  5.     Timer3.Enabled = False
  6.     Timer2.Interval = 10
  7.     Timer3.Interval = 3000
  8. End Sub
  9.  
  10. Private Sub Timer1_Timer()
  11.     Me.Top = Me.Top - 50
  12.     If Me.Top < Screen.Height - Me.Height - 300 Then
  13.     Timer3.Enabled = True
  14.     Timer1.Enabled = False
  15.     End If
  16. End Sub
  17.  
  18. Private Sub Timer2_Timer()
  19. Me.Top = Me.Top + 50
  20. If Me.Top = Screen.Height Then
  21. End
  22. End If
  23.  
  24. End Sub
  25.  
  26. Private Sub Timer3_Timer()
  27. Timer2.Enabled = True
  28. End Sub
  29.  

Hình đại diện của người dùng
playgemboy
Thành viên danh dự
Thành viên danh dự
Bài viết: 289
Ngày tham gia: CN 13/04/2008 6:10 am
Đến từ: Bình Phú, Quận 6, TP.HCM
Been thanked: 1 time
Liên hệ:

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

Gửi bàigửi bởi playgemboy » T.Sáu 07/11/2008 2:07 pm

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 :)

Mã: Chọn hết

  1. Dim Giatoc As Integer
  2. Private Sub Form_Load()
  3.     Me.Top = Screen.Height
  4.     Me.Left = Screen.Width - Me.Width
  5.     Timer1.Interval = 10
  6.      Giatoc = Me.Height / 20
  7. End Sub
  8.  
  9. Private Sub Timer1_Timer()
  10.     Giatoc = Giatoc - 3 ' chuyen dong cham dan deu
  11.     Me.Top = Me.Top - Giatoc
  12.     If Me.Top < Screen.Height - Me.Height - 300 Then Timer1.Enabled = False
  13. End 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

Mã: Chọn hết

  1. Dim Giatoc As Double
  2. Private Sub Form_Load()
  3.     Me.Top = Screen.Height
  4.     Me.Left = Screen.Width - Me.Width
  5.     Timer1.Interval = 10
  6.      Giatoc = 0
  7. End Sub
  8.  
  9. Private Sub Timer1_Timer()
  10.     Giatoc = Giatoc + 0.05 ' goc rad tang dan
  11.     Me.Top = Me.Top - (Sin(Giatoc) * (Me.Height / 8)) / 2
  12.     If Me.Top < Screen.Height - Me.Height - 300 Then Timer1.Enabled = False
  13. End 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
Bài viết: 3
Ngày tham gia: CN 16/11/2008 6:57 pm

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

Gửi bàigửi bởi vitcononline » T.Năm 19/03/2009 8:31 am

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ổ
Bài viết: 50
Ngày tham gia: T.Bảy 12/05/2007 2:36 pm
Đến từ: http://vn-soft.net
Been thanked: 1 time
Liên hệ:

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

Gửi bàigửi bởi Giang Hồ » T.Ba 31/03/2009 9:58 pm

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

Mã: Chọn hết

  1. Private Declare Function SHAppBarMessage Lib "shell32.dll" (ByVal dwMessage As Long, pData As APPBARDATA) As Long
  2.  
  3. Private Type RECT
  4.     Left As Long
  5.     Top As Long
  6.     Right As Long
  7.     Bottom As Long
  8. End Type
  9.  
  10. Private Type APPBARDATA
  11.     cbSize As Long
  12.     hwnd As Long
  13.     uCallbackMessage As Long
  14.     uEdge As Long
  15.     rc As RECT
  16.     lParam As Long
  17. End Type
  18.  
  19. Private Type TBSIZE
  20.     Width As Long
  21.     Height As Long
  22. End Type
  23.  
  24. Private Function Taskbar() As TBSIZE
  25.     Dim tBar As APPBARDATA
  26.     SHAppBarMessage &H5, tBar
  27.     Taskbar.Height = (tBar.rc.Bottom - tBar.rc.Top) * 15
  28.     Taskbar.Width = (tBar.rc.Right - tBar.rc.Left) * 15
  29. End 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

Mã: Chọn hết

  1. Public Function VistaX() As Byte
  2. If (GetOS = "Vista" Or GetOS = "Seven") And _
  3. GetDword(HKEY_CURRENT_USER, "Software\Microsoft\Windows\DWM", "Composition") = 1 Then _
  4.     VistaX = 100 Else VistaX = 0
  5. End Function


lúc đó sửa dòng Me.Left thành như thế này là ổn

Mã: Chọn hết

  1. 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

Hình đại diện của người dùng
vietteiv
Quản trị
Quản trị
Bài viết: 1318
Ngày tham gia: T.Bảy 10/02/2007 12:17 am
Đến từ: 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 time
Been thanked: 69 time
Liên hệ:

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

Gửi bàigửi bởi vietteiv » T.Ba 31/03/2009 10:25 pm

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
Bài viết: 20
Ngày tham gia: T.Sáu 31/05/2013 7:27 am
Has thanked: 1 time

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

Gửi bàigửi bởi duy_phong01 » CN 09/02/2014 2:29 pm

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


Quay về “[VB] Ứng dụng - Form và Control”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.0 khách