Главная страница
    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.48 MB
Время: 0.046 c
6-1163697453
Yegorchic
2006-11-16 20:17
2007.05.20
IdHTTPServer и картинка


1-1174906870
tytus
2007-03-26 15:01
2007.05.20
Как нормально заставить работать CM_MOUSELEAVE


2-1177593211
ppcumax
2007-04-26 17:13
2007.05.20
IP адрес


15-1177077151
Real
2007-04-20 17:52
2007.05.20
Глюк формума


2-1177444555
tigraman
2007-04-24 23:55
2007.05.20
IdTCPClient





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский