#HookLab - Tạo cửa sổ TaskPane / ActionPane bằng UserForm

thaipv

XA Project
Tham gia ngày
18 Tháng năm 2014
Bài viết
158
Được thích
212
Điểm
395
Nơi ở
TP. Hồ Chí Minh
Gửi tặng các bạn mã nguồn để tạo cửa sổ TaskPane / ActionPane (cửa sổ phụ) trong excel bằng UserForm.219359
Ghi chú : Cửa sổ con di chuyển trong phạm vi bên trong và di chuyển theo cửa sổ cha của nó.
+ Màu cam : Cửa sổ ông nội XLMAIN
+ Màu đỏ : Cửa sổ cha XLDESK
+ Màu tím : Cửa sổ con EXCEL7

Giải thuật vắn tắt :
1. Thiết lập UserFom làm (giả) TaskPane / ActionPane là con của cửa sổ XLDESK (con nuôi).
2. Sắp xếp lại vị trí của UserForm và EXCEL7 (con ruột) sao cho không đè lên nhau (UserForm có thể ở bên trái hoặc bên phải của EXCEL7...).
3. Mỗi khi cửa sổ cha XLDESK thay đổi vị trí hoặc kích thước thì cửa sổ con cũng thay đổi theo (và trở về mặc định). Vì vậy, ta cần đặt 1 hook bắt sự kiện này để UserForm và EXCEL7 định lại vị trí và kích thước theo đúng ý 2.
 

File đính kèm

HeSanbi

Thành viên tích cực
Tham gia ngày
24 Tháng hai 2013
Bài viết
1,174
Được thích
1,050
Điểm
560
Không biết code VBA là do bác sở hữu và nắm bản quyền hay thế nào, nếu không thì "gửi tặng" là không hợp lí. Code thông qua WinAPI để thực hiện nên không ai cấp phép cả, mà cộng đồng được phép sử dụng theo chính sách của Microsoft.
Và các dòng chú thích tiếng Anh khá là "Anh", vậy nên chỉ có thể đăng là "chia sẻ code". Không biết bác có đồng ý không?
Và kỹ thuật code chưa hoàn chỉnh, sẽ làm ngưng tiến trình ứng dụng Excel đột ngột.
 
Lần chỉnh sửa cuối:

thaipv

XA Project
Tham gia ngày
18 Tháng năm 2014
Bài viết
158
Được thích
212
Điểm
395
Nơi ở
TP. Hồ Chí Minh
Không biết code VBA là do bác sở hữu và nắm bản quyền hay thế nào, nếu không thì "gửi tặng" là không hợp lí. Code thông qua WinAPI để thực hiện nên không ai cấp phép cả, mà cộng đồng được phép sử dụng theo chính sách của Microsoft.
Và các dòng chú thích tiếng Anh khá là "Anh", vậy nên chỉ có thể đăng là "chia sẻ code". Không biết bác có đồng ý không?
Và kỹ thuật code chưa hoàn chỉnh, sẽ làm ngưng tiến trình ứng dụng Excel đột ngột.
Code này do tôi viết 100% (tất nhiên là ngoại trừ những API), các chú thích tiếng Anh cũng vậy.
 

HeSanbi

Thành viên tích cực
Tham gia ngày
24 Tháng hai 2013
Bài viết
1,174
Được thích
1,050
Điểm
560
Tuy bác viết nhưng bác phải sở hữu theo luật sở hữu trí tuệ, thì code bác có thể nói là tặng, ở trường hợp này có lẽ là chia sẽ code.
 

giaiphap

Thành viên gạo cội
Tham gia ngày
12 Tháng ba 2007
Bài viết
4,834
Được thích
4,094
Điểm
860
Gửi tặng các bạn mã nguồn để tạo cửa sổ TaskPane / ActionPane (cửa sổ phụ) trong excel bằng UserForm.View attachment 219359
Ghi chú : Cửa sổ con di chuyển trong phạm vi bên trong và di chuyển theo cửa sổ cha của nó.
+ Màu cam : Cửa sổ ông nội XLMAIN
+ Màu đỏ : Cửa sổ cha XLDESK
+ Màu tím : Cửa sổ con EXCEL7

Giải thuật vắn tắt :
1. Thiết lập UserFom làm (giả) TaskPane / ActionPane là con của cửa sổ XLDESK (con nuôi).
2. Sắp xếp lại vị trí của UserForm và EXCEL7 (con ruột) sao cho không đè lên nhau (UserForm có thể ở bên trái hoặc bên phải của EXCEL7...).
3. Mỗi khi cửa sổ cha XLDESK thay đổi vị trí hoặc kích thước thì cửa sổ con cũng thay đổi theo (và trở về mặc định). Vì vậy, ta cần đặt 1 hook bắt sự kiện này để UserForm và EXCEL7 định lại vị trí và kích thước theo đúng ý 2.
Đỉnh, cách của bạn rất hay. Tôi chỉnh chút code nhìn cũng rất chuyên nghiệp với cái giao diện TaskPanel này.
 

kieu manh

❆❆❆❆❆
Tham gia ngày
9 Tháng sáu 2012
Bài viết
3,672
Được thích
2,512
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Đỉnh, cách của bạn rất hay. Tôi chỉnh chút code nhìn cũng rất chuyên nghiệp với cái giao diện TaskPanel này.
Bạn cải tiến viết thêm chút ... !!!

VD: Túm cái Form keo thả vào 4 góc là nó vô đúng vị trí của nó ...vvv và khắc phục một số lỗi nữa là ok đấy :p:D
 

