• 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

Slide form theo kiểu cài đặt Adobe Flash Player

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
trinhnhatquang97
Thành viên tích cực
Thành viên tích cực
Bài viết: 127
Ngày tham gia: T.Bảy 02/10/2010 3:43 pm
Đến từ: Hà Nội
Has thanked: 6 time
Been thanked: 8 time
Liên hệ:

Slide form theo kiểu cài đặt Adobe Flash Player

Gửi bàigửi bởi trinhnhatquang97 » T.Tư 08/06/2011 8:55 am

Thủ thuật: Slide form theo kiểu cài đặt Adobe Flash Player
Tác giả: Trịnh Nhật Quang
Mô tả: Làm cho form trượt giống kiểu Adobe Flash Player



Cái này là do mình viết lại từ cái "Đóng ứng dụng rất phong cách". Chỉ cần bỏ phần coolFormClose.left đi là OK.
Tập tin đính kèm
AdobeStyle_Form_By_TrinhNhatQuang.zip
(1.79 KiB) Đã tải 807 lần



Hình đại diện của người dùng
tungblt
Điều hành viên
Điều hành viên
Bài viết: 548
Ngày tham gia: T.Hai 22/12/2008 5:22 pm
Đến từ: quy nhơn
Has thanked: 6 time
Been thanked: 76 time
Liên hệ:

Re: Slide form theo kiểu cài đặt Adobe Flash Player

Gửi bàigửi bởi tungblt » T.Bảy 25/06/2011 9:50 pm

:| nói hãy bấm chuột trái mà trong code lại để chuột phải, hèn gì bấm quài k thấy động tĩnh

Hình đại diện của người dùng
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Bài viết: 1259
Ngày tham gia: T.Năm 03/06/2010 9:23 pm
Đến từ: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 time
Been thanked: 137 time
Liên hệ:

Re: Slide form theo kiểu cài đặt Adobe Flash Player

Gửi bàigửi bởi VuVanHoanh » T.Bảy 25/06/2011 10:11 pm

Vừa lượn qua lượn lại, thấy bài này, viết lách tí cho đỡ buồn... :(
Góp ý chân thật về code, để làm tốt hơn thui nha, không có ý gì cả đâu :)
  1. Public Function coolCloseForm(closeForm As Form, speed As Integer)
  2.  
  3.     If speed = 0 Then
  4.         MsgBox "Speed cannot zero"
  5.         Exit Function
  6.     End If
  7.  
  8.     On Error Resume Next
  9.         closeForm.ScaleMode = 1
  10.         closeForm.WindowState = 0
  11.         Do Until closeForm.Height = 2000
  12.             DoEvents
  13.                 closeForm.Height = closeForm.Height - speed * 20
  14.             Loop
  15.             Do Until closeForm.Width = 10000
  16.                 DoEvents
  17.                     closeForm.Width = closeForm.Width - speed * 20
  18.             Loop
  19. End Function

1/ Function không mang giá trị trả về. Nên chuyển thành Sub
2/ Có được hai đại lượng nhất định là kích cỡ trước và sau khi chạy, vậy thà đừng dùng vòng lặp vô hạn.
Giả sử closeForm.Height bị xuống dưới 2000 thì sao? :( Lúc đó chẳng nhìn thấy form luôn.
3/ WindowState và ScaleMode đều đã được thiết lập khi design, không bị thay đổi nên chẳng cần chỉnh lại làm gì.
4/ Tôi thấy Width không thay đổi. :(
5/...
Tóm lại là có vài lỗi cần sửa để code đẹp và có hiệu quả hơn :)
  1. Public Sub coolCloseForm(closeForm As Form, speed As Integer)
  2.     Dim i As Long, j As Long
  3.     If speed <= 0 Then
  4.         MsgBox "Speed cannot zero"
  5.         Exit Sub
  6.     End If
  7.     For i = closeForm.Height To 2000 Step -speed * 20
  8.         DoEvents
  9.         closeForm.Height = i
  10.         Me.Width = Me.Width
  11.         For j = closeForm.Width To 1000 Step -speed * 20
  12.             closeForm.Width = i
  13.             Me.Refresh
  14.         Next j
  15.     Next i
  16. End Sub


Thử với speed = 10 xem ;))
Since 2008...
One love! :x

Hình đại diện của người dùng
trinhnhatquang97
Thành viên tích cực
Thành viên tích cực
Bài viết: 127
Ngày tham gia: T.Bảy 02/10/2010 3:43 pm
Đến từ: Hà Nội
Has thanked: 6 time
Been thanked: 8 time
Liên hệ:

Re: Slide form theo kiểu cài đặt Adobe Flash Player

Gửi bàigửi bởi trinhnhatquang97 » T.Hai 27/06/2011 11:10 am

