Bu dosya, bir UserForm penceresinin çalışma sırasında kullanıcı tarafından nasıl boyutlandırılabileceğini iki farklı yöntemle gösterir: yalnızca VBA kodu ile ve Windows API çağrıları ile. Her iki formda da bir ListBox ve bir kapatma düğmesi bulunur; form büyüyüp küçüldükçe bu nesneler de forma göre yeniden konumlanır.
Dosya makro içerir, açarken makroları etkinleştirmeniz gerekir.
Dosya makro içerir, açarken makroları etkinleştirmeniz gerekir.
Dosyanın içeriği
- modOpenForm: İki formu açan iki makroyu barındıran modüldür.
- myUserFormVBA: VBA ile boyutlandırılan form. Sağ alt köşede bir lblResizer etiketi bulunur.
- myUserFormWindowsAPI: Windows API ile boyutlandırılan form.
- WindowsAPI: API tanımlarını ve pencere stilini değiştiren yordamı içeren modüldür.
Makrolar
- OpenUserFormVBA: myUserFormVBA formunu açar.
- OpenUserFormWindowsAPI: myUserFormWindowsAPI formunu açar.
- myUserFormVBA: Form açılırken UserForm_Initialize tutamacı sağ alt köşeye yerleştirir ve en küçük genişlik ile yüksekliği 125 olarak belirler. Tutamaç üzerinde fare düğmesine basıldığında (lblResizer_MouseDown) fare konumu kaydedilir. Fare hareket ettikçe (lblResizer_MouseMove) form, ListBox ve tutamaç yeni ölçüye göre ayarlanır, kapatma düğmesi ise kaydırılır. Minimum ölçünün altına inilmesine izin verilmez. Düğme bırakıldığında (lblResizer_MouseUp) boyutlandırma sona erer.
- ResizeWindowSettings: user32 kütüphanesindeki FindWindowA, GetWindowLong, SetWindowLong ve DrawMenuBar işlevlerini kullanarak formun pencere stiline WS_THICKFRAME ekler veya çıkarır; böylece form kenarlarından sürüklenerek boyutlandırılabilir. Tanımlar hem VBA7 (PtrSafe) hem eski sürümler için hazırdır.
- myUserFormWindowsAPI: Açılışta ResizeWindowSettings çağrılır ve ListBox ile düğmenin form kenarlarına olan uzaklıkları saklanır. UserForm_Resize olayında bu uzaklıklar korunarak ListBox genişler, kapatma düğmesi sağ alta taşınır.
- cmdClose_Click: Her iki formda da formu kapatır.
Nasıl kullanılır
- Dosyayı açıp makroları etkinleştirin.
- Alt+F8 ile makro listesini açın ve OpenUserFormVBA ya da OpenUserFormWindowsAPI makrosunu çalıştırın.
- VBA formunda sağ alt köşedeki tutamacı sürükleyin; API formunda pencere kenarını veya köşesini sürükleyin.
- Kendi formunuza uyarlamak için Alt+F11 ile VBA düzenleyicisini açın, ilgili form ve modül kodunu inceleyip nesne adlarını kendi formunuza göre değiştirin.