Khóa Hàm Th Visual Basic 6.0
Chương Mười Hai - Dùng Đồ Ha (Phn II)
In trên màn nh
VB6 có method Print cho ta in thng trên Form, PictureBox hay Printer. Ba loi
control ny được coi như nhng khung vi mà ha sĩ v lên.Bn hãy khi động mt
chương trình VB6 mi. Đặt lên form mt PictureBox tên Picture1 và mt button tên
CmdPrintTenLines vi Caption Print Ten Lines. DoubleClick lên button ny và viết
code dưới đây:
Private Sub CmdPrintTenLines_Click()
Dim i As Integer
' String variable used for display
Dim strLine As String
' Write 10 lines, one under the other
For i = 1 To 10
strLine = "This is line " & CStr(i)
Me.Print strLine ' Print on Form
Picture1.Print strLine ' Print on Picture1
Next
End Sub
Bn hãy chy th program ri click nút Print Ten Lines. Trong trường hp ny ta
dùng default Font và Color để in 10 hàng. Sau mi Print, chương trình t động xung
hàng. Kế đó, thêm mt button tên CmdPrintFontSizes vi Caption Print Font Sizes.
DoubleClick lên button ny và viết code dưới đây:
Private Sub CmdPrintFontSizes_Click()
Dim i As Integer
' Print numbers 1 to 10, one after the other on the same line
For i = 1 To 10
' Define Font size
Me.Font.Size = Me.Font.Size + i
' Define Color using Function QBColor
Me.ForeColor = QBColor(i)
' Print without moving to next line. Note the semicolon ";"
Me.Print Str(i);
Next
End Sub
Trong Sub CmdPrintFontSizes_Click, ta thay đổi c kiu ch để cho các con s được
in ra ln lên dn dn và thay đổi màu ca các con s bng cách dùng function
QBColor. Để in các con s liên tc không xung hàng ta dùng method Print vi
semicolon (;). Bn hãy chy chương trình li. Click nút Print Ten Lines ri click nút
Print Font Sizes, kết qu s ging như dưới đây:
Bây gi bn th minimize ca s ca chương trình, kế đó restore nó li kích thước
cũ. Bn s thy các hàng ta in lúc nãy không còn trong form hay PictureBox na.Lý
do là khi ta Print lên form hay PictureBox, các hình y được v trong graphic địa
phương ch không được VB6 k là mt phn ca ca s. Mun tránh tr ngi ny ta
phi dn VB6 nh v li bng cách set property AutoRedraw ca form và Picture1
ra True.
H thng ta độ
Khi đặt mt Object hay v mt cái gì lên màn nh (screen) hay form .v.v.. ta cn
phi ch định Object y nm ch nào k t (with reference to) cái góc Trên Trái (Top
Left) ca màn nh hay form.Cái góc Trên Trái là Trung tâm ta độ ca screen hay
form. đó ta độ X và Y đều bng 0, ta viết là 0,0. Nếu ta đi ln qua phi theo
chiu rng ca screen thì ta độ X tăng lên. Nếu ta đi dc xung dưới theo chiu cao
ca screen thì ta độ ca Y tăng lên.Kế đến là đơn v đo lường ta dùng để biu din
khong cách. Trong bài trước ta đã nói đến độ mn ca màn nh (screen resolution)
da vào pixel. Ta có th dùng đơn v pixel để nói mt Object có ta độ X và Y mi
chiu bao nhiêu pixels tính t trung tâm ta độ.Như thế, ngay c trên cùng mt màn
nh khi ta tăng độ mn nó lên thì mt Object đã được đặt lên màn nh theo đơn v
pixel s xích qua trái và lên trên mt ít vì kích thước mt pixel bây gi nh hơn lúc
trước mt chút.Hình dưới đây minh ha các kích thước ca màn nh và Form.
Đim cn biết là có nhng phn như title barborder ca mt form ta không th
v lên được. Do đó din tích còn li ca form được gi là Client Area. Chiu rng
chiu cao ca Client Area được gi là ScaleWidthScaleHeight.Nếu mun
khong cách t mt Object đến trung tâm ta độ, hay kích thước ca chính Object,
không h thay đổi dù ta có tăng, gim độ mn ca màn nh hay in hình ra printer
(thí d ta mun nó luôn luôn dài 5cm chng hn) thì ta dùng h thng ta độ theo
đơn v twips ca form.Twips là Default Coordinate System ca VB6. Trong h thng
ny mi đim là tương đương vi 1/567 centimeter. Do đó, nếu bn v mt dường
dài 567 twips nó s hin th dài 1cm trên màn nh, và khi bn in nó ra, nó cũng dài
1cm trên giy. Tc là độ dài tht ca Object không tùy thuc vào loi màn nh (độ
mn cao hay thp) hay printer. Người ta nói nó là Device independent coordinate
system (H thng ta độ độc lp vi dng c). Nói mt cách khác Twips cho ta tht
s what you see is what you get (WYSIWYG - thy sao có vy), rt thích hp
vi Desktop publishing.Bn có th thay đổi h thng ta độ ca mt form bng cách
edit property ScaleMode qua ca s Properties như sau:
Ghi chú: Thay đổi tr s ScaleMode không có hiu lc ngay mà ch nh hưởng
nhng gì được thiết kế sau đó.Ging như khi ta Edit Text trong Notepad, Text Cursor
(thanh | chp chp) là v trí hin ti, nơi s hin th cái ch ta đánh sp ti, trong
graphic ta có mt Cursor vô hình, nơi s hin th cái gì ta sp Print. Ta ch định v trí
ca graphic cursor y bng cách cho tr s ca CurrentXCurrentY.Bn hãy khi
động mt d án VB6 mi và viết code cho Event Resize ca form chính như sau:
Th chy chương trình và Resize form. Mi khi bn Resize form, ch X s được di
đến v trí khong chính gia ca Client Area ca form.
Dùng Graphics
Đã có mt chút căn bn v graphics ca VB6, bây gi ta có th đặt nhng graphics
lên form. Có hai cách để làm chuyn y:
Dùng Graphical Controls: Ta có PictureBoxImage có th cha hình
nh. Trong khi LineShape có th v đường thng hay các hình ch nht,
tròn .v.v.. trên form, lúc thiết kế.
Dùng Graphics Methods: Đây là nhng mnh lnh cho ta v trc tiếp lên
form lúc run-time. Các mnh lnh VB6 cho ta là Cls, Pset, Point, Line
Circle.
Tùy theo hoàn cnh, bn có th la chn cách nào tin dng.
PictureBox và Image
Dùng PictureBox hay Image là cách d nht để hin th mt graphic trong form. Lúc
thiết kế, bn có th đánh thng tên ca graphic vào property Picture trong ca s
Properties. Form cũng nhn property Picture. Bn cũng có th click lên bên phi ch
property Picture để browse và chn mt graphic, thường là Bitmap hay Icon.
S khác bit chí gia Image và PictureBox là Image có property Stretch mà ta có
th set thành True để kéo dãn graphic ra cho chiếm trn din tích ca Image. Image
là mt grapgic control lightweight (nh ký), tc là nó không đòi hi nhiu memory
và chy nhanh hơn PictureBox. Lý do là PictureBox là mt container, tc là nó có th
cha các controls khác. Ngoài ra, PictureBox cũng cho phép ta v lên trên nó ging
như trên form.Trong hình dưới đây, trong lúc thiết kế ta đặt mt PictureBox và mt
Image cùng mt c lên cùng mt form. Kế đó ta assign cùng mt picture hình
happy.bmp cho c hai. Riêng vi Image, ta set property Stretch ca nó ra True.