Ich hoffe, ich habe dein Problem richtig verstanden.
Ich habe mir dafür mal einen Helper (für den DataController) gebastelt.
Delphi-Quellcode:
procedure TcxGridDBDataControllerHelper.GetFieldStringValues(AValues:
TGenericStringList;
const AFieldName:
string;
const AAllRecords: Boolean =
True);
Var
I: Integer;
AItem: TcxCustomGridTableItem;
AItemIndex: Integer;
procedure AddValue(
const AValue: Variant);
Var
AStringValue:
string;
begin
AStringValue := VarToStr(AValue);
if (AStringValue <> '
')
then
AValues.Add(AStringValue);
end;
begin
if (Controller.SelectedRecordCount = 0)
and not AAllRecords
then
Exit;
if DataModeController.GridMode
then
raise Exception.Create('
Methode in GridMode nicht möglich');
AItem := GetItemByFieldName(AFieldName);
if AItem =
nil then
Exit;
AItemIndex := AItem.
Index;
if (Controller.SelectedRecordCount > 1)
then
begin
for i := 0
to Controller.SelectedRecordCount - 1
do
AddValue(Controller.SelectedRecords[i].Values[AItemIndex]);
end
else
if AAllRecords
then
begin
for i := 0
to FilteredRecordCount - 1
do
AddValue(Values[FilteredRecordIndex[i], AItemIndex]);
end
else
AddValue(Controller.FocusedRecord.Values[AItemIndex]);
end;
Hier werden die Werte eines beliebigen Feldes in eine Liste geschrieben.
Ich brauchte die Werte zur Weiterverwendung im
SQL für ein IN Statement.
Ist es das was du suchst?
Frank