![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TForm [D6, Win2k]
Alibaba © (2004-08-19 06:18:00)Привет.
Есть проект.
В нем три формы: 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;
не хочется...
Партизан (2004-08-20 09:14:00) [1]А нужны ли вообще тебе 3 переменные? Если алгоритм одинаков для всех 3-х форм и тебе не хочется пихать данные в Тag, опиши в одном из юнитов (напр. unit1) эту переменную, а потом в имплементэйшене других юнитов делай uses unit1. А если одна переменная не подходит - лучше всё-таки Tag.
Думкин (2004-08-20 09:14:00) [2]> [4] Alibaba © (20.08.04 04:09)
> Пожалуй, вариант с тремя переменными самый простой...
> Его и выберу.
Не так. Я бы таки остановился на
> [3] TUser © (19.08.04 06:42)
Ничто не мешает тебе потом вместо
TfMain = class(TForm)
сделать
TfMain = class(TGeneralForm)
где
TGeneralForm = class(TForm) c нужной доп функциональностью.
Digitman (2004-08-20 09:02:00) [3]
> Alibaba © (20.08.04 04:09) [4]
> Пожалуй, вариант с тремя переменными самый простой...
> Его и выберу.
TForm есть наследник TComponent
TComponent имеет публичное св-во Tag, куда можно записать произвольную инф-цию
так что городить огород с доп.переменными в самом простоми случае, наверно, нет резона, при том что св-во Tag прямо под рукой
Alibaba (2004-08-20 04:09:00) [4]Пожалуй, вариант с тремя переменными самый простой...
Его и выберу.
TUser (2004-08-19 06:42:00) [5]Все 3 формы отнаследовать от кого-то, кто наследуется от TForm
Skyle (2004-08-19 06:41:00) [6]1. Сделай CalcShift функцией, возвращающей нужное значение. В этом случае возможно удасться избавиться от первого параметра.
2. Сделай базовый класс формы с этим свойством, остальные наследуй от неё.
3. Опиши и реализуй во всех формах какой-нибудь интерфейс и передавай его как параметр в процедуру вместо формы.
QuasiLamo (2004-08-19 06:37:00) [7]завести три переменные, смотреть какая форма вызывает, и действовать по обстановке а чем собсно не нравится описать переменную для класса? и необязательно ее в паблик пихать, можно просто после TMyForm = class(TForm) дописать shiftleft:integer;