Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.028 c
1-1092818353
YurikGL
2004-08-18 12:39
2004.09.05
Передать TTReeNode


1-1092955213
RaPToR_1
2004-08-20 02:40
2004.09.05
обновления экрана


14-1092632626
Мюмзик в мове
2004-08-16 09:03
2004.09.05
Опять эти комары


14-1092902502
Rem
2004-08-19 12:01
2004.09.05
Кто что думает по поводу...


1-1092940959
NeVIP
2004-08-19 22:42
2004.09.05
Бешеный StringGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский