Непонятности с TFrame
От: curious  
Дата: 30.07.02 08:14
Оценка:
Столкнулся с непонятными глюками компонента TFrame. Размещаю один фрейм (Frame3) на другом (Frame1) и кладу это всё на форму. На верхнем фрейме (Frame2) я размести TActionList, определив у TAction свойство Shortcut; но Shortcut не работает. Если у Frame3 поменять значение любого свойства или добавить обработку какого-нибудь события (можно даже просто опертор ';'), то всё работает нормально. При этом в dfm-файл (формы) добавлются строки:
inherited Frame31: TFrame3
Enabled = False //Если, например, было изменено св-во Enable
OnClick = Frame21Frame31Click //Если обрабатывается событие OnClick
Ещё более непонятные вещи происходят, если цепочку вложености фреймов увеличть до 3-х,
разместив на каждом TActionList и определив у TAction Shortcut.
Интересно, почему так происходит?..
Re: Непонятности с TFrame
От: vladsm Россия  
Дата: 30.07.02 13:36
Оценка:
Здравствуйте curious, Вы писали:

C>Столкнулся с непонятными глюками компонента TFrame. Размещаю один фрейм (Frame3) на другом (Frame1) и кладу это всё на форму. На верхнем фрейме (Frame2) я размести TActionList, определив у TAction свойство Shortcut; но Shortcut не работает. Если у Frame3 поменять значение любого свойства или добавить обработку какого-нибудь события (можно даже просто опертор ';'), то всё работает нормально.


Когда-то тоже слышал про такую беду с вложенными фреймами. :crash: Не понятный глюк. Что скажут гуру VCL-я?
Re: Непонятности с TFrame
От: Vogus  
Дата: 31.07.02 07:15
Оценка:
Здравствуйте curious, Вы писали:

> inherited Frame31: TFrame3


Такой глюк появляется только когда Фрейм создаешь inherited, а при простом добавлении Фрейма на Фрейм такого глюка нет! Вывод этот из собственных экспериментов и на сто процентов утверждать данный факт не буду.
Да, глюк этот убивался прописыванием dfm, каких-то строк (типо Width = 500). Скорей всего это провациравало завернуть ветку VCL-алгоритма еще куда-то, как заставить это делать при описании Фрейма мозгов и времени не хватило!
Re[2]: Непонятности с TFrame
От: Sinclair Россия https://github.com/evilguest/
Дата: 02.08.02 15:23
Оценка:
Здравствуйте vladsm, Вы писали:

V>Здравствуйте curious, Вы писали:


C>>Столкнулся с непонятными глюками компонента TFrame. Размещаю один фрейм (Frame3) на другом (Frame1) и кладу это всё на форму. На верхнем фрейме (Frame2) я размести TActionList, определив у TAction свойство Shortcut; но Shortcut не работает. Если у Frame3 поменять значение любого свойства или добавить обработку какого-нибудь события (можно даже просто опертор ';'), то всё работает нормально.


V>Когда-то тоже слышал про такую беду с вложенными фреймами. Не понятный глюк. Что скажут гуру VCL-я?

Однозначно проблема с inherited.
Дельфяк очень криво работает с наследованием фреймов. Проблема в том, что достаточно трудно понять, что имелл в виду разработчик. Особенно это касается связанных свойств, то есть таких, например, как alignment, anchors, width, height. Дело в том, что при вставке фрейма в форму храняться только значения тех пропертей, которые в нем отличаются от унаследованных. В результате правило большого паьца таково: опасайтесь редактировать фрейм после того, как он куда-либо вставлен. Надо убедиться, что его свойства(и свойства его компонентов) приняли нужные значения. Если что-то выглядит не так, то надо сразу лезть в текстовое представление dfm и править все руками. Object Inspector — слабый помощник, т.к. он не показывает, откуда взяты значения свойств — унаследованы, или перегружены локально.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.