Bạn đã tiếp xúc các windows trong chương đầu, vì vậy chương này sẽ bổ sung thêm những gì bạn đã học Miêu tả và sự khác biệt giữa các kiểu cửa sổ khác nhau : Có nhiều kiểu cửa sổ khác n
Trang 1PHẦN 1-3B :CÁC CÔNG CỤ Chương 7: Khảo Sát về Windows (Exploring Windows)
Sự thúc đẩy lớn nhất trong các môi trường ứng dụng ngày nay thì giao diện đồ họa cần
thiết cho người sử dụng graphical user interface (GUI) Sức mạnh của sự phát triển GUI tập
trung quanh window
Chương này diễn tả phần lớn những gì với một cửa sổ trong môi trường Windows Bạn đã tiếp xúc các windows trong chương đầu, vì vậy chương này sẽ bổ sung thêm những gì bạn đã học
Miêu tả và sự khác biệt giữa các kiểu cửa sổ khác nhau :
Có nhiều kiểu cửa sổ khác nhau và sẽ thi hành khác nhau, sử dụng trong việc phát triển các ứng dụng của bạn
Tập hợp các thuộc tính cửa sổ thông qua windows property sheet:
Sheet thuộc tính của cửa sổ (Windows property sheet) có thể giúp bạn điều khiển và theo dõi các thuộc tính (property) của cửa sổ bạn.
Thêm vào và thực hiện các window controls :
Có nhiều điều khiển (controls), giống như tab controls hoặc command buttons, mà
bạn có thể thêm vào window
PowerBuilder 5 thậm chí đã thêm nhiều controls hơn trước khi giúp bạn phát triển một ứng dụng chuyên nghiệp thật nhẹ nhàng đáng kể
Thực hiện tính kế thừa windows ( windows inheritance )
Sự thừa kế (Inheritance) là một công cụ vô cùng mạnh Chương này giới thiệu bạn về windows inheritance và sẽ trình bày cho bạn biết inheritance như thế nào
để có thể làm công việc lập trình của bạn thật dễ dàng
7.1) Sử dụng Windows Property Sheet:
Bạn đã xem một phần nhỏ của các thuộc tính windows trong Windows Property Sheet
khi một cửa sổ w_vidu được xác định Phần sau đây thảo luận các thuộc tính khác của
windos có thể được tập hợp bên trong Windows Property Sheet và lý do sao bạn nên sử dụng
chúng
Có 4 cách để đẩy lên một window property sheet bên trong window painter:
Double-click vào window
Click vào Properties icon trong PowerBuilder window painter.
Click vào Edit, chọn Properties như trong sơ đồ 4.1.Sơ đồ này giúp bạn mỡ Windows Properties bằng cách sử dụng PowerBuilder menu
Right-click lên window và chọn Properties (hình 4.2)
7.1.1) General Window Properties:
Khi bạn mỡ windows property sheet, trang General tab được hiển thị, trang này cho
phép bạn thiết lập các thuộc tính chung cho window và các thuộc tính được định nghĩa như sau:
Title Bar:
Trang 2Title Bar là một thanh có tiêu đề trên đỉnh của một cửa sổ Title bar chứa các Control menu icon (được gọi là Control menu trong window painter của PowerBuilder), Maximize box và Minimize box Nếu bất kỳ những cái này hoạt động thì title bar cũng
hoạt động
Ghi chú:
Tựa đề của MDI Frame _Multiple Document Interface Frame (hoặc cửa sổ chính trong một ứng dụng SDI_Single Document Interface) cũng là tên của ứng dụng Tiêu đề sẽ được hiển thị khi bạn đẩy lên Windows 95 taskbar của bạn và ngay khi bạn
nhấn Ctrl + Tab để chuyển đổi giữa các ứng dụng
Menu Name:
Khả năng chọn lựa Menu Name cho PowerBuilder biết là menu nào cần gắn vào Window Bởi vì bạn đã tạo duy nhất một menu, m_vidu, đó là menu mà bạn sẽ có để sử dụng ngay bây giờ
Visible:
Đánh dấu Visible tức là cho biết bạn có muốn hiển thị window này không khi nó được
đẩy lên Việc đánh dấu này được xem như một little odd mà bạn yêu cầu, làm sao tạo một window và kế đó là làm cho nó không thể trông thấy (invisible)? Đôi khi nó thì
thiết thực hơn để che khuất một cửa sổ bằng cách làm cho nó invisible và chỉ hiển thị khi cần thiết
Enable:
Đôi khi bạn muốn hiển thị window nhưng không cho phép nhập vào nó Nếu tắt enable thì không cho phép hiển thị window
Ghi chú:
Các thuộc tính visible và enable thì phần lớn thường được dùng trong
PowerScript Nếu bạn muốn window hay window control không thấy được (invisible), ta sử dụng lệnh :
Windowname.Hide()
Còn nếu bạn muốn window hay window control thấy được (visible), thì sử dụng
lệnh:
Windowname.Show()
Chú ý, thay vì sử dụng lệnh Hide và Show ,Visible và Enabled thì chắc chắn hơn
để ấn định trực tiếp đến các thuộc tính window:
Windowname Visible = TRUE Windowname Enabled = FALSE Sử dụng đạc tính Enabled là cách duy nhất để chọn lựa xem coi một window có được enabled hoặc disabled (không cho phép)
Border:
Border controls là định đường viền bao quanh cửa sổ Các cửa sổ Main và MDI phải có
border Nếu loại bỏ border trên cửa sổ là tạo ảo giác cho một cửa sổ, trong khi thực tế có hai cái
Control Manu:
Trang 3Biểu tượng Control Menu là ảnh trên góc trái của cửa sổ bạn, chứa các ứng dụng của
bạn (hoặc là window hay icon) Điều này điều khiển xem coi bạn có một hộp Control menu trên cửa sổ của bạn hay không?
Ghi chú:
Nó thì dễ thay đổi khi thao tác Control menu với nhiều người sử dụng Windows khác nhau Hộp Control menu cũng được gọi là Control Box Control menu xuất
hiện khi bạn click một lần trên Control box PowerBuilder nhóm Control menu box và Control menu thành một và gọi là Control menu
Maximize Box: Là một box ở góc trên bên phải của cửa sổ bạn Nó hoạt động giống như
một nút chuyển đổi giữa màn hình đầy (full-screen) và vùng hiển thị bình thường của nó.
Minimize Box: Cũng là một hộp ở góc trên bên phải của cửa sổ bạn Nó thu gọn cửa sổ
của bạn thành một entry trên task bar
Resizable: Click trên Resizable là sắp xếp lại window.
Định nghĩa các kiểu cửa sổ ( Window Types ):
+ Sử dụng Main Windows:
Có lẽ bạn sẽ sử dụng các cửa sổ Main nhiều hơn các loại khác Cửa sổ Main là cửa sổ đứng một mình (trừ khi ở bên trong một MDI frame) Nếu bạn không sử dụng một MDI frame, thì cửa sổ đầu tiên được mỡ là cửa sổ main
Ngay cả trong một ứng dụng Windows đơn giản, tự bạn sẽ tìm thấy sự cần thiết để sử
dụng MDI frame kết hợp với MicroHelp như là một “shell” (vẻ bề ngoài) cho tất cả các cửa sổ main của bạn MicroHelp thì rất tuyệt cho việc hiển thị message đến người sử
dụng, và MDI frame trông có vẻ mang tính chuyên nghiệp hơn các cửa sổ main đứng một mình Bên trong MDI frame của bạn, tất cả các cửa sổ sheet quan trọng có thể sẽ kết thúc là main windows
+Sử dụng Pop-Up Windows: Cửa sổ này sẽ thường xuyên được mỡ từ bên trong cửa sổ
khác (chúng có một cửa sổ chính) Mặc dù cửa sổ Pop-Up không thể che phủ bởi cửa sổ cha của no,ù nhưng nó có thể kéo dài thời gian ở hai bên đường ranh giới của cửa sổ cha Khi cửa sổ cha đã đóng hoặc thu nhỏ, thì cửa sổ Pop-Up cũng đóng hoặc thu nhỏ Các cửa sổ Pop-Up thông thường được sử dụng như một cửa sổ cung cấp (support) Ví
dụ, nếu như bạn yêu cầu nhập vào một customer number, cửa sổ Pop-Up sẽ hiển thị tất
cả các customer number với các tên cho bạn Cửa sổ Pop-Up là cách tốt nhất để liên kết một cửa sổ với một cửa sổ khác, nhưng phải cẩn thận không nên sử dụng chúng quá nhiều Một application có số lượng cửa sổ Pop-Up menu lớn thì thông thường là dấu hiệu mà MDI nên sử dụng, đặc biệt là nếu cửa sổ không thấy để liên kết với các cửa sổ khác
+ Sử dụng Child Windows (Cửa sổ con):
Các cửa sổ con (Child) thì cũng được mỡ từ bên trong cửa sổ khác và cũng có cửa sổ cha (parent) Có một vài điểm mạnh khác nhau, tuy nhiên:
_ Cửa sổ Child có thể chưa bao giờ tồn tại bên ngoài của cửa sổ cha
_Cửa sổ Child chưa bao giờ được xem là hoạt động
_Khi một cửa sổ Child được thu nhỏ, nó chỉ chứa đầy không gian của cửa sổ Parent
Trang 4_Cửa sổ Child không thể có menu.
Mặc dù cửa sổ Child không được sử dụng thường xuyên, chúng có thể có kiểu cửa sổ Pop-Up nếu bạn muốn tránh xa sự chủ động và thụ động của cửa sổ parent bởi vì bạn đã viết PowerScript rồi
+Sử dụng Response Windows (Cửa sổ đáp ứng) :
Cửa sổ đáp ứng (Response) là kiểu cửa sổ Pop-Up Chúng khác cửa sổ Pop-Up ở chỗ
chúng có một phương thức ứng dụng (không có cửa sổ khác trong ứng dụng có thể truy
xuất cho đến khi cửa sổ response được đóng)
Các cửa sổ Respone thường được gọi là các dialog box Bạn sẽ sử dụng cửa sổ respone thường xuyên Ví dụ, chúng hữu dụng nếu bạn không muốn user tiếp tục với ứng dụng
của bạn cho đến khi các câu hỏi đã được trả lời Nếu việc chuyển đổi của bạn không có
lưu, cửa sổ respone xuất hiện và yêu cầu sự chuyển đổi nên lưu lại, người sử dụng
không thể tiếp tục cho đến khi các câu hỏi đã được trả lời
+Sử dụng MDI Frames và MDI Frames with MicroHelp :
MDI Frames là một cửa sổ (gọi là một frame) chứa các cửa sổ khác (gọi là các sheet).
Bạn chỉ có một frame trên một application nhưng có nhiều sheet bên trong frame của bạn
Trong bất kỳ ứng dụng Windows phức tạp ( thường thường là đơn giản), bạn nên sử dụng một cái MDI Frames MicroHelp làm việc tốt như là một cách thức dễ dàng để
truyền một thông điệp (message) đến người sử dụng (Save was successful!, Please
wait., và v.v.) trừ phi dừng ứng dụng của bạn
Ghi chú:
Nếu bạn sử dụng một MDI Frame, bạn nên sử dụng nó với MicroHelp (MicroHelp thì dễ sử dụng, nó không tác động một cách đáng lưu ý vào sự thi hành ứng dụng của bạn.) Nếu bạn đã định rõ cửa sổ của bạn là một kiểu nào đó và sau đó thay đổi ý định của
bạn là muốn nó thành một kiểu khác,bạn đi vào hộp thoại Window Style và đơn giản
chọn một kiểu mới Điều này có lẽ gây một vài khó khăn nếu bạn chuyển đổi từ một
SDI application thành một MDI application, nhưng về mặt khác nó trở nên vấn đề nhỏ.
Color (Màu):
Bạn cũng có thể thay đổi màu nền (background) của cửa sổ bạn trong hộp thoại Window Style Trong hộp danh sách drop-down của Window Color, bạn có thể chọn màu bạn muốn cho cửa sổ chính của bạn Nếu cửa sổ của bạn là MDI frame, hộp danh sách drop-down của MDI Client Color có thể điều khiển màu background của tất cả các cửa sổ sheet
của bạn
7.1.2)Position (Vị trí):
Bằng cách click vào Position tab trên windows property sheet, bạn có thể định vị trí của cửa sổ bạn Không những giúp PowerBuilder cho phép bạn nhập Height (chiều cao), Width
(chiều rộng) và tọa độ (X,Y) của cửa sổ bạn, mà còn giúp bạn có được sự minh họa sinh
động của cửa sổ trong mối liên hệ với monitor screen của bạn.
Trang 5Position tab cũng cho phép bạn định trạng thái ban đầu của cửa sổ bạn (Cửa sổ ban đầu có thể là Maximize, Minimize hoặc là Normal)
7.1.3) Pointer (Con trỏ):
Thường thường, bạn muốn giữ biểu tượng pointer mặc định khi con trỏ chuột di chuyển
ngang qua cửa sổ bạn Tuy nhiên, nếu bạn muốn thay đổi cách xuất hiện của con trỏ chuột
khi đi ngang qua cửa sổ, bạn hãy sử dụng pointer tab để chọn một pointer mới cho cửa sổ của bạn Dùng trang Pointer tab để xem một pointer khác khi pointer đi ngang qua cửa sổ của
bạn
7.1.4) Icon (Biểu tượng):
Biểu tượng của cửa sổ xuất hiện bên trên góc trái của ứng dụng của bạn (Trong Windows3.1, điều này không đúng, nhưng nếu cửa sổ được thu nhỏ thì biểu tượng tượng trưng cửa sổ bạn sẽ xuất hiện) Biểu tượng này mặc định là biểu tượng Application! Nếu bạn
muốn thay đổi icon của bạn thành cái khác, click vào trang Icon tab trong windows property sheet.
Chọn một icon để tượng trưng cho cửa sổ bạn khi nó được thu nhỏ Mặc định là biểu ượng Application!
Nếu bạn muốn sử dụng một icon khác cho cửa sổ thu nhỏ , PowerBuilder yêu cầu chọn một trong những icon được cất giữ trong Stock icons hoặc Browse các file chứa icon mà bạn muốn dùng
7.1.5) Scroll (Thanh cuộn)
Scroll tab trên windows property sheet, xem hình 4.7 cho phép bạn định rõ các đặc tính
của thanh cuộn
Units Per Line:
Cho phép bạn định rõ là bạn muốn cuộn đi bao nhiêu khi người sử dụng click vào thanh cuộn đứng Chế độ mặc định (0) cho thấy rằng một đơn vị trên mỗi dòng được di chuyển khi click trên mũi tên thanh cuộn
Units Per Column:
Cho phép bạn định rõ là bạn muốn cuộn đi bao nhiêu khi người sử dụng click vào thanh cuộn ngang Chế độ mặc định (0) cho thấy rằng một đơn vị trên mỗi cột được
di chuyển khi click trên mũi tên thanh cuộn
Column Per Page:
Cho thấy rằng có bao nhiêu cột sẽ được cuộn qua khi người sử dụng click trên thanh cuộn đến trang sau đó
Line Per Page:
Cho thấy rằng có bao nhiêu dòng sẽ được cuộn xuống (hay lên) khi người sử dụng click trên thanh cuộn đến trang phía dưới (hay phía trên)
HScroll Bar:
Một thanh cuộn ngang được đặt bên dưới cửa sổ bạn Điều này cho phép bạn dịch chuyển cửa sổ đi qua lại trong trường hợp thông tin của bạn rộng hơn cửa sổ bạn
VScroll Bar:
Trang 6Một thanh cuộn đứng được đặt trên cạnh bên phải của cửa sổ bạn Điều này cho phép bạn dịch chuyển cửa sổ đi xuống dưới trong trường hợp thông tin của bạn dài hơn cửa sổ
7.1.6) ToolBar:
Trang ToolBar tab, cho phép bạn thiết lập các thuộc tính toolbar như sau của cửa sổ:
Alignment:
Alignment điều khiển sự sắp đặt toolbar trên cửa sổ Bạn có thể chọn top, bottom, left, right hoặc float
X và Y: Định vị trí cho toolbar của bạn trên cửa sổ.
Width và Height: Định hình dạng về chiều cao và rộng của toolbar trong lúc ứng
dụng của bạn đang chạy
Visible: Hiển thị thanh toolbar có được thấy hay không khi ứng dụng của bạn đang
chạy
7.2) Bổ sung thêm các điều khiển cửa sổ (Window Control):
Window Control là bất kỳ những cái gì bạn muốn đặt trong một cửa sổ Hầu hết cửa sổ
PainterBar chứa các công cụ điều khiển khác nhau mà bạn có thể đặt trên cửa sổ của bạn.
Các control thì cần thiết cho mỗi cửa sổ; nếu không có các control thì cửa sổ là một hộp đơn giản với các chức năng không được hiển thị trên màn hình của bạn
Để đặt một control trên một cửa sổ, bạn có thể sử dụng sự liệt kê biểu tượng được kéo xuống Điều này hiển thị tất cả các control icon mà bạn có thể chọn :
Bạn có thể dễ dàng bổ sung thêm các control đến cửa sổ của bạn bằng cách click trên một icon và sau đó là click vào chỗ bạn muốn đặt control trên cửa sổ bạn
7.2.1)Các Control mới trong PowerBuilder 5:
Trang 7PowerScript đã thêm một vài control mới, có thể làm nổi bật nhiều ứng dụng của PowerBuilder
Tab Controls:
Tab control là một cách thức dễ dàng và có hiệu quả để đặt nhiều control trên một hệ thống Ví dụ, bạn có hai DataWindow được liên kết : DataWindow 1 và DataWindow 2
Hơn nữa, giả sử rằng bạn muốn một tab folder được dùng để tách rời và chọn lựa giữa
hai DataWindow
Đầu tiên bạn phải tạo tab folder control, điều này được làm bằng cách click vào tab
icon
Và kế tiếp click vào bất kỳ nơi nào trong phạm vi cửa sổ của bạn Khi bạn làm xong, bạn sẽ có một tab trông rất cơ bản :
Tab control với một tab được đặt nhãn là “none” đặt ở trên cửa sổ bạn
Bây giờ click chuột phải bất kỳ ở đâu trên tab, trừ chỗ tab name (none) Một menu sẽ pop up từ cái này và bạn có thể chọn sheet thuộc tính cho toàn thể tab control
Bạn có thể chuyển đổi ngay bây giờ các properties của tab control là hộp thoại tab control Điển hình là tên và màu đã được chuyển đổi trên tab control :
Trang 8_Các thuộc tính sau đây có thể dùng trong tab control:
Picture On Right
PowerTips
Fixed Width
Focus on Button Down Show Text
Show Picture Perpendicular Text
Xác định rõ có hay không một ảnh là phần của nhãn tab ở bên phải (nhấp click vào) hoặc ở bên trái (tắt click) của text
Định rõ có hay không PowerTipText cho một trang tab được hiển thị như là PowerTip
(pop-up đặt nhãn cho tab) khi con trỏ chuộr tạm
dừng trên tab
Định rõ có hay không các tab có chiều rộng được ấn định, có nghĩa là chúng không thu lại thành chiều dài của các nhãn text của chúng
Định rõ xem mỗi tab có được focus (tiêu điểm)
khi người sử dụng click vào nó hay không?
Xác định rõ text đã định cho mỗi nhãn tab được hiển thị
Xác định xem có hiểu thị picture được chọn cho mỗi tab hay không?
Xác định xem nhãn tab được vẽ vuông góc với trang tab
Trang 9Ragged Right
Bold Selected Text
Xác định rõ các tab có thể xuất hiện nhiều hơn một hàng Nếu không có phạm vi cho tất cả tab trong một hàng đơn, một mũi tên điều khiển kép sẽ hiển thị để cho phép người sử dụng cuộn đến các tab mà không phù hợp
Xác định rõ các tab được kéo dài ra để chiếm đầy không gian dọc theo cạnh của thanh điều khiển hay không?
Xác định rõ text cho các tab đã chọn là bold (click vào) hoặc text trên tab đã chọn có sự sắp đặt giống như các tab khác
Tiếp theo bạn sẽ thiết lập các thuộc tính riêng trên mỗi trang tab Click chuột phải vào tên của trang tab (“none”), Điều này sẽ kéo lên sheet thuộc tính của TabPage,
Trên sheet thuộc tính của TabPage, bạn có thể thiết lập màu cho mỗi trang tab hoặc
PowerTip mà sẽ xuất hiện như con trỏ chuột của bạn đặt trên trang tab
Sau khi bạn thiết lập thuộc tính trang tab, bạn sẵn sàng thêm cái khác Trang tab thứ
2 (thứ 3, thứ 4, v v…) sẽ có thuộc tính giống như trang tab trước mà bạn đã chuyển
đổi Để thêm trang tab, click chuột phải trên tab control và click vào Insert Tab
Page.
Một trang tab mới đã được thêm đến trang tab cũ Mặc dù trang tab này cũng cần phải được làm theo yêu cầu, phần lớn việc làm theo yêu cầu được làm cho trang tab
1 được mang sang trang tab 2
Bây giờ chúng ta có thể đặt một DataWindow control trên trang tab Các trang Tab có thể chứa bất kỳ window controls
Trang 10 Bây giờ các trang tab này chứa DataWindow Khi trang tab không dài hơn tầm nhìn, DataWindow thì cũng lấy từ tầm nhìn (view)
Kế tiếp, trong môi trường phát triển, chúng ta click trên trang tab 2 Chú ý, cả trang
tab đầu tiên và bất kỳ control trên đó không được thấy trừ folder tab Các trang tab khác của một tab control được đẩy lên bằng cách click trên folder tab.
Bạn có thể thêm các control khác vào trang tab thứ 2 Trong trường hợp này, chúng
ta thêm một DataWindow khác hơn cái đã thêm trước kia, các trang tab khác có thể
chứa nhiều control khác:
Bây giờ khi bạn chạy ứng dụng của bạn, một window xuất hiện chứa một tab control DataWindow 1 ở trên trang tab đầu tiên và các control mà được đặt trên
một tab folder xuất hiện một trang tab kế tiếp nhau.