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

Вниз

Закрытие формы по Escape   Найти похожие ветки 

 
Ega23 ©   (2004-10-20 11:12) [0]

Есть вот такой код. При добавлении кнопки ставлю её свойство Cancel:=True, однако по Escape форма не закрывается.
function ShowMessagesString(const aMessage:String; aCaption:String=""):Boolean;
var
aForm:TForm;
begin
Result:=False;
try
 Application.CreateForm(TForm, aForm);
 try
  With aForm do
   begin
    Caption:=aCaption;
    BorderStyle:=bsDialog;
    Height:=500;
    Width:=750;
    Position:=poScreenCenter;
   end;
  With TMemo.Create(aForm) do
   begin
    Parent:=aForm;
    Font.Name:="Courier New";
    Name:="memSQLLogMonitor";
    Align:=alTop;
    ScrollBars:=ssBoth;
    Height:=440;
    Clear;
    Lines.Text:=aMessage;
   end;
  With TButton.Create(aForm) do
   begin
    Parent:=aForm;
    Cancel:=True;
    Height:=25;
    Width:=100;
    Font.Size:=10;
    Top:=aForm.ClientHeight-30;
    Left:=aForm.ClientWidth-110;
    Caption:="Закрыть";
    ModalResult:=mrCancel;
   end;
  aForm.ShowModal;
 finally
  aForm.Free;
 end;
except on E:Exception do
 raise Exception.Create("ShowMessagesString "+E.Message);
end;
end;


При статическом создании формы (в design-time) всё прекрасно работает.

В чём может быть проблема?


 
-=SS=- ©   (2004-10-20 11:25) [1]

Дело в том что фокус находится в Memo. А Memo не обрабатывает ESC


 
Ega23 ©   (2004-10-20 11:30) [2]

О, блин. А я на Edit проверял, с ним всё отрабатывает...
Чудеса какие-то...


 
-=SS=- ©   (2004-10-20 11:37) [3]

Если очень надо прийдется ставить обработчик OnKeyPress на форму


 
Amoeba ©   (2004-10-20 11:42) [4]


> -=SS=- ©   (20.10.04 11:37) [3]
> Если очень надо прийдется ставить обработчик OnKeyPress
> на форму

IMHO это лучшее решение задачи.


 
Ega23 ©   (2004-10-20 11:58) [5]

Ха, всё гораздо интереснее получается.
Провёл небольшое исследование:
Главная форма, на ней кнопка, по нажатию модально открывается вторая форма.
На ней: 5 TEdit, 1 TMaskEdit, 1 TComboBox, 1 TListBox, 1 TMemo, 1 TButton.
TButton.ModelResult:=mrOK;
TButton.Cancel:=True;

В TabOrder"е формы кнопку воткнул последней.

По Escap"у форма замечательно закрывается, если фокус стоит на ЛЮБОМ контроле, КРОМЕ TMemo.


 
DiamondShark ©   (2004-10-20 12:08) [6]

Если у мемо WantReturns = false, то Esc срабатывает.

А вот и разгадка:

procedure TCustomMemo.WMGetDlgCode(var Message: TWMGetDlgCode);
begin
 inherited;
 if FWantTabs then Message.Result := Message.Result or DLGC_WANTTAB
 else Message.Result := Message.Result and not DLGC_WANTTAB;
 if not FWantReturns then
   Message.Result := Message.Result and not DLGC_WANTALLKEYS;
end;


 
Ega23 ©   (2004-10-20 12:12) [7]

DiamondShark ©   (20.10.04 12:08) [6]

О как! Большое спасибо, буду знать.  :о)



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

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

Наверх





Память: 0.46 MB
Время: 0.038 c
10-1049790727
vovan_i
2003-04-08 12:32
2004.10.31
Использование IStringsPtr в DCOM


14-1097253935
Leaner
2004-10-08 20:45
2004.10.31
Количество секторов в кластере


14-1097582942
Суслик
2004-10-12 16:09
2004.10.31
Спам роботы


14-1097662297
Жук
2004-10-13 14:11
2004.10.31
Португалия - Россия


3-1096628791
DesWind
2004-10-01 15:06
2004.10.31
Обновление лукап поля





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