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

Вниз

отношение 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.042 c
15-1162912545
jakon80
2006-11-07 18:15
2006.12.03
Delphi:Помогите сделать программу новичку!!!


15-1162935860
Орион
2006-11-08 00:44
2006.12.03
Полезная утилитка


15-1163178255
Ne-Ld
2006-11-10 20:04
2006.12.03
Назовите, пожалуйста, главные признаки проектов, в которых не сто


15-1163302608
Gero
2006-11-12 06:36
2006.12.03
Все в игноре!


15-1163534530
Виталий Панасенко
2006-11-14 23:02
2006.12.03
FireBird. Руководство разработчика баз данных





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