Hi,
Added following changes to enable OnChange support for CDEdit and CDComboBox.
If this is OK, it could perhaps be added to Custom Drawn Components package.
procedure TCDComboBox.SetItemIndex(AValue: Integer);
var
lValue : Integer;
lText: String;
begin
lValue := AValue;
// First basic check
if lValue >= FItems.Count then lValue := FItems.Count - 1;
if lValue < -1 then lValue := -1;
// Check if the text changed too, because it might differ from the choosen item
FItemIndex:=lValue;
if (lValue >= 0) and (lValue < FItems.Count)then
begin
lText := FItems.Strings[lValue];
if Lines.Text = lText then Exit;
// MyChanges **************************************************
if FItems.Count > 1 then
begin
Lines.Text := FItems.Text;
if lValue < Lines.Count then
DoChange;
end;
// MyChanges **************************************************
Text := lText;
end;
Invalidate;
end;
procedure TCDEdit.SetCurrentLine(AStr: string);
var
oldStr : string;
begin
if (FEditState.Lines.Count = 0) or (FEditState.CaretPos.Y >= FEditState.Lines.Count) then
begin
FEditState.Lines.Text := AStr;
FEditState.VisibleTextStart.X := 1;
FEditState.VisibleTextStart.Y := 0;
FEditState.CaretPos.X := 0;
FEditState.CaretPos.Y := 0;
end
else
begin
oldStr := FLines.Strings[FEditState.CaretPos.Y]; // MyChanges **************
FLines.Strings[FEditState.CaretPos.Y] := AStr;
if oldStr <> AStr then // MyChanges **************
DoChange; // MyChanges **************
end;
end;
Regards
stab
