VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

關於combo 的操作

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
snciset



註冊時間: 2007-12-06
文章: 66
來自: 台北

第 1 樓

發表發表於: 星期四 三月 06, 2008 4:24 pm    文章主題: 關於combo 的操作 引言回覆

我新增一個 combo,其style 設為2,可是當append blank 時(append blank 後執行thisform.refresh),第一次點選combo選項便會在最底下一欄增加一空白欄,但只要點選一次後,如再點第2次時,空白欄就不見了,但如style設為0便不會,但我不想讓user key 資料,只能style設為2,我知道這空白列是append blank產生的,因為我control source有設table的對應欄位,如何讓這個空白列不產生呢?
其實我是要讓usr選對應的地址,如A欄(村名)選111村,則B欄(街名)會additem相關街名,再讓user選,
如住址原先是111村AAA街而當村別改變時,如選222村原先街名AAA也會加到B欄去,但其實我在選222村時並沒有加上AAA街,但只要再點一次B欄且不要選AAA街以後就不會再出現了,而我在additem前有下combo.clear,這是不是因為和上述相同的原因呢?
但我設style = 0就不會........但我不想啊.....請問各為大大能幫忙解惑一下嗎?
ps:我有努力過了,combo所有的屬性都試遍了,可能我太笨了~~~

_________________
一個LKK的勞工,只為了維護15年前寫的一些在dos下clipper的東東,96年11月決定學foxpro
回頂端
檢視會員個人資料 發送私人訊息
saint



註冊時間: 2003-07-14
文章: 211


第 2 樓

發表發表於: 星期四 三月 06, 2008 4:41 pm    文章主題: 引言回覆

也許可以先拉好關連,再個別設定二個combobox 。
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
syntech



註冊時間: 2003-05-16
文章: 4214
來自: Taipei,Taiwan

第 3 樓

發表發表於: 星期四 三月 06, 2008 4:51 pm    文章主題: 引言回覆

填滿列示方塊或下拉式列示方塊
透過設定 RowSourceType 和 RowSource 屬性,列示方塊可以設定不同資料來源的選項。

為列示方塊或下拉式列示方塊選定資料來源型態

RowSourceType 屬性決定列示方塊或下拉式列示方塊的資料來源型態 — 如陣列或別名。設定好 RowSourceType 後,設定 RowSource 屬性可指定列示方塊項的資料來源。

RowSourceType 列示方塊項的源
0 無,由程式向列示方塊中新增項目。
1 值
2 別名
3 SQL 命令敘述
4 查詢 (.qpr)
5 陣列
6 欄位
7 檔案
8 資料結構
9 下拉突顯功能表。包含此項是為了提供向後相容性。


下面幾節將詳細介紹 RowSourceType 的不同設定。

無 如果將 RowSourceType 屬性設定為 0(預設值),則無法利用與資料來源結合並自動設定列示方塊選項。可以利用 AddItem 方法程序新增列示方塊中的選項:

frmForm1.lstMyList.RowSourceType = 0
frmForm1.lstMyList.AddItem("First Item")
frmForm1.lstMyList.AddItem("Second Item")
frmForm1.lstMyList.AddItem("Third Item")

RemoveItem 方法程序從列示方塊中移除列示方塊選項。例如,下面一行程式碼從列示方塊中移除 [Second Item] 項:

frmForm1.lstMyList.RemoveItem(2)

值 如果將 RowSourceType 屬性設定為 1,可用 RowSource 屬性指定多個要在列示方塊中顯示的值。如果在[屬性]視窗中設定 RowSource 屬性,請用逗號分隔列示方塊選項;要在程式中設定 RowSource 屬性,請用逗號分隔列示方塊項,並用引號括起來:

Form1.lstMyList.RowSourceType = 1
Form1.lstMyList.RowSource = "one,two,three,four"

別名 如果將 RowSourceType 屬性設定為 2,可以在列示方塊中包含開啟資料表格的一個或多個欄位的值。

如果 ColumnCount 屬性設定為 0 或 1,列示方塊將顯示資料表格中第一個欄位的值;如果 ColumnCount 屬性設定為 3,列示方塊將顯示資料表格中最前面的三個欄位值;如果您不想按欄位在資料表格中的儲存順序顯示欄位,可將 RowSourceType 屬性設定為 3 — SQL 命令敘述或 6 — 欄位。

附註 如果 RowSourceType 設定為 2 — 別名或 6 — 欄位,當使用者在列示方塊中選定新值時,資料表格的資料記錄指標將移動到使用者所選定的記錄。

SQL 命令敘述 如果將 RowSourceType 屬性設定為 3 — SQL 命令敘述,則在 RowSource 屬性中包含一個 SELECT - SQL 敘述。例如,下面的 SQL 敘述將 Customer 資料表格的全部欄位和記錄選定到暫存資料表格中。

SELECT * FROM Customer INTO CURSOR mylist

