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

Вниз

отношение FindDialog к клавише Enter   Найти похожие ветки 

 
vertal ©   (2006-11-11 23:09) [0]

Есть TFindDialog, Options=[frDown,frDisableUpDown] но одна проблема - событие OnFind возникает, только если нажать на кнопку "найти". А я хочу, чтобы оно возникало и при нажатии Enter в строке ввода. Есть ли какой-нибудь простой способ (без подмены оконной процедуры) этого добиться?


 
Leonid Troyanovsky ©   (2006-11-12 00:05) [1]


> vertal ©   (11.11.06 23:09)  

> на кнопку "найти". А я хочу, чтобы оно возникало и при нажатии
> Enter в строке ввода. Есть ли какой-нибудь простой способ


Есть, конечно.
Тем более, что оная есть кнопка по умолчанию.

--
Regards, LVT.


 
vertal ©   (2006-11-12 12:37) [2]


> Leonid Troyanovsky ©   (12.11.06 00:05) [1]

Сейчас проверил еще раз - был неправ - событие OnFind все-таки возникает при нажатии Enter. Проблема в том, что при нажатии Enter поле FindText не приводится в соответствие с содержимым строки ввода, а при нажатии на кнопку "Найти далее" - приводится. То есть у меня в обработчике OnFind первой строкой шло

if Length(FindDialog.FindText) <> 0 then
  ....

, поэтому при установке Brekpoint после этого if эта часть программы не вызывалась при нажатии Enter.
Сейчас заменил эту строку на

var
  EditWnd: HWND;
 TxtLen: Integer;
 TextToFind: string;
begin
  EditWnd := FindWindowEx(FindDialog.Handle, 0, "EDIT", nil);
   TxtLen := GetWindowTextLength(EditWnd);
   if TxtLen <> 0 then
   begin
     SetLength(TextToFind, TxtLen);
     GetWindowText(EditWnd, PChar(TextToFind), TxtLen+1);
     fmMain.FindDialog.FindText := TextToFind;
     .....

Так работает, и это конечно лучше, чем подмена оконной процедуры, но все-таки такое поведение FIndDialog ненормально. Это недоработка Borland или я чего-то не понимаю?


 
KilkennyCat ©   (2006-11-12 13:31) [3]

Борланд не может предусмотреть всех желаний. Но оставляет возможность для их реализации :)


 
Leonid Troyanovsky ©   (2006-11-12 14:48) [4]


> vertal ©   (12.11.06 12:37) [2]

> таки возникает при нажатии Enter. Проблема в том, что при
> нажатии Enter поле FindText не приводится в соответствие
> с содержимым строки ввода, а при нажатии на кнопку "Найти


Чего-то я не смог воспроизвести подобное.
И если даже оно имеет место, то виноват д.б. не борланд, IMHO.

--
Regards, LVT.


 
vertal ©   (2006-11-12 20:22) [5]


> Leonid Troyanovsky ©   (12.11.06 14:48) [4]

D7, Win 2000 Pro, размер файла Dialogs.pas - 72017 байт, 100% воспроизводимость ситуации

По поведению это все таки недоработка в Dialogs.pas


 
Leonid Troyanovsky ©   (2006-11-12 21:02) [6]


> vertal ©   (12.11.06 20:22) [5]

>  100% воспроизводимость ситуации


Открой новый проект, размести на форме FindDialog,
напиши в обработчике OnFind:
with Sender as TFindDialog do Self.Caption := FindText;

Ну, и расскажи о результатах.

--
Regards, LVT.


 
vertal ©   (2006-11-12 22:01) [7]

> Leonid Troyanovsky ©   (12.11.06 21:02) [6]
Да. Вы вправы. С FindDialog все нормально. Телегу на Borland я накатал незаслуженно. Проблема была в том, что в моем проекте для одного из пунктов меню формы был назначен Shortcut = Enter. При нажатии Enter в диалоге в троке ввода вызывался обработчик этого пункта меню, а уже из него - я сам вызывал OnFind этого диалога. Причем писалось это несколько месяцев назад, а странное поведение Enter заметил только на днях. Ну с кем не бывает...



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

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

Наверх




Память: 0.46 MB
Время: 0.036 c
1-1161604870
Германн
2006-10-23 16:01
2006.12.03
Размер множества


2-1163406956
TrainerOfDolphins
2006-11-13 11:35
2006.12.03
Хранение настроек приложения в файле


6-1152840201
verybadbug
2006-07-14 05:23
2006.12.03
cookie


2-1163778807
Jzero
2006-11-17 18:53
2006.12.03
Поиск папки


15-1163166355
paneller
2006-11-10 16:45
2006.12.03
Layout контролов





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