Главная страница
    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.066 c
8-1226815309
CodeMaster
2008-11-16 09:01
2013.03.22
Fade


8-1226478640
kalexi
2008-11-12 11:30
2013.03.22
Изменить размер изображения на низком уровне и без сглаживания


15-1349728205
Юрий
2012-10-09 00:30
2013.03.22
С днем рождения ! 9 октября 2012 вторник


2-1329837414
Чайник
2012-02-21 19:16
2013.03.22
Управление z-order окон


2-1342077313
AAsdr
2012-07-12 11:15
2013.03.22
MOuseMove и ширина понели на StatusBar





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский