Query的Locate的参数问题.
心得分享 : Set (集合型態) 的使用方法Set (集合型態) 是 Object pascal 特有型態 , 在 BCB 中是用一個名為 Set 的類別來模擬Set 型態 , 由於在 VCL 元件中有許多屬性都會利用到 Set 型態 , 所以在此介紹其使用方法■ 加入集合元素語法 : 集合型態原型 << 元素一 [<< 元素二] [<< 元素二] [...]舉例 : 1. 在 MessageDlg 談出示對話盒中 , 若需要有兩個按鈕 "YES" & "NO" 則使用 TMsgDlgButtons() << mbYes << mbNo 完整範例如 if (MessageDlg("delete Record?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrYes) DataModule3->Table1->Delete();2. 我們要將某一元件之字型設為粗體 , 使用物件檢視器(Object Inspector)來設定很簡單 , 只要在 Font 屬性中展開 Style 次屬性 , 再將 fsBold 設為 true 即可 但在程式碼中如何做到以上動作呢 ? (以設定 Edit1 字型為粗體為例) Edit1->Font->Style = TFontStyles() << fsBold; 若要同時設定其字型為粗體加底線 : Edit1->Font->Style = TFontStyles() << fsBold << fsUnderline;■ 判斷是否含有集合元素 □ 判斷 Edit1 目前是否為粗體字型 if (Edit1->Font->Style.Contains(fsBold)) ShowMessage("true"); else ShowMessage("false"); □ 判斷 KeyDown 事件中是否帶有 Shift void __fastcall TFm_POS1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if (Shift.Contains(ssShift)) { ...... ...... } } □ 註 : 根據測試 Contains() 中好像無法同時塞入兩個集合元素值 ...■ 移除集合元素 同 "加入集合元素" 語法 , 但只要將 "<<" 改為 ">>" 即可 if (Edit1->Font->Style.Contains(fsBold)) Edit1->Font->Style = TFontStyles() >> fsBold;
void __fastcall TFm_POS1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if (Shift.Contains(ssShift)) { ...... ...... } } □ 註 : 根據測試 Contains() 中好像無法同時塞入兩個集合元素值 ...■ 移除集合元素 同 "加入集合元素" 語法 , 但只要將 "<<" 改為 ">>" 即可 if (Edit1->Font->Style.Contains(fsBold)) Edit1->Font->Style = TFontStyles() >> fsBold;