Главная страница
    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.46 MB
Время: 0.006 c
14-20288
sapsi
2003-06-20 11:56
2003.07.07
Почему профессия программиста не считается вредной


14-20226
AlexTregubov
2003-06-19 12:24
2003.07.07
HTML Help Workshop - создание справочной системы


14-20251
sancho
2003-06-19 11:05
2003.07.07
Где можно почитать об автоаккустике?


1-20069
anod
2003-06-25 15:55
2003.07.07
Как определить одновременное нажатие клавиш


1-20103
dimon1979
2003-06-24 14:39
2003.07.07
Встроенный ассемблер





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