Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.075 c
2-1337145645
Verner
2012-05-16 09:20
2013.03.22
Переопределение свойства класса-наследника


2-1328888801
Каныбек
2012-02-10 19:46
2013.03.22
Ссылка на web страницу


15-1352056098
Stant11
2012-11-04 23:08
2013.03.22
Глобальный хук на мышку и диспетчер задач в win7.


15-1351844355
>|<
2012-11-02 12:19
2013.03.22
Active Directory


15-1348839643
888888
2012-09-28 17:40
2013.03.22
Снять видео с экрана + звук.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский