XÂY DỰNG GIAO DIỆN

Một phần của tài liệu Xây dựng cơ sở dữ liệu GIS sơ đồ địa bàn phường Vĩnh Thọ - TP.Nha Trang (Trang 68 - 87)

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 Kích đôi vào đây để thay đổi các

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 (adsbygoogle = window.adsbygoogle || []).push({});

- 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: (adsbygoogle = window.adsbygoogle || []).push({});

Để 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: (adsbygoogle = window.adsbygoogle || []).push({});

 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

Combo box1 Name: shk

Label: Số sổ hộ khẩu

Combo box2 Name: cbdt (adsbygoogle = window.adsbygoogle || []).push({});

Label: Dân tộc

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:

aDlog=self

lbx_DanhSach1=aDlog.FindByName("cbhk") theView=av.GetActiveDoc

astring="Select * from SOHOKHAU"

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" (adsbygoogle = window.adsbygoogle || []).push({});

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

theVTab3=VTab.MakeSQL(_theSQL,str3) for each rec in theVTab3

matd = theVTab3.FindField("MaTDHV") 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 (adsbygoogle = window.adsbygoogle || []).push({});

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

Một phần của tài liệu Xây dựng cơ sở dữ liệu GIS sơ đồ địa bàn phường Vĩnh Thọ - TP.Nha Trang (Trang 68 - 87)