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

Вниз

Фокус   Найти похожие ветки 

 
vgb ©   (2003-05-04 13:40) [0]

Мастера, помогите, pls.
Как заставить кнопку потерять фокус? Что-то типа, как в калькуляторе, после нажатия на кнопку она тут-же теряет фокус?
Пытался с помощью SendMessage(...), но в хелпе не нашел никаких похожих параметров.
Заранее СПАСИБО!


 
MBo ©   (2003-05-04 13:49) [1]

А может, SpeedButton использовать? Оно и фокуса не принимает


 
VGB ©   (2003-05-04 14:02) [2]

Прога на WinApi


 
Dmk ©   (2003-05-04 14:16) [3]

Попробуй это
SendMessage(self.Button1.Handle, WM_KILLFOCUS, 0, 0);
или переведи фокус на другой объект


 
MBo ©   (2003-05-04 14:16) [4]

принцип тот же - не настоящая кнопка-окно, а нарисованная, например, DrawFrameControl с обработкой сообщений от родителя в ее области.

Можно, конечно, отслеживать, откуда пришел фокус - и переводить назад, но это имхо, нехорошо - может, он воообще на элементе другого окна был


 
VGB ©   (2003-05-04 14:40) [5]

2Dmk

> SendMessage(self.Button1.Handle, WM_KILLFOCUS, 0, 0);

Спасибо, то что надо!!! Только вот еще проблема. Затеял я это вследствии того, что при получении фокуса кнопке, форма не получает сообщений на нажатие клавишь. Теперь, после нажатия на кнопку она тут же теряет фокус, но вот сообщения WM_KEYDOWN форма все равно не получает:(

2MBo

> принцип тот же - не настоящая кнопка-окно

Идея хорошая, т.к. тут же решается и описаная выше проблема. Надобы попробовать.

> Можно, конечно, отслеживать, откуда пришел фокус...

К сожаленю не годится...


 
VGB ©   (2003-05-04 15:57) [6]

2Mbo
А как использовать эту самую DrawFrameControl?
Делаю так:
var
R: TRect;
begin
R.Left:=100;
R.Top:=100;
R.Right:=120;
R.Bottom:=120;
DrawFrameControl(MainWindowHandle, R, DFC_BUTTON, DFCS_BUTTONPUSH);
end;

Главное окно остается пустым. В описании данной функции в Help-е наткнулся на FillRect, но так и не понял, что к чему. Разъесните пожалуйста "тугодуму" (это моя первая прога на API).


 
Юрий Зотов ©   (2003-05-04 16:07) [7]

В первом параметре DrawFrameControl требует хэндл контекста устройства, а Вы зачем-то подсовываете ей хэндл окна. Естественно, она ничего и не рисует - негде ей рисовать.

var
DC: HDC;
...
DC := GetDC(MainWindowHandle);
try
DrawFrameControl(DC, ...)
finally
ReleaseDC(MainWindowHandle, DC)
end


 
VGB ©   (2003-05-04 17:37) [8]

2Юрий Зотов
Спасибо, помогло!!!
Думаю на этом вопросе можно ставить жирную точку.



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

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

Наверх




Память: 0.48 MB
Время: 0.011 c
14-20248
san1drug
2003-06-19 18:37
2003.07.07
Проблемы при отладке в Delphi7


9-19939
MRB_SPB
2003-01-22 19:03
2003.07.07
Расширения


6-20187
Anet
2003-04-28 09:28
2003.07.07
Какую библиотеку-функцию исп-ет Oulook Express для отправки почты


14-20289
Andryk
2003-06-20 13:06
2003.07.07
Вот это да, классно отбрили :о))


14-20306
Mishenka
2003-06-20 02:41
2003.07.07
Как получить пиктограмму у ехе файла?