如果在程式中設定 RowSource 屬性,請記住將 SELECT 敘述用引號括起來。

附註 預設情況下,不帶 INTO 引數的 SELECT 敘述立刻會出現[瀏覽]視窗並顯示得出的暫存資料表格的資料。由於在 RowSource 的 SQL 敘述中很少這樣要求,應在 SELECT 敘述中包含 INTO CURSOR 引數。

查詢 如果將 RowSourceType 屬性設定為 4,可以用查詢的結果將資料加入列示方塊,查詢是在[查詢設計工具]中設計的。當 RowSourceType 設定為 4 時,請將 RowSource 屬性設定為 .qpr 檔案。例如,下面一行程式碼將列示方塊的 RowSource 屬性設定為一個查詢:

THISFORM.List1.RowSource = "region.qpr"

如果不指定檔案副檔名,Visual FoxPro 將預設副檔名是 .qpr。

陣列 如果 RowSourceType 屬性設定為 5,可以用陣列中的資料加入列示方塊中。您可以為 RowSource 建立一個表單或表單集的陣列屬性,或者使用應用程式中其他部份建立的陣列。

有關建立陣列屬性的詳細內容,請參閱第九章<建立表單>。

疑難解答 Visual FoxPro 只在需要的時候使用列示方塊的 RowSource 設定值,而不是在設定 RowSource 的方法程序中使用,因此需要特別注意作用範圍。如果在方法程序中建立了一個本地的陣列,則這個陣列的作用範圍只在這個方法程序內,並不是每當 Visual FoxPro 使用該陣列時,都可用。如果將列示方塊的 RowSource 設定為表單或表單層級的陣列屬性,則需要相對於列示方塊來參考這個屬性,而不應相對於設定屬性的方法程序。例如,如果有一個名為 arrayprop 的表單層級的陣列屬性,表單的 Init 程序中的下面兩行程式碼將產生不同的結果:

THIS.lst1.RowSource = "THIS.arrayprop" && 錯誤
THIS.lst1.RowSource = "THISFORM.arrayprop" && 正確

若要用多維陣列的資料來加入列示方塊

將 RowSourceType 屬性設定為 5。


將 RowSource 屬性設定為對應的多維陣列。


將 ColumnCount 屬性設定為要顯示的直欄數。


將每直欄的 ColumnWidths 屬性設定為需要的寬度。
欄位 如果 RowSourceType 屬性設定為 6,則可以指定一個欄位或用逗號分隔的一系列欄位值來填滿列示方塊,例如:

contact,company,country

對於 RowSourceType 屬性為 6 — 欄位的列示方塊,可在 RowSource 屬性中包括下列幾種訊息:

欄位


別名.欄位


別名.欄位,欄位,欄位, ...
如果想在列示方塊中包括多個資料表格的欄位,需將 RowSourceType 屬性設定為 3 — SQL 命令敘述。

RowSourceType 值為 6 — 欄位與 RowSourceType 值為 2 — 別名不同在於,RowSourceType 值為 6 — 欄位時允許不按欄位在資料表格中的實際位置來顯示該欄位。

檔案 如果將 RowSourceType 屬性設定為 7,將使用目前所在目錄下的檔案來填滿列示方塊。而且,列示方塊中的選項允許選定不同的磁碟機和目錄,並在列示方塊中顯示其中的檔案名稱。

用目錄中的檔案名稱填滿的列示方塊



可將 RowSource 屬性設定為列示方塊中顯示的檔案類型的格式。例如,要在列示方塊中顯示 Visual FoxPro 資料表格,可將 RowSource 屬性設定為 *.dbf。

資料結構 如果將 RowSourceType 屬性設定為 8,將用 RowSource 屬性指定的資料表格中的所有欄位名稱來填滿列示方塊。如果您想為使用者提供用來尋找值的欄位名稱列示方塊或用來對資料表格進行排序的欄位名稱列示方塊,這個 RowSourceType 設定很有用。

下拉突顯式功能表 如果將 RowSourceType 屬性設定為 9,則可以用一個先前定義的突顯功能表來填滿列示方塊。包含這一選項是為了提供向後回朔之相容性。

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
syntech



註冊時間: 2003-05-16
文章: 4214
來自: Taipei,Taiwan

第 4 樓

發表發表於: 星期四 三月 06, 2008 4:56 pm    文章主題: 引言回覆

近代人 應該會使用 rowsourcetype = 3
然後以 sql 命令 設定 rowsource
把前一個combobox 的值,當後一個combobox 的where條件之ㄧ
其他懶得打字

不過不表示其它方式做不出來,
只是比較直覺而已

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
snciset



註冊時間: 2007-12-06
文章: 66
來自: 台北

第 5 樓

發表發表於: 星期四 三月 06, 2008 10:26 pm    文章主題: 引言回覆

