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?
Ein Therapeut entspricht 1024 Gigapeut.