Главная страница
    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.008 c
2-1248066170
apic
2009-07-20 09:02
2009.09.20
контекстное меню


15-1248441684
b z
2009-07-24 17:21
2009.09.20
Потоп


15-1248208203
Юрий
2009-07-22 00:30
2009.09.20
С днем рождения ! 22 июля 2009 среда


15-1246915947
Германн
2009-07-07 01:32
2009.09.20
Система "Экспресс-3" от РЖД


2-1247655189
AndrewG
2009-07-15 14:53
2009.09.20
Ячейка & DBGrid





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