![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Что-то совсем запутался
![]() Win7 x64, Delphi 3 Идея - передавать в ListBox вместе со строкой ссылку на IXMLNode, дабы затем можно было посмотрить из чего оно состоит. Добавляю так: Код:
ListBox2.Items.AddObject(LNode.NodeName,TObject(LNode)); Получаю, соответственно так: Код:
LNode:=IXMLNode(ListBox2.Items.Objects[ListBox2.ItemIndex]); Компилятор ругается на несоответствие типов IXMLNode и TObject, притом, если делаю так: Код:
var LNode: IXMLNode;
i : integer;
begin
i := integer(ListBox2.Items.Objects[ListBox2.ItemIndex]);
LNode:=IXMLNode(i);
end;![]() |
|
#2
|
||||
|
||||
|
коротко говоря интерфейс и объект не одно и тоже.
|
|
#3
|
|||
|
|||
|
Вопрос только в том, как его туда можно засунуть )
Под Дельфи 7, для создаваемого мною же класса все работало. |
|
#4
|
||||
|
||||
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TMyObject = class(TObject)
i: Integer;
constructor Create(i: Integer);
end;
TForm1 = class(TForm)
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TMyObject }
constructor TMyObject.Create(i: Integer);
begin
Self.i:=i;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Items.AddObject('1', TMyObject.Create(1));
ListBox1.Items.AddObject('22', TMyObject.Create(22));
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
ShowMessage(IntToStr(TMyObject(ListBox1.Items.Objects[ListBox1.ItemIndex]).i));
end;
end. |
|
#5
|
|||
|
|||
|
Ну да, спасибо, все получилось
![]() Я бы наверное неделю парился, пока додумался бы создать дополнительный класс с переменной i: IXMLNode внутри ![]() Еще один вопрос напросился, в описании интерфейсов так и не сообразил, запутали они меня своими счетчиками, нужно ли по окончании программы удалять все эти дополнительные классы, т.е. вызывать для них метод destroy? Последний раз редактировалось M.A.D.M.A.N., 20.05.2014 в 14:27. |
|
#6
|
||||
|
||||
|
Разумеется.
|