Hab nach langem Suchen geheime Events gefunden (geheim = die sind nicht im
OI sichtbar)
und angefangen diese zu benutzen.
Delphi-Quellcode:
procedure TFormSyncro2.ValueToCheckStatesEvent(Sender: TObject; const AValue: TcxEditValue; var ACheckStates: TcxCheckStates);
var
i: Integer;
SL: TStringList;
begin
if VarIsNull(AValue) then begin
for i := 0 to High(ACheckStates) do
ACheckStates[i] := cbsChecked;
Exit;
end;
SL := TStringList.Create;
try
SL.CommaText := AValue;
for i := 0 to High(ACheckStates) do
if SL.IndexOf(((Sender as TcxCheckComboBoxProperties).Items[i] as TcxCheckComboBoxItem).Description) >= 0 then
ACheckStates[i] := cbsChecked
else
ACheckStates[i] := cbsUnchecked;
finally
SL.Free;
end;
end;
procedure TFormSyncro2.CheckStatesToValueEvent(Sender: TObject; const ACheckStates: TcxCheckStates; out AValue: TcxEditValue);
var
S: string;
i: Integer;
begin
S := '';
for i := 0 to High(ACheckStates) do
if ACheckStates[i] = cbsChecked then
S := S + IfThen(S <> '', ',', '') + TcxCheckComboBoxItem((Sender as TcxCheckComboBoxProperties).Items[i]).Description;
if S <> '' then
AValue := S
else
AValue := NULL;
end;
Was so erstmal nicht geht, dann irgendwer ist auf die saublöde Idee gekommen und läßt den Sender leer (nil).
Soll man das etwa für jedes Feld das einzeln implementieren?