Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Глюк с фрэймами


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. Закрываю юнит, чтобы при следующем открытиии не орала


Наверх

Титульная страница Поиск, карта сайта Написать письмо