Interface и Items.AddObject();

4 отговора 80 прегледа
#1

Interface и Items.AddObject();

Искам да асоциирам интерфейс и айтъм от комбо бокс, това може ли да стане?

нещо като


MyThing: IMyThing; // interface
...
MyThing := CoMyThing.Create;
Combo1.Items.AddObject(MyThing.ThingName, MyThing);

-

(т'ва е само пример да покаже какво ми трябва, но не се компилира :)

просто тр да асоцирам айтъма с интерфейса по някакъв начин ...

-------------
Special killer double trouble triple extra nicotine monster!
Отговор
в отговор на z_free #2

Re: Interface и Items.AddObject();

Ако IMyThing е само интерфейс, няма да стане. Обекта в AddObject трябва да е наследник на TObject. Направи клас, които наследява TObject и IMyThing. Опитай. Трябва да стане.

Отговор
в отговор на vido #3

Re: Interface и Items.AddObject();

То така ще стане, но е в разрив в цялостната ми концепция да ползвам променлива от тип IMyThing (интерфейс) (дано не ми се наложи да я преусмисля:)

BREAKTHROUGH

ComboBox.Items.AddObject(MyThing.Name, @MyThing);

сега ще проверя :)

-------------
Special killer double trouble triple extra nicotine monster!

Редактирано от z_free на

Отговор
в отговор на z_free #4

Мдам

бачка, после си извличаш по следния начин:


i: IThing;
begin
i := IThing(Pointer(cmb.Items.Objects[0])^);
end;

-
Малко е завъртяно, ама няма как.

-------------
Special killer double trouble triple extra nicotine monster!
Отговор
в отговор на z_free #5

whoops! ето истината: :)

City: ICity;

cmbCity.Items.AddObject(City.Name, TObject(Pointer(City)));

и после:

if ICity(Pointer(cmbCity.Items.Objects[ i ])).ID = Value.City.ID then

Онова от предходните ми постове работи доста неправилно :)

-------------
Special killer double trouble triple extra nicotine monster!

Редактирано от z_free на

Отговор