![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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)
Это как понимать?