Форум: "Основная";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c