![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Глюк с фрэймами
DesWind © (2004-09-03 15:30:00)Создал новый фрэйм, как положено из пункта меню:
TStdFrame=class(TFrame);
потом в другом модуле написал это
TMyCommonFrame=calss(TFrame)
public
procedure CommonProc;virtual;abstract;
end;
И переправил объявление
TStdFrame=class(TFrame);
на
TStdFrame=class(TCommonFrame);
сохранил проект, закрыл, открыл.
В итоге Фрэйм превратился в форму.
Отчего и как с этим боротся
jack128 (2004-09-03 19:49:00) [1]Семен Сорокин © (03.09.04 16:29) [9]
в случае с невизуальным наследником не прокатит, проверял, он тогда ищет и не находит файл ресурсов
В случае с невизуальным - RegisterCustomModule - вроде в Компонентах подобный вопрос подымался - поищи..
Romkin (2004-09-03 16:45:00) [2]Млин, ну что вы маетесь?
>И переправил объявление
>TStdFrame=class(TFrame);
>на
>TStdFrame=class(TCommonFrame);
НУ так теперь View as Text и переправь слово object на inherited в dfm :))
Семен Сорокин (2004-09-03 16:29:00) [3]icWasya © (03.09.04 16:23) [8]
в случае с невизуальным наследником не прокатит, проверял, он тогда ищет и не находит файл ресурсов, для сабжа это выход.
icWasya (2004-09-03 16:23:00) [4]Если всё таки хотите вручную, то после
>И переправил объявление
>TStdFrame=class(TFrame);
>на
>TStdFrame=class(TCommonFrame);
открыть StdFrame как текст и исправить
object StdFrame: TStdFrame
на
inherited StdFrame: TStdFrame
Семен Сорокин (2004-09-03 16:10:00) [5]DesWind © (03.09.04 15:54) [4]
Хмм действительно, только что проверил, нормально проходит, но вот незадача у меня TCommonFrame - невизуальный...
Поэтому добавить в репозиторий не получится.
DesWind (2004-09-03 16:04:00) [6]jack128 © (03.09.04 15:59) [5]
>но см другие ответы
Ага, просто я страничку забыл обновить
>Репозиторий, в принципе, для часто используемых форм и фреймов используется, а не для единичного наследования..
Ну у меня этот фрэйм еще, не в
одном проекте будет исспользоватся
jack128 (2004-09-03 15:59:00) [7]DesWind © (03.09.04 15:54) [4]
Пока ходил курил пришло в голову решение
Правельную траву куришь ;-) но см другие ответы - в них тоже умные мысли есть ;-)
Репозиторий, в принципе, для часто используемых форм и фреймов используется, а не для единичного наследования..
DesWind (2004-09-03 15:54:00) [8]Пока ходил курил пришло в голову решение как мне кажется правильное добавить этот фрэйм в репозиторий, а потом при создании поставить галочку "Наследовать"
jack128 (2004-09-03 15:47:00) [9]использовать стандартный механизм для визуального наследования - File|New.. выбираешь закладку <имя твоего проэкта> и выбираешь фрейм от которого хочешь наслдоваться.. Или вручную изменяй dfm файл.
Семен Сорокин (2004-09-03 15:44:00) [10][1] +
3.5 меняю вручную class(TFrame) на class(TCommonFrame)
Семен Сорокин (2004-09-03 15:42:00) [11]
> DesWind © (03.09.04 15:30)
> В итоге Фрэйм превратился в форму.
> Отчего и как с этим боротся
Я сталкивался с этим, правда не нашел "правильного" пути решения, сейчас борюсь так:
1. открываю юнит с фреймом, он орет на ненайденные св-ва.
2. меняю вручную class(TCommonFrame) на class(TFrame)
3. Правой кнопкой по форме/фрейму выбираю View As Text и сразу View As Form, опять орет на св-ва, но показывает как фрейм
4. Меняю необходимую функциональность
5. Закрываю юнит, чтобы при следующем открытиии не орала