giaiphap

Thành viên gạo cội
Tham gia ngày
12 Tháng ba 2007
Bài viết
4,834
Được thích
4,094
Điểm
860
Bạn cải tiến viết thêm chút ... !!!

VD: Túm cái Form keo thả vào 4 góc là nó vô đúng vị trí của nó ...vvv và khắc phục một số lỗi nữa là ok đấy :p:D
Mình cũng sửa lại để cái Form vừa lại với giao diện, di chuyển thì nhu cầu chỉ nằm bên trái hoặc bên phải thôi, còn khi sử dụng tạm thời chưa phát hiện nó bị lỗi gì, nếu bạn phát hiện chia sẻ cách khắc phục.
 

thuyyeu99

Trùm Nhiều Chuyện
Tham gia ngày
6 Tháng sáu 2008
Bài viết
1,308
Được thích
541
Điểm
860
Cách này cũng hay thật, phải chi biết sớm thì đỡ khổ hihihi
 

kieu manh

❆❆❆❆❆
Tham gia ngày
9 Tháng sáu 2012
Bài viết
3,672
Được thích
2,512
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Cái này với cái Listview anh
Mạnh cũng đang có ý định mò viết Add-Ins TaskPane trên Delphi ... mà lâu nay bận quá ko có thời gian mở Delphi lên coi ... lâu lâu ghé GPE chọc chọc vài dòng lướt qua vậy chứ có coi kỹ bài nào mô -0-0-0-
 

Mutants Men

Thành viên thường trực
Tham gia ngày
30 Tháng mười hai 2015
Bài viết
276
Được thích
155
Điểm
195
Gửi tặng các bạn mã nguồn để tạo cửa sổ TaskPane / ActionPane (cửa sổ phụ) trong excel bằng UserForm.View attachment 219359
Ghi chú : Cửa sổ con di chuyển trong phạm vi bên trong và di chuyển theo cửa sổ cha của nó.
+ Màu cam : Cửa sổ ông nội XLMAIN
+ Màu đỏ : Cửa sổ cha XLDESK
+ Màu tím : Cửa sổ con EXCEL7

Giải thuật vắn tắt :
1. Thiết lập UserFom làm (giả) TaskPane / ActionPane là con của cửa sổ XLDESK (con nuôi).
2. Sắp xếp lại vị trí của UserForm và EXCEL7 (con ruột) sao cho không đè lên nhau (UserForm có thể ở bên trái hoặc bên phải của EXCEL7...).
3. Mỗi khi cửa sổ cha XLDESK thay đổi vị trí hoặc kích thước thì cửa sổ con cũng thay đổi theo (và trở về mặc định). Vì vậy, ta cần đặt 1 hook bắt sự kiện này để UserForm và EXCEL7 định lại vị trí và kích thước theo đúng ý 2.
nhấn vào có hiện form lên sau đó con trỏ xoay tầm 2s, rồi tự động tắt excel luôn bác ạ, không nhấn gì nữa cả
 

giaiphap

Thành viên gạo cội
Tham gia ngày
12 Tháng ba 2007
Bài viết
4,834
Được thích
4,094
Điểm
860
Cai này còn phải bẩy lỗi nhiều hihihi
Bạn sửa lại để hoàn chỉnh luôn đi bạn, thật sự có nghiên cứu tới mấy cái API để xem lỗi chổ nào nhưng máy mình chạy nó không hề báo lỗi. Mà cái vụ API mình nghiền hoài nhưng vẫn không nuốc nổi, bó tay.
 

thuyyeu99

Trùm Nhiều Chuyện
Tham gia ngày
6 Tháng sáu 2008
Bài viết
1,308
Được thích
541
Điểm
860
Bạn sửa lại để hoàn chỉnh luôn đi bạn, thật sự có nghiên cứu tới mấy cái API để xem lỗi chổ nào nhưng máy mình chạy nó không hề báo lỗi. Mà cái vụ API mình nghiền hoài nhưng vẫn không nuốc nổi, bó tay.
hihihi em cũng đâu có rành môn API đâu :wallbash::wallbash: với lại máy tháng gần đây em có chút việc bận nên không ngồi máy lâu được nên đâu có mày mò code được, lâu lâu vô diễn đàn comment đỡ buồn./-*+//-*+//-*+/
 

giaiphap

Thành viên gạo cội
Tham gia ngày
12 Tháng ba 2007
Bài viết
4,834
Được thích
4,094
Điểm
860
Đúng là có lỗi thật, khi mình thay đổi kích thước (Phóng to, di chuyển, đổi vị trí) của của sổ WorkBook một chút thì nó treo luôn excel. Ai khắc phục được hoàn thiện nó đi mọi người, bạn @thaipv khắc phục sản phẩm của mình xem sao.
 

thaipv

XA Project
Tham gia ngày
18 Tháng năm 2014
Bài viết
158
Được thích
212
Điểm
395
Nơi ở
TP. Hồ Chí Minh
Đúng là có lỗi thật, khi mình thay đổi kích thước (Phóng to, di chuyển, đổi vị trí) của của sổ WorkBook một chút thì nó treo luôn excel. Ai khắc phục được hoàn thiện nó đi mọi người, bạn @thaipv khắc phục sản phẩm của mình xem sao.
TaskPane.PNG
Cập nhật :
+ Thiết kế, căn chỉnh lại frmTaskPane theo phong cách phẳng.
+ Chuyển code vào UserForm.
Các bạn tải về test thử nhé.
 

File đính kèm

Top Bottom