Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

TForm   Найти похожие ветки 

 
Alibaba ©   (2004-08-19 06:18) [0]

Привет.

Есть проект.
В нем три формы: frmA, frmB, frmC: TForm.
В каждой форме в разделе public описал переменную
ShiftLeft: integer;

Алгоритм работы с переменной одинаков для всех форм.

Поэтому, пишу процедуру:
procedure CalkShift(frm: TForm; "дополнительные параметры");
begin
frm.ShiftLeft:="вычисления";
end;

Хочу построить работу таким образом:
CalkShift(frmA,"дополнительные параметры A");
CalkShift(frmB,"дополнительные параметры B");
CalkShift(frmC,"дополнительные параметры C");

Компилятор мне говорит:
Undeclared identifier: "ShiftLeft"

Совершенно с ним согласен.
Класс TForm не имеет свойства ShiftLeft.

Как решить этот вопрос?

Описывать
TMyForm = class(TForm)
public
 ShiftLeft: integer;
end;

не хочется...


 
QuasiLamo ©   (2004-08-19 06:37) [1]

завести три переменные, смотреть какая форма вызывает, и действовать по обстановке а чем собсно не нравится описать переменную для класса? и необязательно ее в паблик пихать, можно просто после TMyForm = class(TForm) дописать shiftleft:integer;


 
Skyle ©   (2004-08-19 06:41) [2]

1. Сделай CalcShift функцией, возвращающей нужное значение. В этом случае возможно удасться избавиться от первого параметра.

2. Сделай базовый класс формы с этим свойством, остальные наследуй от неё.

3. Опиши и реализуй во всех формах какой-нибудь интерфейс и передавай его как параметр в процедуру вместо формы.


 
TUser ©   (2004-08-19 06:42) [3]

Все 3 формы отнаследовать от кого-то, кто наследуется от TForm


 
Alibaba ©   (2004-08-20 04:09) [4]

Пожалуй, вариант с тремя переменными самый простой...
Его и выберу.


 
Digitman ©   (2004-08-20 09:02) [5]


> Alibaba ©   (20.08.04 04:09) [4]
> Пожалуй, вариант с тремя переменными самый простой...
> Его и выберу.


TForm есть наследник TComponent

TComponent имеет публичное св-во Tag, куда можно записать произвольную инф-цию

так что городить огород с доп.переменными в самом простоми случае, наверно, нет резона, при том что св-во Tag прямо под рукой


 
Партизан   (2004-08-20 09:14) [6]

А нужны ли вообще тебе 3 переменные? Если алгоритм одинаков для всех 3-х форм и тебе не хочется пихать данные в Тag, опиши в одном из юнитов (напр. unit1) эту переменную, а потом в имплементэйшене других юнитов делай uses unit1. А если одна переменная не подходит - лучше всё-таки Tag.


 
Думкин ©   (2004-08-20 09:14) [7]

> [4] Alibaba ©   (20.08.04 04:09)
> Пожалуй, вариант с тремя переменными самый простой...
> Его и выберу.

Не так. Я бы таки остановился на
> [3] TUser ©   (19.08.04 06:42)

Ничто не мешает тебе потом вместо
TfMain = class(TForm)
сделать
TfMain = class(TGeneralForm)
где
TGeneralForm = class(TForm) c нужной доп функциональностью.



Страницы: 1 вся ветка

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.051 c
1-1092982410
bezpal
2004-08-20 10:13
2004.09.05
Как в Delphi проанализировать запущена ли определенная программа?


1-1092937720
dracula
2004-08-19 21:48
2004.09.05
ini файл - ?


14-1092340519
sk707
2004-08-12 23:55
2004.09.05
Что подарить человеку на день рождения у которого все есть...


6-1088500382
alexts
2004-06-29 13:13
2004.09.05
Заполнение HTML формы


14-1091689820
Rouse_
2004-08-05 11:10
2004.09.05
Пополнение мастеров :)