在下拉數(shù)據(jù)窗口中查找與輸入數(shù)據(jù)匹配的數(shù)據(jù)_第1頁
在下拉數(shù)據(jù)窗口中查找與輸入數(shù)據(jù)匹配的數(shù)據(jù)_第2頁
在下拉數(shù)據(jù)窗口中查找與輸入數(shù)據(jù)匹配的數(shù)據(jù)_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、在下拉數(shù)據(jù)窗口中查找與輸入數(shù)據(jù)匹配的數(shù)據(jù)從下拉數(shù)據(jù)窗口中查找數(shù)據(jù)時,一般情況下,需要從下拉數(shù)據(jù)窗口的第一行開始查找。如果下拉數(shù)據(jù)窗口中的數(shù)據(jù)很少,只有十條左右,查找很方便。但是,如果下拉數(shù)據(jù)窗口的數(shù)據(jù)很多,如上百條,則查找起來就會很麻煩。下面講述一種從下拉數(shù)據(jù)窗口中查找數(shù)據(jù)的方法。該方法可以實現(xiàn):將數(shù)據(jù)輸入該列時,該列自動顯示下拉數(shù)據(jù)窗口中與輸入數(shù)據(jù)最匹配的第一個數(shù)據(jù),下拉數(shù)據(jù)窗口自動滾動到被選數(shù)據(jù)所在的行,并且高亮度顯示該行。下面舉例介紹,步驟如下:1.創(chuàng)建窗口win_article_subject,在窗口中放置數(shù)據(jù)窗口控制dw_1。2.創(chuàng)建與窗口win_article_subject相連的

2、數(shù)據(jù)窗口dw_article_subject,該數(shù)據(jù)窗口基于表“article_subject”。創(chuàng)建“subject”列的下拉數(shù)據(jù)窗口dw_subject,該下拉數(shù)據(jù)窗口基于表“subject”。創(chuàng)建好的窗口及數(shù)據(jù)窗口如下圖所示:注意,在帶有下拉數(shù)據(jù)窗口的列 (“subject”列)中,必須指定該列的“Allow Editing”屬性為True。3.在窗口中定義如下的實例變量:long il_rowcountboolean ib_keyworddatawindowchild idwc_datastring is_mach, is_type 4.在窗口的open事件寫入如下的語句:ib_key

3、word = false5.在窗口中定義名為“highlight”的用戶自定義事件,不指定事件ID號、傳入?yún)?shù)和返回值,并在事件中寫入如下的語句:idwc_data.SelectRow(il_rowcount, TRUE)6.創(chuàng)建全局函數(shù)gf_match_row,函數(shù)的參數(shù)和返回值定義如下表所示:參數(shù)名 參數(shù)類型 參數(shù)傳遞方式dwc_name datawindowchild reference s_text string values_type string values_col_name string value返回類型為:長整型(Long)。函數(shù)程序如下:string ls_mthtext

4、long ll_mthrowlong ll_counter = 1 long ll_rowIF s_type = "number" THEN /檢測列的數(shù)據(jù)類型是否為number /逐行檢測下拉數(shù)據(jù)窗口中與輸入數(shù)據(jù)最匹配的數(shù)據(jù)所在的行 DO UNTIL ll_counter > dwc_name.RowCount() ll_mthrow = dwc_name.GetItemNumber(ll_counter, s_col_name) IF Left(string(ll_mthrow), i_length) = s_text THEN ll_row = ll_count

5、er EXIT ELSE ll_counter = ll_counter + 1 END IF LOOP ELSE/列的數(shù)據(jù)類型不是number /逐行檢測下拉數(shù)據(jù)窗口中與輸入數(shù)據(jù)最匹配的數(shù)據(jù)所在的行 DO UNTIL ll_counter > dwc_name.RowCount() ls_mthtext = dwc_name.GetItemString(ll_counter, s_col_name) IF Left(ls_mthtext, i_length) = s_text then ll_row = ll_counter EXIT ELSE ll_counter = ll_coun

6、ter + 1 END IF LOOP END IF return(ll_row) /返回與輸入數(shù)據(jù)最匹配的數(shù)據(jù)所在行的行號 7. 在數(shù)據(jù)窗口控制的“clicked”事件中寫入如下的程序: ib_keyword = false 8. 在數(shù)據(jù)窗口控制(dw_1)的“editchanged”事件寫入如下程序: /定義變量 string ls_search, ls_col_name string ls_attribute integer li_string_length /獲得具有下拉數(shù)據(jù)窗口列的列名 ib_keyword = false ls_col_name = dw_1.GetColumnNa

7、me() /判別當(dāng)前列是否具有下拉數(shù)據(jù)窗口,如果不具有,則退出事件程序 IF dw_1.GetChild(ls_col_name,idwc_data) < 0 THEN return END IF /獲得下拉數(shù)據(jù)窗口的顯示列及其類型 ls_attribute = ls_col_name + ".dddw.displaycolumn" ls_col_name = this.Describe ( ls_attribute) ls_attribute = ls_col_name+".coltype" is_type = idwc_data.Describ

8、e(ls_attribute) /獲得輸入到列中的文本 ls_search = dw_1.GetText() li_string_length = Len(ls_search) IF li_string_length = 0 THEN return END IF /找出下拉數(shù)據(jù)窗口中與輸入數(shù)據(jù)最匹配的行 il_rowcount = gf_match_row(idwc_data, ls_search,+& li_string_length,is_type,ls_col_name) IF il_rowcount <= 0 THEN ib_keyword = FALSE ELSE ib

9、_keyword = TRUE idwc_data.SetRow(il_rowcount) IF is_type = "number" THEN is_mach = string(idwc_data.GetItemNumber(il_rowcount,ls_col_name) dw_1.SetItem(dw_1.GetRow(),dw_1.GetColumn(), is_mach) ELSE is_mach = idwc_data.GetItemString(il_rowcount, ls_col_name) dw_1.SetItem(dw_1.GetRow(),dw_1.GetColumn(),is_mach) END IF /事件editchanged結(jié)束后,下拉數(shù)據(jù)窗口中被選中的行以高亮度顯示 parent.PostEvent("highlight") END IF 運行窗口“win_article_type”,在數(shù)據(jù)窗口中的“subject”列中輸入第一個字時,該列顯示下拉數(shù)據(jù)窗口中與輸入的第一個字相匹配的數(shù)據(jù),下拉數(shù)據(jù)窗口自動滾動到該行,并且高亮度顯示該行。例如,當(dāng)在“subject”列中輸入“工”字時,數(shù)據(jù)“工業(yè)”自動顯示到該列中,下

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論