Có vẻ tốt hơn rồi đấy, cảm ơn bạn nhé !

Hình đại diện của người dùng
gtdcomputer
Thành viên danh dự
Thành viên danh dự
Bài viết: 1296
Ngày tham gia: T.Sáu 18/07/2008 12:08 pm
Đến từ: Kiên Giang
Has thanked: 8 time
Been thanked: 117 time
Liên hệ:

Re: Slide form theo kiểu cài đặt Adobe Flash Player

Gửi bàigửi bởi gtdcomputer » T.Ba 09/08/2011 9:56 am

Tớ có một số thắc mắc
- Tại sao trong hàm CoolCloseform lại có Me.Width với lại Me.Refresh nhỉ.
- Mà Me.Width = Me.Width là sao. Chẳng khác nào kêu 1 = 1
- Mà tại sao lại bỏ vòng lặp của Width vô trong vòng lặp của Height nhỉ. Giả sử ở lần run đầu tiên của Height, Width có giá trị ban đầu là 10000 chạy hết vòng lặp thì nó thành 1000. Sang lần chạy thứ hai của Height thì Width vẫn cứ là 1000 nó dâu có chạy nửa.
  1. Public Sub coolCloseForm(closeForm As Form, speed As Integer)
  2.     Dim i As Long, j As Long
  3.     If speed <= 0 Then
  4.         MsgBox "Speed cannot zero"
  5.         Exit Sub
  6.     End If
  7.     For i = closeForm.Height To 2000 Step -speed * 20
  8.         DoEvents
  9.         closeForm.Height = i
  10.         If closeForm.Width > 1000 Then closeForm.Width = closeForm.Width - speed * 20
  11.         closeForm.Refresh
  12.     Next i
  13. End Sub
Con người không quan tâm đến sự thật. Họ tin cái họ muốn, và về sau, cái đó sẽ trở thành sự thật

Hình đại diện của người dùng
trinhnhatquang97
Thành viên tích cực
Thành viên tích cực
Bài viết: 127
Ngày tham gia: T.Bảy 02/10/2010 3:43 pm
Đến từ: Hà Nội
Has thanked: 6 time
Been thanked: 8 time
Liên hệ:

Re: Slide form theo kiểu cài đặt Adobe Flash Player

Gửi bàigửi bởi trinhnhatquang97 » T.Ba 09/08/2011 10:12 am

Có thể do bạn ấy muốn làm cho form di chuyển trau hơn ?

Hình đại diện của người dùng
gtdcomputer
Thành viên danh dự
Thành viên danh dự
Bài viết: 1296
Ngày tham gia: T.Sáu 18/07/2008 12:08 pm
Đến từ: Kiên Giang
Has thanked: 8 time
Been thanked: 117 time
Liên hệ:

Re: Slide form theo kiểu cài đặt Adobe Flash Player

Gửi bàigửi bởi gtdcomputer » T.Ba 09/08/2011 12:41 pm

Mới thấy một cái ngộ nữa. Tại sao trong vòng lặp của j lại không sài biến j mà sài biến i nhỉ.
Cho tớ sáng tạo một tí nhé, mới nghĩ ra:
  1. Public Sub coolCloseForm(closeForm As Form, speed As Integer)
  2.     Dim i As Long, j As Long
  3.     If speed <= 0 Then
  4.         MsgBox "Speed cannot zero"
  5.         Exit Sub
  6.     End If
  7.     j = (closeForm.Width - 1000) / ((closeForm.Height - 100) / (speed * 20))
  8.     For i = closeForm.Height To 100 Step -speed * 20
  9.         closeForm.Height = i
  10.         closeForm.Width = closeForm.Width - j
  11.         closeForm.Left = closeForm.Left + j / 2
  12.         closeForm.Top = closeForm.Top + speed * 10
  13.         DoEvents
  14.     Next i
  15. End Sub

Test thử thấy nó ngộ ngộ
Con người không quan tâm đến sự thật. Họ tin cái họ muốn, và về sau, cái đó sẽ trở thành sự thật

Hình đại diện của người dùng
trinhnhatquang97
Thành viên tích cực
Thành viên tích cực
Bài viết: 127
Ngày tham gia: T.Bảy 02/10/2010 3:43 pm
Đến từ: Hà Nội
Has thanked: 6 time
Been thanked: 8 time
Liên hệ:

Re: Slide form theo kiểu cài đặt Adobe Flash Player

Gửi bàigửi bởi trinhnhatquang97 » T.Tư 10/08/2011 1:05 pm

Cái phần next i có khi bỏ đi nhưng nói tóm lại là nó có hiệu quả hơn cái code mình viết nhiều. Cảm ơn 2 bạn gtdcomputer & bạn VuVanHoanh


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.2 khách