Bài 10
Những chức năng mới trong giao diện cửa sổ
của VB.NET (phần III)
Tự động Resize và định chỗ (positioning)
Những chương trình ứng dụng chuyên nghiệp ta mua ngoài chợ để dùng
thường thường có đặc tính resize các controls hay định vị trí của các
controls trên form một cách tự động. Nếu bao giờ bạn đã thử thêm các
chức năng ấy cho một chương trình áp dụng viết bằng VB6 của mình, bạn
sẽ thông cảm rằng coi vậy chớ đó không phải là chuyện nhỏ. Tưởng
tượng là ta phải ghi nhớ vị trí và kích thước của mỗi control trên form để
mỗi lần user resizes form thì ta phải theo đó resize và định vị trí của
control. Trong lúc thiết kế ta phải cho user một phương tiện để chỉ định
rằng họ muốn một control cư xử như thế nào khi form resize. Để chứa tin
tức ấy hoặc ta dùng property Tag của control hoặc ta dùng registry. Chỉ
việc đọc ra, viết vào để cập nhật hoá các tin tức cũng đủ mệt, chưa nói
đến chuyện tính toán để resize và định vị trí của control. Do đó, nhiều khi
làm biếng ta dùng đại một third party ActiveX để giúp ta làm các chuyện
ấy..NET cho ta thêm các properties Anchor và Dock cho mỗi control.
Ngoài ra .NET còn cung cấp control Splitter để cho phép ta nắm một
thanh phân hai kéo qua, kéo lại hay kéo lên, kéo xuống tùy thích, để mở
rộng thêm một bên trong khi bên kia bị thu hẹp.Cái áp dụng của Splitter
thông dụng nhất là trong Windows Explorer. Trong đó ta có hai phần: bên
trái là một Treeview chứa cái cây của disk drives và file folders, bên phải là
một Listview chứa icons hay chi tiết của các folder và files. Muốn xem
Treeview nhiều hơn, ta nắm thanh phân hai ở giữa kéo qua bên phải một
chút.
Anchoring (bỏ neo)
Khi con tàu bỏ neo là nó đỗ ở đó. Dù con nước chảy thế nào, con tàu vẫn
nằm yên một chỗ vì nó đã được cột vào cái neo. Control trong .NET có
property Anchor để ta chỉ định nó được buộc vào góc nào của form: Left,
dock vào phía dưới của một form. Chúng dãn ra chiếm từ trái qua phải của
form, user không thể chỉ định chiều rộng của chúng. Khi form được resized
thì ToolBar và StatusBar cũng dãn ra hay co vào theo chiều rộng của
form.Property Dock của control trong .NET cũng giống giống như property
Align của control trong VB6 StatusBar.Ta chỉ có thể dán một control vào
một trong bốn cạnh của form, chớ không có chuyện bắt cá hai, ba tay như
trường hợp Anchor có thể neo vào Left, Right, Bottom cùng một lúc. Tuy
nhiên, property Dock có trị số Fill để nói control chiếm hết bên trong phần
còn lại của container của nó.Trong lúc thiết kế, sau khi select cái control
(thí dụ Label1), ta vào cửa sỗ Properties và click hình tam giác nhỏ bên
phải property Dock. Một hình vuông nhiều thanh màu xám sẽ hiện ra. Mỗi
thanh tượng trưng cho một cạnh mà ta có thể chỉ định để dán control vào
form (Top, Bottom, Left hay Right), cái hình vuông ở giữa tượng trưng
cho trị số Fill, và thanh dưới chót có chữ None cho phép ta xóa không
chọn trị số Dock nào cả.. Khi ta click một thanh, trị số Docking tương ứng
sẽ hiển thị trong textbox area của combobox Dock.
Giả sử ta set Property TextAlign của Label là MiddleCenter bằng cách
chọn cái thanh xám nằm ngay giữa trong số 9 thanh tượng trưng cho các
vị trí của Text có thể nằm trong Label1 như trong hình dưới đây: