Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2011.03.06;
Скачать: [xml.tar.bz2];

Вниз

Компонент наподобии TPanel со встроенными контролами   Найти похожие ветки 

 
bss   (2010-11-26 21:16) [0]

Есть задачи, когда нужно вводить одинаковый тип данных на разных визуальных формах. Применяли такой финт ушами - этот набор данных проектировался на некоей форме, в TPanel.
Далее для использования создавался скрытый экземпляр формы, соответственно на нем создавалась панелька, этой панельки переприсваивали Parent"а и она панельку можно было встроить в другие любые формы. Простота разработки, но большая неочевидность в design-time.

Хочется повторить что-то подобное, но по грамотному в виде компонента. Выглядеть планируется как TPanel (может быть наследник от TPanel) с созданными на нем другими контролами. Как лучше осуществить сие?

Делать прямого наследника от TWinControl, а на нем уже размещать панельку с Align=alClient или делать наследника TPanel?

В зависимости от настроек компонента в нем будет размещено то или иное количество других компонент (в основном набор TRzEdit). Хочется, чтобы ручками в design-time"e программист не смог дотянуться до этих "наложенных" контролов. Чтобы они визуально были видны для оценки, но щелчок по ним приводил к выделению самого основного компонента, то есть они шли фоном как картинка.

Вот картинка: http://img-fotki.yandex.ru/get/4603/fotki254746.0/0_42268_e0d20876_L.jpg

Все, что обведено красным - это и есть компонент, так он выглядит. Но чтобы нельзя было выделить на нем Edit"ы и добраться до их свойств, хотя реально это созданные экземпляры компонент TRzEdit...

Если непонятно объяснил - спрашивайте.


 
antonn ©   (2010-11-26 21:25) [1]

а фреймы не подойдут?


 
bss   (2010-11-26 23:17) [2]

в зависимости от настроек компонента я бы выводил на нем то или иное количество эдиторов.

Например, представим себе компонент редактирования контактов. Если там свойства "ShowPhone" и "ShowFax" установлены в true, то я вывожу визуалку, позволяющую редактировать телефон и факс. Если в false - то не вывожу. А с фреймами непонятно как это сделать. Статично очень.


 
clickmaker ©   (2010-11-26 23:21) [3]

> А с фреймами непонятно как это сделать. Статично очень

открою страшную тайну: компоненты можно создавать не только перетаскивая их мышкой на форму.
можно еще и так
if ShowPhone then begin
 PhoneEdit := TEdit.Create();
 ...


 
Virgo_Style ©   (2010-11-27 10:45) [4]

А я бы, наверное, использовал Visible или даже Enabled.

Если сегодня поле ввода телефона находится вверху слева, а завтра - внизу справа (из-за появившихся новых полей), лично меня бы это очень расстроило.


 
vuk ©   (2010-11-27 11:39) [5]

to bss   (26.11.10 23:17) [2]:

>  А с фреймами непонятно как это сделать.

Как ни странно - точно так же как с любыми компонентами.


> Статично очень.

Ого! А мужики-то не знают! :))

P.S. В результате долгой и напряженной работы мысли изобретен велосипед. :)


 
_Юрий   (2010-11-27 12:53) [6]


> Хочется, чтобы ручками в design-time"e программист не смог
> дотянуться до этих "наложенных" контролов. Чтобы они визуально
> были видны для оценки, но щелчок по ним приводил к выделению
> самого основного компонента, то есть они шли фоном как картинка.
>


А по умолчанию так и будет, чтобы вложенные динамически созданные контролы начали вести себя как самостоятельные элементы дизайна, надо приложить определенные усилия


 
bss   (2010-11-27 14:57) [7]


> можно еще и так
> if ShowPhone then begin
>  PhoneEdit := TEdit.Create();


> Как ни странно - точно так же как с любыми компонентами.


но где динамически создавать? Я заоверайдил конструктор у фрейма - не помогло. События специфичного не нашел.


> А по умолчанию так и будет, чтобы вложенные динамически
> созданные контролы начали вести себя как самостоятельные
> элементы дизайна, надо приложить определенные усилия

ясно, спасибо!


 
vuk ©   (2010-11-27 16:25) [8]

to bss   (27.11.10 14:57) [7]:

> Я заоверайдил конструктор у фрейма - не помогло.

Странно, мне помогает. Что-то делаю не так?


 
bss   (2010-11-28 15:08) [9]

Я говорю про design-time


 
Дмитрий С ©   (2010-11-28 17:06) [10]

если уж на то пошло, что мешает того же потомка tpanel сделать?


 
bss   (2010-11-28 20:14) [11]

У фрейма в Design-time не вызывается конструктор, плюс к этому непонятно как добавить published property у фрейма (чтобы оно появилось в object inspector).


 
vuk ©   (2010-11-28 21:27) [12]

Добавьте фрейм в дизайнтайм пакет и установите его в палитру как компонент.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2011.03.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.003 c
2-1292090673
Анонимус
2010-12-11 21:04
2011.03.06
Вопрос про сплиттер, Delphi 7


3-1254417573
Дмитрий
2009-10-01 21:19
2011.03.06
Firebird-клиент 2.1 и Windows vista


15-1290872112
Unknown_user
2010-11-27 18:35
2011.03.06
DCC32 и Turbo pascal


15-1290866571
VLK32
2010-11-27 17:02
2011.03.06
Очередной велосипед


2-1292161193
Ux
2010-12-12 16:39
2011.03.06
Запрет запуска





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