Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.044 c
6-1089095767
andrey__
2004-07-06 10:36
2004.09.12
RasApi - запуск удал. подключ. из TServiceApplication


1-1093934301
drmagic
2004-08-31 10:38
2004.09.12
TMemo и запрет клавиш управления курсором


1-1093364754
Фёдор Мегатронов
2004-08-24 20:25
2004.09.12
Чисто теоретический вопрос на счёт Тредов


3-1092839711
Uran
2004-08-18 18:35
2004.09.12
Проблеммы с кодировкой в файле DB


1-1093935824
jenbond
2004-08-31 11:03
2004.09.12
необязательные параметры функции