Главная страница
    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.046 c
14-1092895082
Пубертанец
2004-08-19 09:58
2004.09.05
Как сконвертировать *.rm в *mp3?


14-1092697349
Leaner
2004-08-17 03:02
2004.09.05
А есть в Питере компьютерные клубы, где собираються Delphi-сты ?


3-1091984810
Shade
2004-08-08 21:06
2004.09.05
Распечатка в строку в FastReports.


14-1092750536
peypivo
2004-08-17 17:48
2004.09.05
Кондиционер


14-1092692890
Profi
2004-08-17 01:48
2004.09.05
Player





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский