Главная страница
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.051 c
6-1089138129
SergP
2004-07-06 22:22
2004.09.12
UDP. Как отослать пакет на диапазон адресов?


14-1093074378
ArMellon
2004-08-21 11:46
2004.09.12
Запарился...,почему вопит "dd"-определение отсутствует?


4-1090617944
кактусбел
2004-07-24 01:25
2004.09.12
Сканирование памяти


1-1093374512
ShimON
2004-08-24 23:08
2004.09.12
Цифры во время выполнения


3-1092806801
fedor
2004-08-18 09:26
2004.09.12
Как грамотно обновить таблицу, запрос...