Vlad aka Freeman дата публикации 02-10-2002 19:41 КАТЕГОРИЯ | | БИБЛИОТЕКА.VCL.TFrame.Несколько фреймов одного типа на форме | ПРОДУКТ | | Delphi | ПЛАТФОРМА | | |
Проблема в следующем: если положить на одну форму два фрейма одного типа, то в
дизайне все нормально, а при создании формы во время выполнения может произойти
ошибка: Component named xxxx already exists. Причина - баг в коде загрузки
фрейма из DFM.
Чтобы такое не возникало, фреймы одного типа, размещенные на
форме, должны иметь имена, отличные от ТипФреймаНомер , например, TMyFrame1 или
TMyFrame5 . Дайте фреймам другие имена, и форма будет создаваться нормально.
Обсуждение аналогичной ситуации на Круглом столе:
Тема Базарной площади:
Описанный эффект возникает в случае, если один из нескольких экземпляров
фрейма на форме имеет имя, соответствующее его типу, при отбрасывании первой
"T". Например:
Frame1 : TFrame1; // причина проблемы
Frame2 : TFrame1;
Frame3 : TFrame1;
Но!
Во-первых, автоматический генератор кода в IDE (вероятно, зная об этой
особенности - D5 SP1) дает имена вида:
Frame11 : TFrame1;
Frame12 : TFrame1;
Frame13 : TFrame1;
...
Frame21 : TFrame2;
Во-вторых, кому в здравом уме придет в голову заменять стандартные имена
компонентов на свои, но тоже нумерованные? Бывают, конечно, случаи, когда номер
имеет некий смысл в прикладном контексте, но уж очень редко. При этом еще
нужно, чтобы это обстоятельство совпало с тем, что смысловая часть имени типа
фрейма равна таковой для экземпляра.
Вывод: имейте хорошую привычку сразу давать осмысленные имена
экземплярам компонентов, фреймов, форм, и вы никогда не нарветесь на подобные
подводные камни.
[TFrame] [Интерфейс. Компоненты и формы] [DFM] [Дизайнер форм]
Обсуждение материала [ 23-05-2008 00:17 ] 1 сообщение |