Главная страница
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.046 c
9-1131474378
WD
2005-11-08 21:26
2007.05.20
вычисление числа Пи с заданной точностью


15-1176796832
TUser
2007-04-17 12:00
2007.05.20
Кому тут нуотбук подешевке?


3-1173072424
Feds
2007-03-05 08:27
2007.05.20
Удаление пустых строк в аксессе


2-1177540151
Kostafey
2007-04-26 02:29
2007.05.20
Подскажите как очистить GroupBox от визуальных компонентов ?


1-1174900874
Lexander
2007-03-26 13:21
2007.05.20
RxRichEdit - объеденить несколько файлов