因為是用additem加上combo內的選項,所以我的RowSourceType設為0,但其實RowSourceType = 1 我也試過了,就直接把村名打在RowSource內,但只要append blank 就會在combo的最底下產生一空白選欄,這可能和我設controlsource = table的欄位有關,但我的form是要show一個一般的個人資料,住址....等,所以平常沒編輯的時候按下上下鍵即可看見不同人的資料,所以欄位設controlsource是比較方便的,但當按下新增資料的時候就一定要append blank呀,此時登打的時候就產生上述combo空白選欄的問題了,
所以我要問的問題是我設RowSourceType=0,RowSource = [none],style = 2,controlsource設為此table的某一欄位,而我想在當append blank時,在combo用additem加上去的選項最底部不產生一空白欄,這不知該如何做到.....
還是真如saint說的,要在另設一個沒有controlsource的temp_combo讓他抓不到append blank後的欄位空白值,然後在把點選後的值設給有controlsource的combo......
一定要這樣嗎?

_________________
一個LKK的勞工,只為了維護15年前寫的一些在dos下clipper的東東,96年11月決定學foxpro
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4214
來自: Taipei,Taiwan

第 6 樓

發表發表於: 星期五 三月 07, 2008 9:38 am    文章主題: 引言回覆

"真如saint說的,要在另設一個沒有controlsource的temp_combo讓他抓不到append blank後的欄位空白值,然後在把點選後的值設給有controlsource的combo......
一定要這樣嗎?"

這樣比較好控制精細的部分.
利用 valid 事件或是其他可用的事件.

關於是否要不要通通加上controlsource,
我們的系統一般設計是這樣,
只與資料輸入輸出有關的,加controlsource,
查詢用的,就不加controlsource,

正如你提到的,
如果加入controlsource之後,更動資料就會立刻寫入到記錄上.
而負責查詢的物件並不需要做記錄寫入的動作.

分成兩個物件處理,是比較好做一點.
以您目前的情況而言.
所謂"貪多嚼不爛"呀. ^_^

如果是我,我還是傾向弄一個combobox 一個 textbox,
combobox 負責資料輸入, textbox 用來查詢

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
snciset



註冊時間: 2007-12-06
文章: 66
來自: 台北

第 7 樓

發表發表於: 星期五 三月 07, 2008 12:25 pm    文章主題: 引言回覆

謝謝syntech和saint提供的寶貴實務經驗,我知道該怎麼做了,就如同你所言,先設一個沒有controlsource的combo和一個有controlsource的text,兩個做關聯,如此append blank才不會出現上述現象,謝謝囉~~~
我突然突發奇想,可以在執行時期切斷該combo的comtrolsource嗎?譬如說平常是有設controlsource的(以利上下鍵查詢用),但在append blank後,設該combo的controlsouce = 0(或none來切斷....我不太知道該怎麼下參數...),然後等存檔前再把該combo的controlsource設給該combo本來該有的table欄位後再存檔,這樣就不用多設一個temp_combo或text了呀,我這種想法會不會太天真了~~~
我這把年紀還如此天真好像有點沒道理~~~

_________________
一個LKK的勞工,只為了維護15年前寫的一些在dos下clipper的東東,96年11月決定學foxpro
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4214
來自: Taipei,Taiwan

第 8 樓

發表發表於: 星期五 三月 07, 2008 1:15 pm    文章主題: 引言回覆

不會很沒道理呀!

應該很多人設計的系統會隱藏一個 "狀態" 變數,
利用這個變數控制 controlsource 就可以.
當然整個 form 的運作方式需要完整的配套.
在此之前,分開比較好設計.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
snciset



註冊時間: 2007-12-06
文章: 66
來自: 台北

第 9 樓

發表發表於: 星期五 三月 07, 2008 4:06 pm    文章主題: 引言回覆

但我想我剛進foxpro的領域還不久,還是先遵循一下傳統該有的做法吧,先把自己的功力練好一點再說,不要說好, 至少對系統熟悉一點,我實在對foxpro物件,屬性,操作等還是有一點生澀的
就好像你說的,貪多嚼不爛,貪快反而慢
謝謝大哥的指導囉~~~

_________________
一個LKK的勞工,只為了維護15年前寫的一些在dos下clipper的東東,96年11月決定學foxpro
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4214
來自: Taipei,Taiwan

第 10 樓

發表發表於: 星期五 三月 07, 2008 4:42 pm    文章主題: 引言回覆

我是小弟,小白兔,NoBody, ^_^
_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
snciset



註冊時間: 2007-12-06
文章: 66
來自: 台北

第 11 樓

發表發表於: 星期一 三月 10, 2008 11:26 am    文章主題: 引言回覆

syntech小弟,但常常幫你找麻煩,總算得稱呼您一聲上師囉~~Smile
_________________
一個LKK的勞工,只為了維護15年前寫的一些在dos下clipper的東東,96年11月決定學foxpro
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作