Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

TcxComboBox, уведомление о Delete?   Найти похожие ветки 

 
Es   (2012-07-30 14:59) [0]

Товарищи знатоки devExpress...

Мне нужно хранить список элементов в devExpress, компоненте TcxComboBox и привязать TObject для доп. информации об объекте в списке. Как бы сделать автоматическую сборку мусора, то есть чтобы при удалении строчки в комбо, он уведомлял или автоматически Free"ил привязанный TObject?


 
Ega23 ©   (2012-07-30 15:09) [1]

Никак, Items там TStrings. Либо переопределяй компонент, либо хелпер напиши


 
Es   (2012-07-30 15:24) [2]

эх, нету в моей дельфи хелперов )


 
Es   (2012-07-30 15:24) [3]

вообще я докопался до Properties.DataChanged или как-то так. Он стабильно вызывается при Delete. Но вот как в нём определить что реально происходит - я не понял пока ))


 
Es   (2012-07-30 15:33) [4]

Нет... PropertiesChanged оно называлось... ну как-то так, сейчас уже не помню.


 
Es   (2012-07-30 15:36) [5]


>  Items там TStrings

вообще не ожидал от тебя такого некорректного ответа. Если ты имеешь в виду как оно объявлено - то оно, конечно, да.
Но реально TStrings там быть не может, естественно, как ты понимаешь )


 
Ega23 ©   (2012-07-30 15:37) [6]


> эх, нету в моей дельфи хелперов )


ну тогда так


unit Unit50;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters,
 cxContainer, cxEdit, StdCtrls, cxTextEdit, cxMaskEdit, cxDropDownEdit;

type

 TcxComboBoxHack = class (TcxComboBox)
 public
   procedure MyFillCombo;
   procedure MyClearCombo;
 end;

 TForm50 = class(TForm)
   cxComboBox1: TcxComboBox;
   Button2: TButton;
   Button1: TButton;
   procedure Button2Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form50: TForm50;

implementation

{$R *.dfm}

procedure TForm50.Button1Click(Sender: TObject);
begin
 TcxComboBoxHack(cxComboBox1).MyFillCombo;
end;

procedure TForm50.Button2Click(Sender: TObject);
begin
 TcxComboBoxHack(cxComboBox1).MyClearCombo;
end;

procedure TForm50.FormCreate(Sender: TObject);
begin
 ReportMemoryLeaksOnShutdown := True;
end;

procedure TForm50.FormDestroy(Sender: TObject);
begin
 TcxComboBoxHack(cxComboBox1).MyClearCombo;
end;

{ TcxComboBoxHack }

procedure TcxComboBoxHack.MyClearCombo;
var
 i: Integer;
begin
 for i := Properties.Items.Count - 1 downto 0 do
 begin
 Properties.Items.Objects[i].Free;
   Properties.Items.Delete(i);
 end;
end;

procedure TcxComboBoxHack.MyFillCombo;
var
 i: Integer;
begin
 MyClearCombo;
 for i := 0 to 10 do
 Properties.Items.AddObject(IntToStr(i), TMemoryStream.Create);
end;

end.


 
Ega23 ©   (2012-07-30 15:39) [7]


> вообще не ожидал от тебя такого некорректного ответа. Если
> ты имеешь в виду как оно объявлено - то оно, конечно, да.
>
> Но реально TStrings там быть не может, естественно, как
> ты понимаешь )


В паблик вывалено TStrings. А что он там унутре использует - это уже не наше дело. Сегодня, например, TStringList. В следующем обновлении какой-нибудь TcxSuperPuperStrings, который потомок TStrings. Скрыто оно от нас, и нефиг трогать.
Либо пиши наследника и верти им как угодно.


 
Es   (2012-07-30 15:54) [8]

да не, я имел в виду твою фразу:


> Никак, Items там TStrings

я воспринял эту фразу, как ответ, что никак. И обоснование: потому что там Items является TStrings. И возник вопрос - ну и собственно что. Мало ли как объявлен Items, реально же скрыто может быть что угодно, а значит может быть есть какое событие, пусть даже и не published (как тот же propertiesChanged, который вызывается ВСЕГДА при удалении..).
Но я такого события, виртуальной функции не нашел, поэтому и завел ветку.. Мало ли есть, а я прозевал.


 
картман ©   (2012-07-30 19:05) [9]


> то есть чтобы при удалении строчки в комбо

а как ты удаляешь строчку?


 
Es   (2012-07-31 11:05) [10]

ну а какая разница...

В общем, решим проблему немного сбоку, ну да ладно, уже не важно )


 
картман ©   (2012-07-31 11:50) [11]


> ну а какая разница...

почему бы там же не удалять и объект?


 
Es   (2012-07-31 12:15) [12]

ну ты ж сам понимаешь - я не единственный разработчик, кто-то где-то может что-то забыть.



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.25 c
1-1304803929
Германн
2011-05-08 01:32
2013.03.22
Сортировка в TTreeView


15-1350915204
Дмитрий С
2012-10-22 18:13
2013.03.22
exe с номером билда


15-1333015766
Сергей М.
2012-03-29 14:09
2013.03.22
SMS и IMEI


15-1341317088
Eu
2012-07-03 16:04
2013.03.22
Настройки SVN


15-1333544592
Pit
2012-04-04 17:03
2013.03.22
Ищу, от 60к, Москва, ведущий программист / Team Lead, нач. отдела