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

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

DBEdit и DateTimePicker


тормоз ©   (2007-05-03 10:12:00) 

С помощью процедуры пытаюсь открыть нужный DateTimePicker:

procedure TForm8.DoubleEditClick(Sender: TObject);
Begin
 if (Sender <> nil) and (Sender is TDBEdit) then
  TDateTimePicker(TDBEdit(Sender).Hint).Perform(WM_KEYDOWN, VK_F4, 0);{в hint номер DateTimePicker}
End;


но появляется ошибка: "Access violation..."

Подскажите, пожалуйста, где ошибка.


тормоз   (2007-05-03 15:12:00) [1]

stakan, Большое спасибо


stakan   (2007-05-03 15:04:00) [2]

procedure TForm8.DoubleEditClick(Sender: TObject);
begin
 if (Sender <> nil) and (Sender is TDBEdit) then
   TDateTimePicker(FindComponent('DateTimePicker' + TDBEdit(Sender).Hint)).Perform(WM_KEYDOWN, VK_F4, 0);
end;


{RASkov}   (2007-05-03 14:59:00) [3]

> [17] тормоз   (03.05.07 14:52)

Это что.... олицетворение НИКА...... посмотри [11] и последнее предложение, подкорректируй и замени у себя
вот это
TDateTimePicker(TDBEdit(Sender).Hint).Perform(WM_KEYDOWN, VK_F4, 0);
Предворительно из того-же [11] посмотри как засовывать DateTimePicker'ы в DBEdit'ы......


тормоз   (2007-05-03 14:52:00) [4]

При двойном нажатии на DBEdit1 мне надо открыть DateTimePicker1:

procedure TForm1.DBEdit1DblClick(Sender: TObject);
begin
 DateTimePicker1.Perform(WM_KEYDOWN, VK_F4, 0);
end;


При двойном нажатии на DBEdit2 мне надо открыть DateTimePicker2:

procedure TForm1.DBEdit2DblClick(Sender: TObject);
begin
 DateTimePicker2.Perform(WM_KEYDOWN, VK_F4, 0);
end;


и так ТРИДЦАТЬ РАЗ

поэтому
DBEdit1.Hint:='1';
DBEdit2.Hint:='2';
...
DBEdit30.Hint:='30';


этой процедурой:

procedure TForm8.DoubleEditClick(Sender: TObject);
Begin
if (Sender <> nil) and (Sender is TDBEdit) then
 TDateTimePicker(TDBEdit(Sender).Hint).Perform(WM_KEYDOWN, VK_F4, 0);
End;

попытался сделать одну универсальную вместо 30.

Но как написал Virgo_Style ©   (03.05.07 14:20) [10]

>TDateTimePicker(1) - это НЕ DateTimePicker1

Весь вопрос в том, как получить DateTimePicker1, а не TDateTimePicker(1)


{RASkov}   (2007-05-03 14:46:00) [5]

> [14] тормоз   (03.05.07 14:29)

Проехали.... суй в hint, если не хочешь прислушиваться/понять советы...


clickmaker   (2007-05-03 14:31:00) [6]


>  [14] тормоз   (03.05.07 14:29)

ты издеваешься, что-ли?


тормоз   (2007-05-03 14:29:00) [7]

> {RASkov} ©   (03.05.07 14:22) [11]

DBEdit.Tag:=DateTimePicker; - а это зачем???


{RASkov}   (2007-05-03 14:25:00) [8]

> [12] тормоз   (03.05.07 14:23)
> а что?

Это - 1 :) и вследствии AV. Да-а.


тормоз   (2007-05-03 14:23:00) [9]


> TDateTimePicker(1) - это НЕ DateTimePicker1


а что?


{RASkov}   (2007-05-03 14:22:00) [10]

> [8] тормоз   (03.05.07 14:18)

DBEdit.Tag:=DateTimePicker;
...........
if TObject(Sender.Tag) is TDateTimePicker then TDateTimePicker(Sender.Tag).Time:=.....


Virgo_Style   (2007-05-03 14:20:00) [11]

тормоз   (03.05.07 14:18) [8]

TDateTimePicker(1)- это НЕ DateTimePicker1


{RASkov}   (2007-05-03 14:18:00) [12]

> [6] тормоз   (03.05.07 14:04)
> можнои "tag"

Тогда нужно...
Покажи как ты в Hint засовываешь DateTimePicker.


тормоз   (2007-05-03 14:18:00) [13]

>так если это только номер, то почему собственно TDateTimePicker(TDBEdit(Sender).Hint)?

TDateTimePicker([TDBEdit(Sender).Tag])  {номер будет в tag}

но проблема, то не решиться


clickmaker   (2007-05-03 14:08:00) [14]


> Номер DateTimePicker-a находится в Hint

так если это только номер, то почему собственно TDateTimePicker(TDBEdit(Sender).Hint)?


тормоз   (2007-05-03 14:04:00) [15]

Ega23 ©   (03.05.07 13:00) [4]
>Зависит от того, что ты хочешь получить.

На форме расположено много DBEdit-ов. Для каждого есть свой DateTimePicker, которые раскрываются (должны) при двойном нажатии на DBEdit (с помощью процедуры "DoubleEditClick"). Номер DateTimePicker-a находится в Hint.

Т.е. чтобы не писать лишних процедур, хочу воспользоваться одной универсальной.

>а почему Hint?  

можно и "tag"


clickmaker   (2007-05-03 13:02:00) [16]


> [3] тормоз   (03.05.07 12:16)
> ... и как ее можно исправить?

а почему Hint?


Ega23   (2007-05-03 13:00:00) [17]


> ... и как ее можно исправить?


Зависит от того, что ты хочешь получить.


тормоз   (2007-05-03 12:16:00) [18]

... и как ее можно исправить?


Ega23   (2007-05-03 10:17:00) [19]

>
> Подскажите, пожалуйста, где ошибка.


Здесь:
TDateTimePicker(TDBEdit(Sender).Hint).


stakan   (2007-05-03 10:14:00) [20]


> TDateTimePicker(TDBEdit(Sender).Hint)


Это как понимать?


Наверх

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