cxGrid新增一列cxGrid1DBTableView1Column1,Properties設為LookupComboBox,KeyFieldName 設定為品名,ListFieldNames設定為品名,單價
問題1:如何邊輸入品名,邊根據品名模糊查找,并根據選中的品名自動填單價。
問題2:如果同品名有兩個單價,cxGrid1老是只能選中第一條單價,無法選擇第二條單價。
謝謝
uj5u.com熱心網友回復:
看這個官方demo \DevExpress VCL\ExpressQuantumGrid\Demos\Delphi\GridModeDemo\GridModeDemoprocedure TGridModeDemoMainForm.tvDataControllerFilterGetValueList(
Sender: TcxFilterCriteria; AItemIndex: Integer;
AValueList: TcxDataFilterValueList);
var
AColumn: TcxGridDBColumn;
ADataSet: TDataSet;
AProperties: TcxLookupComboBoxProperties;
AValue: Variant;
AIsLookupColumn: Boolean;
begin
ADataSet := TcxGridDBTableView(Grid.FocusedView).DataController.DataSet;
AColumn := TcxGridDBTableView(Grid.FocusedView).Columns[AItemIndex];
AIsLookupColumn := AColumn.PropertiesClass = TcxLookupComboBoxProperties;
with GridModeDemoDataDM do
try
Screen.Cursor := crHourGlass;
qryHelper.SQL.Clear;
qryHelper.SQL.Add(
'Select DISTINCT ' + AColumn.DataBinding.FieldName + ' From ' +
GetTableNameByDataSet(ADataSet));
qryHelper.SQL.Add(
GetSQLCondition(TcxGridDBTableView(Grid.FocusedView), False));
qryHelper.Open;
qryHelper.First;
while not qryHelper.Eof do
begin
AValue := qryHelper.Fields[0].Value;
if AIsLookupColumn then
begin
AProperties := TcxLookupComboBoxProperties(AColumn.GetProperties);
ADataSet := AProperties.ListSource.DataSet;
AValue := ADataSet.Lookup(
AProperties.KeyFieldNames,AValue, AProperties.ListFieldNames);
end;
if VarIsNull(AValue) then Exit;
AValueList.Add(fviValue, qryHelper.Fields[0].Value, AValue, False);
qryHelper.Next;
end;
qryHelper.Close;
finally
Screen.Cursor := crDefault;
end;
end;
uj5u.com熱心網友回復:
也在簡單研究一下cxGrid...uj5u.com熱心網友回復:
一、控制元件的使用1、Form中增加ADOConnection(連接資料庫)、ADOQuery(選擇下拉顯示的內容表)、DataSource三個控制元件。
設定相應引數,就其資料庫的表。
2、Form加入cxLookupComboBox控制元件

二、設定cxLookupComboBox屬性設定
(1)“Properties”屬性,點擊“ListSource”,改成DataSource1。
(2)“ListFieldNames”表示要顯示的列的名,如果顯示多列,列名中間用“;”分隔。此處,你可以設定“品名”、“單價”二個以上欄位;
(3)“KeyFieldNames” 表示要回傳的結果列。
3、設定顯示的屬性
點“ListColumns”,出現下面的內容。

右邊框里面的三行,對應“ListFieldNames”里面的列名。
(1)“Caption”是下拉時顯示的列標題文字。
(2)“HeaderAlignment”表示列標題字對齊方式。
(3)“Width”表示列寬。
tx每個顯示的列,都要逐個設定。
都設定好后,運行,就是下面的效果了。
當然,你的代碼應該顯示:“品名”、“單價”。這里僅提供顯示樣式。
uj5u.com熱心網友回復:

你的代碼應該顯示:“品名”、“單價”。這里僅提供顯示樣式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/56599.html
標籤:數據庫相關
