Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.07.12;
Скачать: CL | DM;

Вниз

Combobox и MonthCalendar   Найти похожие ветки 

 
Sw   (2009-05-22 07:37) [0]

Создаю программно несколько combobox, в одном из combobox"сов необходимо выбирать дату, но в моем случае неудобно использовать TDateTimePicker.  Делаю так:

procedure TForm1.FormCreate(Sender: TObject);
begin
 MonthCalendar1.Visible:=false;
 ComboBox1.Items.Add(DateToStr(Date));
 ComboBox1.ItemIndex:=0;
end;

procedure TForm1.ComboBox1DropDown(Sender: TObject);
begin
 MonthCalendar1.Visible:=true;
end;

procedure TForm1.MonthCalendar1Click(Sender: TObject);
begin
 ComboBox1.Clear;
 ComboBox1.Items.add(datetostr(MonthCalendar1.date));
 ComboBox1.ItemIndex:=0;
 MonthCalendar1.Visible:=false;
end;


Проблема в том, что при нажатии на кнопку выбора в Combobox"се открывается список, т.е. одна строчка списка с текущей датой. Мне нужно, чтобы эта строчка не появлялась, а фокус был на календаре.

И еще один ньюанс: в TDateTimePicker реализовано так, что если кликнули по форме - календарь закрылся, допустим...
procedure TForm1.FormClick(Sender: TObject);
begin
 MonthCalendar1.Visible:=false;
end;

вот только у меня куча панелей, выходит им всем на Click этот код прописывать?
Помогите, пожалуйста.


 
И. Павел   (2009-05-22 08:14) [1]


> вот только у меня куча панелей, выходит им всем на Click
> этот код прописывать


Можно отлавливать не события а сообщения Windows (через TApplicationEvents), например.


 
{RASkov} ©   (2009-05-22 08:39) [2]

> [0] Sw   (22.05.09 07:37)
> в моем случае неудобно использовать TDateTimePicker

Можно поинтересоваться - чем?


 
Sw   (2009-05-22 08:57) [3]

> [2]
при ComboboxCloseUp создаю label"ы и combobox"ы в цикле
при повторном ComboboxCloseUp уничтожаю и создаю заново....ну свои заморочки...каждый раз разное кол-во и могут быть разные св-ва и обработчики события.....вот.....и все красиво...для соmbobox....просто добавлять другой компонент неохота.....вот все combobox получаются как люди...а энтот ...не такой :(  ну и думаю...пусть будет combobox и привязать к нему календарь


 
Sw   (2009-05-22 09:02) [4]

> [1] Спасибо,  помогли новичку :( Если не затруднит приведите код, пожалуйста.


 
{RASkov} ©   (2009-05-22 09:04) [5]

> [3] Sw   (22.05.09 08:57)
> при ComboboxCloseUp создаю label"ы и combobox"ы в цикле
> при повторном ComboboxCloseUp уничтожаю и создаю заново....

Это все понятно, но чем Пикер-то не подошел?


 
{RASkov} ©   (2009-05-22 09:09) [6]

> [4] Sw   (22.05.09 09:02)
> Если не затруднит приведите код, пожалуйста.

помоему ты сошел с правильной дороги и "неправильный" код не особо хочется давать :)


 
Sw   (2009-05-22 09:09) [7]

походит, он полностью устраивает... код длинее из-за него получается


 
И. Павел   (2009-05-22 09:22) [8]

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
 var Handled: Boolean);
begin
 if Msg.Message=WM_LButtonDown then
 Begin
   if DateTimePicker1<>nil then
     DateTimePicker1.Visible:=false;
 end;
end;


Если список не нужен, может проще заменить его на Edit с кнопкой.


 
{RASkov} ©   (2009-05-22 09:31) [9]

> [8] И. Павел   (22.05.09 09:22)
> if DateTimePicker1<>nil then
>     DateTimePicker1.Visible:=false;

там наверное должно быть MonthCalendar1...
Но...попробуй теперь например сменить дату(месяц) в MonthCalendar1 :)
можно и это победить, но...

> полностью устраивает... код длинее из-за него получается

т.е. не нужно много кода автору :)


 
И. Павел   (2009-05-22 09:47) [10]


> попробуй теперь например сменить дату(месяц) в MonthCalendar1


Забыл добавить: and (Msg.hwnd<>MonthCalendar1.Handle)


Хотя, по моему тоже, такие сложности только для укорачивания кода ни к чему.


 
Sw   (2009-05-22 10:24) [11]

Спасибо большое. Мне очень нужно мнение специалистов, т.к. действительно не знаю правильной дорогой иду или сбиваюсь. Лучше буду создавать DateTimePicker.


 
feel ©   (2009-05-22 19:39) [12]

Я для дат использую компонент из библиотеки EhLib, помоему очень удобно и если я правильно понял это то что тебе надо.


 
Smile   (2009-05-22 19:52) [13]

Сатарался внимателно прочитать ветку. Но так и не понял для чего нужен ComboBox с единственной строкой (Item) Date из Now?



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

Текущий архив: 2009.07.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
15-1241988585
Petr V. Abramov
2009-05-11 00:49
2009.07.12
Лето неотвратимо, как оздоровление мировой экономики :)


15-1242105705
vajo
2009-05-12 09:21
2009.07.12
Антенна "Логос-91"


2-1242992535
LSDxLove
2009-05-22 15:42
2009.07.12
программа чтения характеристик и просмотра графических bmp файлов


15-1242078495
ford
2009-05-12 01:48
2009.07.12
FastMM непонятно прав он или нет


15-1242218440
Медвежонок Пятачок
2009-05-13 16:40
2009.07.12
забороть HTTP протокол