Текущий архив: 2004.09.12;
Скачать: CL | DM;
Вниз
Можно ли передавать класс? Найти похожие ветки
← →
AndrewK (2004-08-24 16:37) [0]Доброго времени суток, господа!
Можно ли хранить в экземпляре класса указатель на другой класс, напримерtControlItem = class
Caption : String;
Editor : CLASS;
end;
Потом в программе сделать примерно следующее:procedure Proc(aControlItem : tControlItem);
var Edtr : class;
begin
Edtr := aControlItem.Editor.Create;
Edtr....
end;
Хм. Надеюсь правильно выразился...
← →
Суслик © (2004-08-24 16:40) [1]можно...
вроде все верно...
← →
Карелин Артем © (2004-08-24 16:43) [2]Форма это класс? Класс!
А бутон на форме класс? Класс!
А бутон хранится в форме? Да!
Так что смело делай это, но не забывай уничтожать потом ненужные экзкмпляры...
← →
Ega23 © (2004-08-24 16:43) [3]Хранить можно. Запросто. Только убить не забудь.
Что касается этого:
procedure Proc(aControlItem : tControlItem);
var Edtr : class;
begin
Edtr := aControlItem.Editor.Create;
Edtr....
end;
то правильно
procedure Proc(aControlItem : tControlItem);
begin
aControlItem.Editor:=CLASS.Create;
aControlItem.Editor....
end;
← →
Суслик © (2004-08-24 16:48) [4]
> Ega23 © (24.08.04 16:43) [3]
ты эттта, не просек чего он хочет.
на сам деле правильно так (один из вариантов)
TEditor = class
...
end;
TEditorClass = class of TEditor;
TEditor1 = class
end;
tControlItem = class
Caption : String;
Editor : TEditorClass;
end;
procedure Proc(aControlItem : tControlItem);
var Edtr : TEditor;
begin
aControlItem.Editor := TEditor1;
...
Edtr := aControlItem.Editor.Create;
Edtr....
end;
← →
Ega23 © (2004-08-24 16:50) [5]Суслик © (24.08.04 16:48) [4]
А, ну если так, то да.
← →
Юрий Зотов © (2004-08-24 16:53) [6]> Карелин Артем © (24.08.04 16:43) [2]
> А бутон на форме класс? Класс!
Нет. Бутон не форме - это экземпляр класса.
← →
Суслик © (2004-08-24 16:54) [7]автору.
еще подумай про то, что может стоит объявить конструктор виртуальным.
← →
AndrewK (2004-08-24 17:00) [8]Вот это компилиться не хочет:
tControlItem = class
Caption : String;
Editor : CLASS;
end;
В качестве класса передаются разные классы, например:
var ControlElement : tControlItem;
...
ControlElement.Caption := "Первый редактор";
ControlElement.Editor := TForm;
Proc(ControlElement);
ControlElement.Caption := "Второй редактор";
ControlElement.Editor := TMyForm;
Proc(ControlElement);
← →
Ega23 © (2004-08-24 17:05) [9]А не легче ли
type
TControlItem=class
.....
end;
TMyForm=class(TControlItem)
....
end;
......
?
← →
jack128 © (2004-08-24 17:20) [10]
> tControlItem = class
> Caption : String;
> Editor : CLASS;
> end;
Нужно TClass использовать.. И читать про классовые ссылки (class references)
← →
Суслик © (2004-08-24 17:21) [11]
> И читать про классовые ссылки (class references)
и читать ответы участников форума :))))
внимательно читать замечу
← →
Rem (2004-08-24 18:36) [12]Зачем:
Proc(ControlElement);
Если нужно:ControlElement.Proc;
Страницы: 1 вся ветка
Текущий архив: 2004.09.12;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.043 c