Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.054 c