Главная страница
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.031 c
1-1093340890
ЯЧСМ
2004-08-24 13:48
2004.09.12
DLL


4-1090904332
artem123
2004-07-27 08:58
2004.09.12
Нестандартный вид TreeView


6-1089282151
Ziko
2004-07-08 14:22
2004.09.12
WebBrowser, получение данных с сервера


6-1088671486
sergg
2004-07-01 12:44
2004.09.12
Определение прав доступа к файлу БД


1-1093871349
Erik1
2004-08-30 17:09
2004.09.12
Как изменить во время (Pause, Resume) TimeOut сервиса?