Interface и Items.AddObject();
4 отговора
80 прегледа
Interface и Items.AddObject();
Искам да асоциирам интерфейс и айтъм от комбо бокс, това може ли да стане?
нещо като
-
(т'ва е само пример да покаже какво ми трябва, но не се компилира :)
просто тр да асоцирам айтъма с интерфейса по някакъв начин ...
-------------
Special killer double trouble triple extra nicotine monster!
нещо като
MyThing: IMyThing; // interface
...
MyThing := CoMyThing.Create;
Combo1.Items.AddObject(MyThing.ThingName, MyThing);
-
(т'ва е само пример да покаже какво ми трябва, но не се компилира :)
просто тр да асоцирам айтъма с интерфейса по някакъв начин ...
-------------
Special killer double trouble triple extra nicotine monster!
Re: Interface и Items.AddObject();
Ако IMyThing е само интерфейс, няма да стане. Обекта в AddObject трябва да е наследник на TObject. Направи клас, които наследява TObject и IMyThing. Опитай. Трябва да стане.
Re: Interface и Items.AddObject();
То така ще стане, но е в разрив в цялостната ми концепция да ползвам променлива от тип IMyThing (интерфейс) (дано не ми се наложи да я преусмисля:)
BREAKTHROUGH
ComboBox.Items.AddObject(MyThing.Name, @MyThing);
сега ще проверя :)
-------------
Special killer double trouble triple extra nicotine monster!
BREAKTHROUGH
ComboBox.Items.AddObject(MyThing.Name, @MyThing);
сега ще проверя :)
-------------
Special killer double trouble triple extra nicotine monster!
Редактирано от z_free на
Мдам
бачка, после си извличаш по следния начин:
-
Малко е завъртяно, ама няма как.
-------------
Special killer double trouble triple extra nicotine monster!
i: IThing;
begin
i := IThing(Pointer(cmb.Items.Objects[0])^);
end;
-
Малко е завъртяно, ама няма как.
-------------
Special killer double trouble triple extra nicotine monster!
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!
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 на