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

Вниз

DBEdit и DateTimePicker   Найти похожие ветки 

 
тормоз   (2007-05-03 10:12) [0]

С помощью процедуры пытаюсь открыть нужный 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..."

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


 
stakan ©   (2007-05-03 10:14) [1]


> TDateTimePicker(TDBEdit(Sender).Hint)


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


 
Ega23 ©   (2007-05-03 10:17) [2]

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


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


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

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


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


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


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


 
clickmaker ©   (2007-05-03 13:02) [5]


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

а почему Hint?


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

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

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

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

>а почему Hint?  

можно и "tag"


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


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

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


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

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

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

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


 
{RASkov} ©   (2007-05-03 14:18) [9]

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

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


 
Virgo_Style ©   (2007-05-03 14:20) [10]

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

TDateTimePicker(1) - это НЕ DateTimePicker1


 
{RASkov} ©   (2007-05-03 14:22) [11]

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

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


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


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


а что?


 
{RASkov} ©   (2007-05-03 14:25) [13]

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

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


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

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

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


 
clickmaker ©   (2007-05-03 14:31) [15]


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

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


 
{RASkov} ©   (2007-05-03 14:46) [16]

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

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


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

При двойном нажатии на 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:59) [18]

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

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


 
stakan ©   (2007-05-03 15:04) [19]

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;


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

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



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

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

Наверх




Память: 0.51 MB
Время: 0.043 c
2-1173078223
MZ
2007-03-05 10:03
2007.05.20
dbGridEh и CheckBox


15-1176804812
Kolan
2007-04-17 14:13
2007.05.20
А что это с rsdn &amp;#151; негрузится че-то&amp;#133


15-1177340432
oldman
2007-04-23 19:00
2007.05.20
По мотивам веток про Гитлера и про Ельцина...


2-1177855425
dmdel
2007-04-29 18:03
2007.05.20
RichEdit


2-1177756124
Ega23
2007-04-28 14:28
2007.05.20
Перехват события у TMyFrame