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

Вниз

WM_LBUTTONDOWN перед WM_SETFOCUS   Найти похожие ветки 

 
BorNent   (2009-07-16 17:24) [0]

Добрый день!

Суть задачи: необходимо при нажатии button"a мышкой нажимать кнопку и устанавливать фокус на связанный Edit, а при проходе табом, терять фокус и фокусировать следующий по номеру объект.
Суть проблемы: первым приходит в обработку сообщение WM_SETFOCUS, а потом WM_LBUTTONDOWN. По-этому не получается идентифицировать была ли нажата кнопка или просто получила фокус с помощью прохода табом.
Предполагаемое решение: в обработчике сообщения WM_SETFOCUS нужно обработать сначала все сообщения от мыши, а за тем выполнить основной код обработчика.

Пробовал первой строчкой в обработчике вызывать метод Aplication.ProcessMessages, но результата не получил. Т.е. видимо все равно выполняется сначала WM_SETFOCUS.
Есть какие-нибудь альтернативные варианты?


 
KilkennyCat ©   (2009-07-16 18:21) [1]


> при нажатии button"a мышкой нажимать кнопку

кто=мышь

> а при проходе табом

кто=клавиатура


 
BorNent   (2009-07-16 18:30) [2]


> KilkennyCat ©   (16.07.09 18:21) [1]
>
> > при нажатии button"a мышкой нажимать кнопку
>
> кто=мышь
>
> > а при проходе табом
>
> кто=клавиатура


Пишу класс = аналог ComboBox. Почему? Необходимо, чтоб при нажатии на кнопку (маленкий button справа от Edit) не вылетало окно с предлагаемыми вариантами выбора из листа, а открывалась модальная форма, в которой можно выбрать необходимое значение из БД.
Так понятней объяснил?


 
KilkennyCat ©   (2009-07-16 18:34) [3]

понятно.
но не очень. почему фокус нельзя послать из события нажатия на кнопку? таб на нее тоже нажимает?


 
BorNent   (2009-07-16 18:39) [4]


> KilkennyCat ©   (16.07.09 18:34) [3]
> понятно.
> но не очень. почему фокус нельзя послать из события нажатия
> на кнопку? таб на нее тоже нажимает?


Если Вы имеете ввиду событие OnClick у кнопки, то здесь есть проблема, появляется эффект кратковременного фокуса на кнопке, ее можно даже нажать, если в этот момент надавить энтер ))


 
BorNent   (2009-07-16 18:42) [5]

По-этому принимать решение о потере фокуса или о нажатии на кнопке нужно в пределах обработчика WM_SETFOCUS, но проблема в информации - нажали мышкой или перешли табом ((


 
KilkennyCat ©   (2009-07-16 18:52) [6]


> можно даже нажать, если в этот момент надавить энтер ))

это не так плохо. Я сегодня столкнулся с ситуацией: восстанавливаю с акрониса раздел, мышь глюканула. работать с акронисом без мышт оказалось невозможным. Очень негативно воспринял.
Возможность работы с клавиатуры полнофунционально должна быть!


 
BorNent   (2009-07-16 19:00) [7]


> KilkennyCat ©   (16.07.09 18:52) [6]
>
> > можно даже нажать, если в этот момент надавить энтер ))
>
> это не так плохо. Я сегодня столкнулся с ситуацией: восстанавливаю
> с акрониса раздел, мышь глюканула. работать с акронисом
> без мышт оказалось невозможным. Очень негативно воспринял.
>
> Возможность работы с клавиатуры полнофунционально должна
> быть!


Проблема решается обработчиком Edit"a стрелки вниз, а кнопка не должна получать фокуса - это не эстетично.


 
KilkennyCat ©   (2009-07-16 19:08) [8]

может, поможет: http://www.cyberguru.ru/programming/delphi/message-methods.html



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

Форум: "Начинающим";
Текущий архив: 2009.09.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
15-1248208203
Юрий
2009-07-22 00:30
2009.09.20
С днем рождения ! 22 июля 2009 среда


4-1218110136
workbench
2008-08-07 15:55
2009.09.20
процесс без консольного окна


2-1247757748
antonn
2009-07-16 19:22
2009.09.20
как глянуть строку с AV в DLL? :)


15-1248201124
Тимур
2009-07-21 22:32
2009.09.20
Как вносить строки в реестр?


1-1216127848
IGray
2008-07-15 17:17
2009.09.20
Встроенный локализатор Delphi2007 - глюк с кириллицей!





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