Xây dựng giao diện Avenue
Tạo ứng dụng tuỳ biến là cách thay đổi giao diện ArcView theo ý của người sử dụng, ArcView cho phép ta thêm mới, xoá, chỉnh sửa menu, button, tool thậm chí có thể thay đổi giao diện ArcView thành giao diện ngôn ngữ nào đó để phục vụ cho nhu cầu riêng của từng lĩnh vực, ở từng vùng.
Để thêm mới, xoá, chỉnh sửa một menu, button, tool . Kích đôi vào cửa sổ giao diện ArcView như hình.
Hộp thoại chỉnh sửa như hình sau
Trong hộp thoại chỉnh sửa này ta có thể thực hiện các thao tác thêm mới, chỉnh sửa, xoá các điều kiển trên giao diện.
Kích đôi vào đây để thay đổi các menu, button, tool, Popup menu
Tạo giao diện mới Tạo mới một Menu
Để tạo mới một Menu ta làm như sau: - Mở hộp thoại chỉnh sửa.
- Chọn Menus trong Caterogy
- Nhấn vào nút New Menu. Một Menu có tên ngẫu nhiên là Menu mới được tạo ra.
- Kích đôi vào mục Label để đổi tên của Menu, đổi tên của menu là Tìm kiếm
- Để tạo mới một menu con cho menu này ta nhấn vào nút New Item. Một menu con có tên là Item được tạo ra.
- Doube click vào mục Label để đổi tên của Item này, đổi tên menu là Tìm đường.
- Đóng hộp thoại chỉnh sửa giao diện, ta thấy xuất hiện trên menu của Ar- cView một menu có tên là Tìm kiếm
Khi ta chọn vào menu con Tìm đường ta không thấy có sự kiện nào xảy ra, điều này do ta chưa gán một script nào cho sự kiện chọn menu con này.
Bây giờ ta tiến hành gán một script cho sự kiện chọn Menu con này. - Mở hộp thoại chỉnh sửa giao diện
- Chọn memu con Tìm đường
- Hộp thoại yêu cầu xác định script cho menu này xuất hiện.
- Trong hộp thoại này ta chọn Script Opentimtheoduong đã viết sẵn.
theView = av.GetActiveDoc aDlog=av.FindDialog("TD") if(aDlog <> nil)then
aDlog.Open else
MsgBox.info("Không tìm thấy Tìm theo đường","Thông Báo") end Kích đôi vào đây để gán Script cho sự kiện kích Kích đôi vào đây đặt nhãn
- Đòng giao diện soạn thảo Scripts, quay về cửa sổ giao diện khung nhìn, ta chọn vào menu con Tìm đường, lúc đó màn hình xuất hiện hộp thoại sau:
Để xoá Menu Tìm kiếm ta vào hộp thoại chỉnh sửa giao diện, chọn Menu này và nhấn vào nút Delete.
Tạo mới một Button
Để tạo mới một button ta làm như sau - Mở hộp thoại chỉnh sửa giao diện - Chọn Buttons trong Caterogy
- Nhấn vào nút New. Một Button mới được tạo ra, button này chưa có Icon. - Kích đôi vào mục Icon để chọn Icon cho button này.
Double click vào đây để gán Icon
- Hộp thoại chọn Icon hiện ra như hình.
- Chọn Icon có tên là Star, nhấn vào nút OK
- Đặt Tooltip cho Button bằng cách Kích đôi vào mục Help, gõ vào dòng “So do phuong Vinh Tho//Sơ đồ phường Vĩnh Thọ”
- Đóng hộp thoại chỉnh sửa giao diện, ta thấy xuất hiện trên Buttonbar của Ar- cView một Button mới.
Khi ta nhấn vào button mới này ta không thấy có sự kiện nào xảy ra, điều này do ta chưa gán một script nào cho sự kiện click của button này.
Bây giờ ta tiến hành gán một script cho sự kiện click button này. - Mở hộp thoại chỉnh sửa giao diện
- Chọn button mới tạo
- Kích đôi vào mục Click, hộp thoại yêu cầu xác định script cho menu này xuất hiện.
- Nhấn vào nút New trong hộp thoại Script Manager để tạo mới một script. Đặt tên cho script này là Button1
- Trong giao diện soạn thảo script, ta gõ vào script sau.
msgbox.info(“Đây là sơ đồ phường Vĩnh Thọ ” ,”Thông báo”)
- Đóng giao diện soạn thảo script, quay về của sổ giao diện khung nhìn, ta click vào Button mới tạo, lúc đó màn hình xuất hiện hộp thoại thông điệp như sau.
Để xoá button mới tạo ta vào hộp thoại chỉnh sửa giao diện, chọn Button vừa tạo và nhấn vào nút Delete.
Tạo mới một ToolMenu
Để tạo mới một ToolMenu ta làm như sau - Mở hộp thoại chỉnh sửa giao diện - Chọn Tools trong Caterogy
- Nhấn vào nút Tool. Một Tool mới được tạo ra, Tool này chưa có Icon.
- Kích đôi vào mục Icon để chọn Icon cho Tool này. Hộp thoại chọn Icon hiện ra như hình.
- Chọn Icon có tên là Index, click vào nút OK
- Đặt Tooltip cho Tool bằng cách Kích đôi vào mục Help, gõ vào dòng “Xem khách sạn//Xem khach san”
- Với Tool ta có thể xét hình dạng của con trỏ chuột sau khi chọn Tool, để xét hình dạng con trỏ chuột ta Kích đôi và Cursor. Hộp thoại Picker xuất hiện như sau:
Ta chọn vào Cursors.Bullseye và nhấn vào nút OK
- Đóng hộp thoại chỉnh sửa giao diện, ta thấy xuất hiện trên Toolbar của Ar- cView một Tool mới.
Khi ta nhấn vào Tool mới này sau đó đưa trỏ chuột vào khung nhìn ta thất trỏ chuột đổi sang dạng vòng tròn trong rỗng, nhấn vào một vị trí bất kỳ trên khung nhìn ta không thấy có sự kiện nào xảy ra, điều này do ta chưa gán một script nào cho sự kiện Apply của Tool này.
Bây giờ ta tiến hành gán một script cho sự kiện Apply Tool này. - Mở hộp thoại chỉnh sửa giao diện
- Chọn Tool mới tạo
- Kích đôi vào mục Apply, hộp thoại yêu cầu xác định script cho menu này xuất hiện. Gán Scripts “Xemnhanhthongtinkhachsan” có sẵn.
- Đóng giao diện soạn thảo script, quay về của sổ giao diện khung nhìn, ta nhấn vào Tool mới tạo, đưa trỏ chuột vào khung nhìn và chọn khách sạn cần xem, rồi click chuột vào ta thấy hộp thoại thông điệp xuất hiện như sau:
Để xoá Tool vừa tạo ta vào hộp thoại chỉnh sửa giao diện chọn Tool này và nhấn vào nút Delete.
Tool cũng có sự kiện click nhưng sự kiện này ta ít dùng, sự kiện click của Tool chỉ xảy ra khi ta nhấn vào Tool, còn sự kiện Apply xảy ra khi ta chọn Tool và nhấn vào khung nhìn.
Tạo mới một Popup Menu
Để tạo mới một popup menu ta làm như sau: - Mở hộp thoại chỉnh sửa giao diện
- Chọn Popups trong Caterogy
- Trong hộp thoại chỉnh sửa giao diện ta thấy có sẵn một Popup Memu có tên là Menu, ta chọn nó và xoá nó bằng Click vào nút Delete.
- Nhấn vào nút New Popup. Một Popup Menu mới được tạo ra.
- Nhấn vào nút New Item để tạo mới một menu con cho Popup menu này. Vào mục Label đặt tên cho menu con này là phóng to
- Đóng hộp thoại chỉnh sửa, ra khung nhìn, kích chuột phải vào khung nhìn ta thấy xuất hiện như sau
Khi ta nhấn vào Popup1 ta không thấy có sự kiện nào xảy ra, điều này do ta chưa gán một script nào cho sự kiện click của Phong to.
Bây giờ ta tiến hành gán một script cho sự kiện click của Phong to. - Mở hộp thoại chỉnh sửa giao diện
- Chọn phóng to
- Kích đôi vào mục Click, hộp thoại yêu cầu xác định script cho menu này xuất hiện. Chon Scripts View.ZoomOut
- Đóng giao diện soạn thảo script, quay về của sổ giao diện khung nhìn, nhấn phải chuột vào khung nhìn, click vào phóng to, lúc đó bản đồ sẽ được phóng to lên sau mỗi lần click.
Để xoá Popup menu mới tạo ta vào hộp thoại chỉnh sửa giao diện, chọn Popup menu này và nhấn vào nút Delete.
Ngoài ra các Menu, Button, Tool, Popup Menu còn các thuộc tính sau: Disabled: Xét tính kích hoạt hay không kích hoạt cho đối tượng
Help Topic: Nội dung giúp đỡ
Invisible: Hiển thị hay không hiển thị đối tượng này
Tag: Một chuỗi được gán vào đối tượng để phân biệt với đối tượng khác
Update: Update là sự kiện xảy ra khi ta thực hiện một thao tác nào đó, để có sự kiện này ta phải gán Script vào sự kiện này cho đối tượng.
Lập trình giao diện
Dialog là một giao diện để xây dựng các ứng dụng trong ArcView. Dialog cho phép tổ chức các nhiệm vụ đơn hoặc một tập các nhiệm vụ quan hệ trên các cửa sổ riêng, giống như cách tổ chức các nhiệm vụ có quan hệ với nhau trong cùng một menu hoặc trên thanh button.
Dialog Designer là một Extension do ArcView cung cấp. Dialog Designer chỉ hỗ trợ xây dựng các nhiệm vụ trên các Dialog mới chứ không cho phép sửa đổi các dialog sẵn có của ArcView. Lợi ích của việc dùng Dialog Designer là cho phép tạo ra các hộp thoại giao tiếp với người dùng theo thiết kế riêng.
Để thiết kế được giao diện ta kích hoạt Extension là Dialog Designer: Từ menu File trong cửa sổ Project, chọn mục Extension..., Kích chọn Dialog Designer để thêm Extension này vào đề án.
Đặt help Xét kích hoạt hay không Đặt tag Sự kiện Update
Các bước thiết kế giao diện Dialog cập nhật nhân khẩu:
Từ Dialog New Dialog.
Kích phải chuột vào Dialog để mở cửa sổ thuộc tính (Properties) và đặt Name cho nó là “Themnhankhau”, Title: “Thêm mới nhân khẩu”, Open: “Modulieu” thiết lập các thuộc tính như hình dưới:
Kich vào biểu tượng Text Line trên thanh Tooalbar và kéo thả nó vào cửa sổ Dialog.
Kich vào biểu tượng Button trên thanh Tooalbar và kéo thả nó vào cửa sổ Dialog.
Kich vào biểu tượng Combobox trên thanh Tooalbar và kéo thả nó vào cửa sổ Dialog.
Kich vào biểu tượng Check box trên thanh Tooalbar và kéo thả nó vào cửa sổ Dialog.
Kéo thả các Text Line, Label Button, Check box vào Dialog, kích chuột phải mở cửa sổ Properties và thiết lập các thuộc tính như sau:
Button 1 Icon: Tìm kiếm
Click: Sripts Search_Nhankhau
Button 2 Icon: Xem thông tin
Click: Sripts Xemthongtinnhankhau
Button 3
Icon: Thêm mới dữ liệu Click: Sripts OK_Themnhankhau
Button 4 Icon: Tiếp tục them mới
Click: Sripts Tieptuc_nhankhau
Button 5 Icon: Xóa dữ liệu
Click: Sripts Xoa_Nhankhau
Button 6 Icon: Thoát
Click: Sripts Thoat Button 7
Icon: Sửa dữ liệu
Click: Scripts Sửa_Nhankhau
Text line 1 Name: txtmank
Label: Mã nhân khẩu Text line 2 Name: txthten
Label: Họ và tên nhân khẩu Text line 3 Name: txttgk
Label: Tên gọi khác Text line 4 Name: txtns
Label: Ngày sinh Text line 5 Name: txtnn
Label: Nghề nghiệp Text line 6 Name: txtcmnd
Label: Số CMND
Combo box1 Name: shk
Label: Số sổ hộ khẩu
Combo box2 Name: cbdt
Combo box3 Name: cbgt
Label: Giới tính
Combo box4 Name: cbtg
Label: Tôn giáo
Combo box5 Name: ctdhv
Label: Trình độ học vấn
Combo box6 Name: cbhuyen
Label: Huyện
Check box Name: chuho
Label: Chủ hộ
Kết quả như sau:
Các Scripts minh họa:
o Scripts Modulieu
aDlog=self
lbx_DanhSach1=aDlog.FindByName("cbhk") theView=av.GetActiveDoc
theTable1=VTab.MakeSQL(_theSQL, astring) theField1=theTable1.FindField("Soso") listTheme1={}
for each rec in theTable1
listTheme1.Add(theTable1.ReturnValue(theField1,rec)) end
lbx_DanhSach1.DefineFromList(listTheme1)
lbx_DanhSach3=aDlog.FindByName("cbmahuyen") theView=av.GetActiveDoc
astring="Select * from HUYEN"
theTable3=VTab.MakeSQL(_theSQL, astring) theField3=theTable3.FindField("Tenhuyen") listTheme3={}
for each rec in theTable3
listTheme3.Add(theTable3.ReturnValue(theField3,rec)) end lbx_DanhSach3.DefineFromList(listTheme3) lbx_DanhSach4=aDlog.FindByName("cbtdhv") theView=av.GetActiveDoc astring="Select * from TDHV" theTable4=VTab.MakeSQL(_theSQL, astring) theField4=theTable4.FindField("TenTDHV") listTheme4={}
for each rec in theTable4
listTheme4.Add(theTable4.ReturnValue(theField4,rec)) end
lbx_DanhSach4.DefineFromList(listTheme4) lbx_DanhSach5=aDlog.FindByName("cbdt") theView=av.GetActiveDoc
astring="Select * from DANTOC"
theTable5=VTab.MakeSQL(_theSQL, astring) theField5=theTable5.FindField("TenDT") listTheme5={}
for each rec in theTable5
listTheme5.Add(theTable5.ReturnValue(theField5,rec)) end
lbx_DanhSach5.DefineFromList(listTheme5) lbx_DanhSach6=aDlog.FindByName("cbtongiao") theView=av.GetActiveDoc
astring="Select * from TONGIAO"
theTable6=VTab.MakeSQL(_theSQL, astring) theField6=theTable6.FindField("TenTG")
listTheme6={}
for each rec in theTable6
listTheme6.Add(theTable6.ReturnValue(theField6,rec)) end lbx_DanhSach6.DefineFromList(listTheme6) gtinh=aDlog.FindByName("cbgtinh") blist={} blist.Add("Nam") blist.Add("Nu") gtinh.DefineFromList(blist) dlog=av.FindDialog("Themnhankhau") f1 = dlog.FindByName("txthoten") f2 = dlog.FindByName("txttgk") f13 = dlog.FindByName("txtns") f14 = dlog.FindByName("txtnn") f15 = dlog.FindByName("txtcmnd") f16 = dlog.FindByName("txttgk") f17 = dlog.FindByName("txtmank") f1.empty f2.empty f13.empty f14.empty f15.empty f16.empty f17.empty o Scripts Ok_Themnhankhau dlog=av.FindDialog("Themnhankhau") f0 = dlog.FindByName("cbhk") f1 = dlog.FindByName("txthoten") f5 = dlog.FindByName("cbdt") f6 = dlog.FindByName("cbgtinh") f7 = dlog.FindByName("cbtongiao") f8 = dlog.FindByName("cbtdhv") f9 = dlog.FindByName("cbmahuyen") f13 = dlog.FindByName("txtns") f14 = dlog.FindByName("txtnn") f15 = dlog.FindByName("txtcmnd") f16 = dlog.FindByName("txttgk") f17 = dlog.FindByName("txtmank") f18 = dlog.FindByName("chuho") if(f6.GetSelection.asString="Nam") then t="true"
end if(f6.GetSelection.asString="Nu") then t="false" end if(f18.IsSelected=true) then t1="true" end if(f18.IsSelected=False) then t1="false" end
str="Select * from DANTOC where TenDT='"+f5.GetSelection.asString+"'" theVTab=VTab.MakeSQL(_theSQL,str) for each rec in theVTab
ma = theVTab.FindField("MaDT") mas = theVTab.ReturnValue(ma,rec) end
str1="Select * from TONGIAO where TenTG='"+f7.GetSelection.asString+"'" theVTab1=VTab.MakeSQL(_theSQL,str1) for each rec in theVTab1
masc = theVTab1.FindField("MaTG") mascs = theVTab1.ReturnValue(masc,rec) end
str2="Select * from HUYEN where
Tenhuyen='"+f9.GetSelection.asString+"'" theVTab2=VTab.MakeSQL(_theSQL,str2) for each rec in theVTab2
malh = theVTab2.FindField("Mahuyen") malhs = theVTab2.ReturnValue(malh,rec) end
str3="Select * from TDHV where
TenTDHV='"+f8.GetSelection.asString+"'" theVTab3=VTab.MakeSQL(_theSQL,str3) for each rec in theVTab3
matds = theVTab3.ReturnValue(matd,rec) end astring="insert into NHANKHAU(MaNK,Chuho,HovatenNK,Tengoikhac,Gioitinh,Ngaysi nh,SoCMND,Nghenghiep,Soso,MaDT,MaTDHV,Mahuyen,MaTG)Va lues('"+f17.GetText.asString+"','"+t1+"','"+f1.GetText.asString+"',' "+f16.GetText.asString+"','"+t+"','"+f13.GetText.asString+"','"+f15 .GetText.asString+"','"+f14.GetText.asString+"','"+f0.GetSelection.a sString+"','"+mas.asString+"','"+matds.asString+"','"+malhs.asStri ng+"','"+mascs.asString+"')" _theSQL.ExecuteSQL(astring) av.finddialog("Themnhankhau").close
Msgbox.info("Them moi thanh cong","Thong Bao")
o Scripts Search_nhankhau dlog=av.FindDialog("Themnhankhau") f0= dlog.FindByName("cbhk") f1 = dlog.FindByName("txtmank") f5 = dlog.FindByName("txthoten") f2 = dlog.FindByName("txttgk") f3 = dlog.FindByName("txtns") f4 = dlog.FindByName("txtcmnd") f11 = dlog.FindByName("txtnn") f6 = dlog.FindByName("cbdt") f7 = dlog.FindByName("cbtongiao") f8 = dlog.FindByName("cbmahuyen") f9 = dlog.FindByName("cbtdhv") f10 = dlog.FindByName("cbgtinh") f12 = dlog.FindByName("chuho")
astring="Select * from NHANKHAU where MaNK='"+ f1.GetText.asString +"'"
theVTab=VTab.MakeSQL(_theSQL,astring) n=theVTab.GetNumRecords
if(n<>0)then
for each rec in theVTab
ma = theVTab.Findfield("MaNK") mas = theVTab.ReturnValue(ma,rec) gt= theVTab.FindField("Gioitinh") gts = theVTab.ReturnValue(gt,rec) ss = theVTab.Findfield("Soso")
sss = theVTab.ReturnValue(ss,rec) ht = theVTab.Findfield("HovatenNK") hts = theVTab.ReturnValue(ht,rec) tgk = theVTab.Findfield("Tengoikhac") tgks = theVTab.ReturnValue(tgk,rec) cm = theVTab.Findfield("SoCMND") cms = theVTab.ReturnValue(cm,rec) dt = theVTab.Findfield("MaDT") dts = theVTab.ReturnValue(dt,rec) nn = theVTab.Findfield("Nghenghiep") nns = theVTab.ReturnValue(nn,rec) n = theVTab.Findfield("Ngaysinh") ns = theVTab.ReturnValue(n,rec) tg = theVTab.Findfield("MaTG") tgs = theVTab.ReturnValue(tg,rec) h = theVTab.Findfield("Mahuyen") hs = theVTab.ReturnValue(h,rec) td = theVTab.Findfield("MaTDHV") tds = theVTab.ReturnValue(td,rec) ch = theVTab.Findfield("Chuho") chs = theVTab.ReturnValue(ch,rec)
str="Select * from DANTOC where MaDT='"+dts.asString+"'" theVTab4=VTab.MakeSQL(_theSQL,str)
for each rec in theVTab4
m1 = theVTab4.FindField("TenDT") m1s = theVTab4.ReturnValue(m1,rec) end
str1="Select * from TONGIAO where MaTG='"+tgs.asString+"'" theVTab1=VTab.MakeSQL(_theSQL,str1)
for each rec in theVTab1
m2 = theVTab1.FindField("TenTG") m2s = theVTab1.ReturnValue(m2,rec)
end
str2="Select * from HUYEN where Mahuyen='"+hs.asString+"'" theVTab2=VTab.MakeSQL(_theSQL,str2)
for each rec in theVTab2
m3 = theVTab2.FindField("Tenhuyen") m3s = theVTab2.ReturnValue(m3,rec) end
str3="Select * from TDHV where MaTDHV='"+tds.asString+"'" theVTab3=VTab.MakeSQL(_theSQL,str3)
for each rec in theVTab3
m4 = theVTab3.FindField("TenTDHV") m4s = theVTab3.ReturnValue(m4,rec) end f0.SetCurrentValue(sss.asString) if(gts="1") then f10.SetCurrentValue("Nam") end if(gts="0") then f10.SetCurrentValue("Nu") end f6.SetCurrentValue(m1s.asString) f7.SetCurrentValue(m2s.asString) f8.SetCurrentValue(m3s.asString) f9.SetCurrentValue(m4s.asString) f1.SetText(mas.asString) f5.SetText(hts.asString) f2.SetText(tgks.asString) f4.SetText(cms.asString) f3.SetText(ns.asString) f11.SetText(nns.asString) if(chs="1") then f12.IsSelected end end else
MsgBox.info("Khong tim thay du lieu","Thong Bao") End