Để hộp thoại dialog luôn nằm giữa màn hình

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
NoBi
Quản trị
Quản trị
Posts: 970
Joined: Tue 18/03/2008 1:22 pm
Location: Sài Gòn
Has thanked: 58 times
Been thanked: 68 times
Contact:

Để hộp thoại dialog luôn nằm giữa màn hình

Post by NoBi »

Thủ thuật: Hộp thoại dialog luôn nằm giữa màn hình
Tác giả: Sưu tầm
Mô tả: Khi ShowColor thì khung color thường nằm xát với cạnh trái của form gọi nó, một số chương trình khi show hộp màu hay open thì những hộp màu hay open luôn nằm giữu màn hình, vậy nếu muốn làm như vậy thì làm sao?.
Để giải quyết vấn đề này, chúng ta khai báo mới 1 form nữa, canh nó nằm giữa và show hộp thoại dialog là xong:

Code: Select all

Private Sub Command1_Click()    Dim frm As New Form1    frm.Move (Screen.Width - frm.Width) / 2, (Screen.Height - frm.Height) / 2    frm.CommonDialog1.ShowColorEnd Sub
:>
User avatar
truongphu
VIP
VIP
Posts: 4781
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 525 times

Re: Để hộp thoại dialog luôn nằm giữa màn hình

Post by truongphu »

Để giải phóng tài nguyên, nên thêm dòng lệnh trước khi End Sub
Unload frm

Lý do: Sau khi OK hoặc Cancel trên CommonDialog1.ShowColor, nếu ta đóng chương trình thì ta mới close form1, frm vẫn còn trong bộ nhớ
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
PhongThanInfor
Thành viên chính thức
Thành viên chính thức
Posts: 31
Joined: Mon 21/04/2008 11:01 pm

Re: Để hộp thoại dialog luôn nằm giữa màn hình

Post by PhongThanInfor »

Code trên của pác NoBi dùng cho CommonDialog có sẵn trong VB, vậy cũng muốn làm như vậy với CommonDialog bằng API thì làm thế nào?
User avatar
tuyen_dt18
Guru
Guru
Posts: 261
Joined: Sat 19/04/2008 8:46 pm
Location: Hưng Yên
Been thanked: 42 times
Contact:

Re: Để hộp thoại dialog luôn nằm giữa màn hình

Post by tuyen_dt18 »

Tôi chưa Test nhưng có ý kiến thế này
Dùng hàm API tìm được Handle của nó là được ( có thể Hook hay SubClass, ...)
Dùng hàm API "MoveWindow" với tạo độ X thay bằng X * Screen.TwipperX, Y = Y * Screen.TwipperY
Có thể Show nó ở bất cứ tọa độ nào
Nếu muốn ở giữa màn hình chỉ cần ( X * Screen.X - Me.Width ) \ 2, tương tự với Y

Hi vọng nó sẽ chạy tốt !
Hỏi ý kiến tác giả trước khi sử dụng hoặc trích dẫn rõ nguồn bài viết khi sử dụng.
User avatar
lipton150786
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 345
Joined: Thu 18/11/2010 10:00 pm
Has thanked: 5 times
Been thanked: 30 times

Re: Để hộp thoại dialog luôn nằm giữa màn hình

Post by lipton150786 »

code trên chạy không đúng rồi. thử test như sau:
run -> kéo màn hình color lên góc phải màn hình -> đóng form.
run lại -> kết quả đúng
thay showcolor thành showopen
chạy lại các bước trên -> kết quả sai???
User avatar
truongphu
VIP
VIP
Posts: 4781
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 525 times

Re: Để hộp thoại dialog luôn nằm giữa màn hình

Post by truongphu »

lipton150786 wrote:thay showcolor thành showopen
chạy lại các bước trên -> kết quả sai???
Bổ sung:

  1. Private Sub Command1_Click()
  2.     Dim AAA As New Form1
  3.     AAA.Move 0, 0
  4.     AAA.CommonDialog1.ShowOpen
  5.     Unload AAA
  6. End Sub
  7.  
  8. Private Sub Command2_Click()
  9.     Dim AAA As New Form1
  10.     AAA.Move 0, 0
  11.     AAA.CommonDialog1.ShowSave
  12.     Unload AAA
  13. End Sub


:>
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh
User avatar
lipton150786
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 345
Joined: Thu 18/11/2010 10:00 pm
Has thanked: 5 times
Been thanked: 30 times

Re: Để hộp thoại dialog luôn nằm giữa màn hình

Post by lipton150786 »

kết quả vẫn không thể hiện hộp thoại openfile ở giữa màn hình được. tôi thấy khi show thi nó sẽ hiện tại vị trí mà trước đó nó được đóng.
khi debug thì tôi thấy lênh AAA.move 0,0 không có tác dụng gì hết ngoại trừ lần show đầu tiên.
không biết còn cách nào để nó hiện giữa màn hình mỗi khi click vào commond button không?
Post Reply

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