diff --git a/components/exctrls/source/excheckcombo.pas b/components/exctrls/source/excheckcombo.pas index a5042b197..57a1f5f6f 100644 --- a/components/exctrls/source/excheckcombo.pas +++ b/components/exctrls/source/excheckcombo.pas @@ -29,6 +29,7 @@ type procedure InsertItem(AIndex: Integer; const AText: string; Obj: TObject); override; public + destructor Destroy; override; procedure Assign(ASource: TPersistent); override; procedure Clear; override; procedure Delete(AIndex: Integer); override; @@ -59,7 +60,8 @@ type FOnDropDown: TNotifyEvent; FOnItemChange: TCheckItemChange; FOnItemClick: TCheckListClicked; - procedure CloseUpHandler(Sender: TObject); + procedure CheckComboBoxFormCloseHandler(Sender: TObject; var CloseAction: TCloseAction); +// procedure CloseUpHandler(Sender: TObject); function GetChecked(AIndex: Integer): Boolean; function GetItemEnabled(AIndex: Integer): Boolean; function GetItems: TStrings; @@ -193,6 +195,12 @@ end; { TCheckComboBoxExStrings } +destructor TCheckComboBoxExStrings.Destroy; +begin + Clear; + inherited; +end; + procedure TCheckComboBoxExStrings.Assign(ASource: TPersistent); var i: Integer; @@ -530,6 +538,14 @@ begin DoChange; end; +procedure TCheckComboBoxEx.CheckComboBoxFormCloseHandler(Sender: TObject; + var CloseAction: TCloseAction); +begin + CloseUp; + FCheckListBox := nil; + CloseAction := caFree; +end; + procedure TCheckComboBoxEx.Clear; begin FItems.Clear; @@ -547,10 +563,12 @@ begin DoCloseUp; end; +{ procedure TCheckComboBoxEx.CloseUpHandler(Sender: TObject); begin CloseUp; end; +} procedure TCheckComboBoxEx.DoChange; begin @@ -829,6 +847,7 @@ begin F.Initialize(FDropDownCount, PopupOrigin, PopupWidth); SaveInitialChecks; F.FCheckListbox.OnItemClick := @ItemClickHandler; + F.OnClose := @CheckComboBoxFormCloseHandler; F.Show; FDroppedDown := true; FCheckListbox := F.FCheckListbox;