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

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

Возможны ли такой виз. компонент?


mmms ©   (2006-11-06 16:38:00) 

Есть необходимость в одном виз. компоненте, состоящем из двух TComboBox, четырех TButton. Цель - в одном TComboBox показывать года, в другом TComboBox - месяца, а кнопкам год минус/плюс, и месяц минус/плюс.

Из свойств - только от какого по какой год показывать.
Из обработчиков - никаких спец, можно на всякий случай OnChange.
Возвращаемое значение - диапазон TDateTime, с первого по посл. момент времени этого месяца.
Например d1=2006.01.01:00.00.00, d2=2006.01.31:23.59.59

Или для этого надо восп. только фреймами, и такие компоненты вовсе не пишутся? Хотелось бы компонент сделать, чтобы оперировать "как с одним" элементом.


Percent   (2006-11-06 21:56:00) [1]

правда в дизайнере не видно

Что это значит?
Кнопка, созданная так, как в [6], будет видна на этапе разработки.
Или имеется в виду, что она будет недоступна в Object Inspector'е?
Ну так дай к ней доступ, объявив как published свойство.


mmms   (2006-11-06 20:14:00) [2]

Возможен. А чем не нравится стандартный TDateTimePicker?
В некоторых случаях надо выбрать год и 1 месяц и все (бухг. отчеты и т.п.), а если делать 2 TDateTimePicker, то ещё выбрать надо начало месяца, конец месяца... ну в общем не совсем подходит, хотя раньше только на них и делалось.


mmms   (2006-11-06 20:07:00) [3]

Все, дошло, на этапе создания можно делать что хочешь, правда в дизайнере не видно, но это не так и важно :)
constructor TMmmsCustomPanel.Create (AOwner:TComponent);
begin
 inherited Create(AOwner);
 Width:=200;
 Height:=200;
 btn:= TButton.Create(Self);
 btn.Parent:=Self;
 btn.Top:=10;
 btn.Left:=10;
 btn.Caption:='MyBtn';
end;


Percent   (2006-11-06 19:53:00) [4]

А нельзя ли сделать наследника TPanel, и на ней в момент создания создавать TButton и другие элементы? Реализуемо ли это?

Можно. Реализуемо.

И еще, что на практике делается в таком случае, когда необходимо объединить элементы

Можно сделать ссылки из одних компонентов на другие. Но это накладнее, чем на базе общего компонента-контейнера.


mmms   (2006-11-06 18:44:00) [5]

Попробовал, Component Template, интересно, но не подходит, он весь код "таскает за собой" в каждую форму, что не подходит, если задачу чуть расширить, и кода получается не мало, то тяжело управлять всем этим растиражированным хозяйством...
А нельзя ли сделать наследника TPanel, и на ней в момент создания создавать TButton и другие элементы? Реализуемо ли это?

И еще, что на практике делается в таком случае, когда необходимо объединить элементы, и с сокрытием свойств и методов каждого по отдельности элемента, и созданием своих обработчиков?


mmms   (2006-11-06 18:13:00) [6]

Спасибо, понятно, покопаю информацию Component Template. :)


DimaBr   (2006-11-06 16:53:00) [7]


> Хотелось бы компонент сделать, чтобы оперировать "как с одним" элементом.


Это можно.
Можно организовать Component Template.


Percent   (2006-11-06 16:41:00) [8]

Возможен. А чем не нравится стандартный TDateTimePicker?


Наверх

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