Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.053 c
11-1159881477
doozer
2006-10-03 17:17
2007.05.20
Как переконвертировать проект?


15-1177336492
Kerk
2007-04-23 17:54
2007.05.20
Б.Н.Ельцин


2-1178091339
Ламер 2.Х
2007-05-02 11:35
2007.05.20
Реестр XP


2-1178266462
SerMaxx
2007-05-04 12:14
2007.05.20
Как работать с графиками


9-1149087557
Igroman
2006-05-31 18:59
2007.05.20
Newton + PhysicsCar+OpenGL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский