Bài 10
Nhng chc năng mi trong giao din ca s ca
VB.NET (phn III)
T động Resize và định ch (positioning)
Nhng chương trình ng dng chuyên nghip ta mua ngoài ch để dùng thường
thường có đặc tính resize các controls hay định v trí ca các controls trên form mt
cách t động. Nếu bao gi bn đã th thêm các chc năng y cho mt chương trình
áp dng viết bng VB6 ca mình, bn s thông cm rng coi vy ch đó không phi là
chuyn nh.
Tưởng tưng là ta phi ghi nh v trí và kích thưc ca mi control trên form đ mi ln
user resizes form thì ta phi theo đó resize và định v trí ca control. Trong lúc thiết kế
ta phi cho user mt phương tin để ch định rng h mun mt control cư x như thế
nào khi form resize. Để cha tin tc y hoc ta dùng property Tag ca control hoc ta
dùng registry. Ch vic đọc ra, viết vào để cp nht hoá các tin tc cũng đủ mt, chưa
nói đến chuyn tính toán để resize và định v trí ca control. Do đó, nhiu khi làm
biếng ta dùng đại mt third party ActiveX để giúp ta làm các chuyn y.
.NET cho ta thêm các properties Anchor và Dock cho mi control. Ngoài ra .NET
còn cung cp control Splitter để cho phép ta nm mt thanh phân hai kéo qua, kéo li
hay kéo lên, kéo xung tùy thích, để m rng thêm mt bên trong khi bên kia b thu
hp.
Cái áp dng ca Splitter thông dng nht là trong Windows Explorer. Trong đó ta có
hai phn: bên trái là mt Treeview cha cái cây ca disk drives và file folders, bên
phi là mt Listview cha icons hay chi tiết ca các folder và files. Mun xem Treeview
nhiu hơn, ta nm thanh phân hai gia kéo qua bên phi mt chút.
Anchoring (b neo)
Khi con tàu b neo là nó đỗ đó. Dù con nước chy thế nào, con tàu vn nm yên
mt ch vì nó đã được ct vào cái neo. Control trong .NET có property Anchor đ ta
ch đnh nó được buc vào góc nào ca form: Left, Right, Bottom hay Top.
Trong lúc thiết kế, sau khi select cái control (thí d Button1), ta vào ca s Properties
và click hình tam giác nh bên phi property Anchor. Mt hình vuông vi bn thanh
ráp li ging hình ch thp màu trng s hin ra. Mi thanh tượng trưng cho mt góc
mà ta có th ch định để ct control vào form. Khi ta click mt thanh, nó s đi màu
thành xám đậm, và mt ch tương ng vi thanh y sau ny s hin th trong textbox
area ca combobox Anchor.
Thí d ta click vào thanh dưới và hai thanh hai bên, ta s có Bottom, Left, Right như
trong hình dưới đây:
Khi Button1 có Anchor là Bottom, Right thì mi khi góc phi dưới ca form di chuyn vì
resize, Button1 c chy theo góc y:
Nếu Button1 có Anchor là Left, Right, Bottom thì khi form resizes cho ln ra, Button1
c gi khong cách t nó đến ba cnh Left, Right, Bottom ca form không đổi. Do đó
nó phi n rng ra như trong hình dưới đây:
Nếu Button1 có Anchor là Top,Bottom,Left, Right thì khi form resizes, Button1 c gi
khong cách t nó đến bn cnh Left, Right, Top, Bottom ca form không đổi. Do đó
nó phi n rng hay thu nh c chiu cao ln chiu rng như trong hình dưới đây:
Vì property Anchor có hiu lc lp tc ngay trong lúc ta thiết kế, nên nếu bn resize
form trong lúc thiết kế, các control có Anchor property set cũng resize và di chuyn
theo. Có th bn không mun chuyn đó xãy ra, nên tt nht là set property Anchor
ca các control sau khi thiết kế form xong hết ri.
Docking (gn vào)
Khi ta Dock mt control vào mt cnh ca form có nghĩa là ta dán dính nó vào cnh
đó. Áp dng ta thưng thy nht ca Docking là ToolBar và StatusBar. ToolBar thì
dock vào phía trên ca form, còm StatusBar thì dock vào phía dưới ca mt form.
Chúng dãn ra chiếm t trái qua phi ca form, user không th ch định chiu rng ca
chúng. Khi form được resized thì ToolBar và StatusBar cũng dãn ra hay co vào theo
chiu rng ca form.
Property Dock ca control trong .NET cũng ging ging như property Align ca
control trong VB6 StatusBar.
Ta ch có th dán mt control vào mt trong bn cnh ca form, ch không có chuyn
bt cá hai, ba tay như trường hp Anchor có th neo vào Left, Right, Bottom cùng mt
lúc. Tuy nhiên, property Dock có tr s Fill để nói control chiếm hết bên trong phn
còn li ca container ca nó.
Trong lúc thiết kế, sau khi select cái control (thí d Label1), ta vào ca s Properties
và click hình tam giác nh bên phi property Dock. Mt hình vuông nhiu thanh màu
xám s hin ra. Mi thanh tượng trưng cho mt cnh mà ta có th ch định để dán
control vào form (Top, Bottom, Left hay Right), cái hình vuông gia 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 chn tr s
Dock nào c.. Khi ta click mt thanh, tr s Docking tương ng s hin th trong textbox
area ca combobox Dock.
Gi s ta set Property TextAlign ca Label là MiddleCenter bng cách chn cái
thanh xám nm ngay gia trong s 9 thanh tượng trưng cho các v trí ca Text có th
nm trong Label1 như trong hình dưi đây: