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

Вниз

Непонятное поведение accelerator character   Найти похожие ветки 

 
Opilki_Inside   (2009-04-02 03:46) [0]

Поведение, трудно поддающееся описанию, поэтому объясню на примере:

Кинем на форму TStringGrid, TListBox, TBitBtn

в TBitBtn зададим Caption, например "h&ello", т.е. кнопочка "E" становится клавишей быстрого вызова (accelerator character)

Запускаем прогу,

ставим фокус на StringGrid и нажимаем "E" (без Alt) при этом вызовется обработчик BitBtn !

ставим фокус на TListBox и так же нажимаем "E" - при этом обработчик не вызовется !

Вопрос - почему? Есть идеи?


 
DimaBr ©   (2009-04-02 09:04) [1]

Внимание! Здесь обсуждаются вопросы, связанные с разработкой компонентов, редакторов свойств, редакторов компонентов и экспертов IDE.
Вопросы по поиску и использованию готовых компонентов, редакторов или экспертов являются нарушением тематики и могут быть удалены.


 
clickmaker ©   (2009-04-02 11:45) [2]

> ставим фокус на TListBox и так же нажимаем "E" - при этом
> обработчик не вызовется !
>
> Вопрос - почему? Есть идеи?

есть. В листбоксе нажатие буквенных клавиш - быстрый поиск по первым буквам


 
Opilki_Inside   (2009-04-02 20:42) [3]

clickmaker © , Это я понимаю. Я просто как раз модифицирую свой Grid унаследованный от TCustomGrid (компонент уже написан другими разработчиками), и мне нужно реализовать инкрементный поиск. Так вот, появилась проблема, что как только юзер начинает вводить символы (фокус в гриде), то срабатывают обработчики у кнопок на форме.
Я долго копался в исходниках VCL но не так и не смог найти принципиальной разницы между TListBox и TStringGrid...


 
Amoeba ©   (2009-04-02 21:47) [4]


> модифицирую свой Grid унаследованный от TCustomGrid (компонент
> уже написан другими разработчиками), и мне нужно реализовать
> инкрементный поиск
>

Посмотри исходники DBGridEh из EhLib, там реализован инкрементный поиск.


 
Opilki_Inside   (2009-04-02 22:13) [5]


> > модифицирую свой Grid унаследованный от TCustomGrid (компонент
>
> > уже написан другими разработчиками), и мне нужно реализовать
>
> > инкрементный поиск
> >
>
> Посмотри исходники DBGridEh из EhLib, там реализован инкрементный
> поиск.


Посмотрел EhLib. Инкрементный поиск реализован. Только там тоже есть описанная мной проблема. Если на форме лежит кнопочка с быстрым вызовом, то она нажимается.

Причем, KeyDown срабатывает у наследников TCustomGrid, но Key := 0; в нем не помогает. А до KeyPress дело даже не доходит.


 
Игорь Шевченко ©   (2009-04-03 00:20) [6]


> Поведение, трудно поддающееся описанию, поэтому объясню
> на примере:
>
> Кинем на форму TStringGrid, TListBox, TBitBtn
>
> в TBitBtn зададим Caption, например "h&ello", т.е. кнопочка
> "E" становится клавишей быстрого вызова (accelerator character)
>
>
> Запускаем прогу,
>
> ставим фокус на StringGrid и нажимаем "E" (без Alt) при
> этом вызовется обработчик BitBtn !
>
> ставим фокус на TListBox и так же нажимаем "E" - при этом
> обработчик не вызовется !
>
> Вопрос - почему? Есть идеи?


Вот поэтому:

procedure TCustomGrid.WMGetDlgCode(var Msg: TWMGetDlgCode);
begin
 Msg.Result := DLGC_WANTARROWS;
 if goRowSelect in Options then Exit;
 if goTabs in Options then Msg.Result := Msg.Result or DLGC_WANTTAB;
 if goEditing in Options then Msg.Result := Msg.Result or DLGC_WANTCHARS;
end;

ставим у грида в Options goEditing и наблюдаемое поведение пропадает.

В наследнике я бы переписал метод WMGetDlgCode, с учетом того, что если нужен инкрементальный поиск, то возвращать всегда DLGC_WANTCHARS


 
Opilki_Inside   (2009-04-03 05:03) [7]

Игорь, спасибо. Я так и сделал :-)



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

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

Наверх




Память: 0.46 MB
Время: 0.004 c
2-1261726198
oleg1963
2009-12-25 10:29
2010.02.28
Добавить компонент в класс


2-1261670806
valussev@mail.ru
2009-12-24 19:06
2010.02.28
вывод части Bitmap


2-1261744269
vegarulez
2009-12-25 15:31
2010.02.28
вопрос про XML


2-1261640332
pest
2009-12-24 10:38
2010.02.28
Создание своего компонента-контейнера


15-1260896939
Nic
2009-12-15 20:08
2010.02.28
Что думаете об ЭТОМ?! )





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