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

Вниз

Формы и горячие клавиши   Найти похожие ветки 

 
Елена   (2002-06-26 06:57) [0]

В главной форме для одного из пунктов меню в качестве горячей клавиши назначена клавиша Backspace. Когда из главной формы вызывается другая форма (главная при этом прячется), то если в поле редактирования второй формы нажать клавишу Backspace, то срабатывает функция главной формы, а символ в поле редактирования не стирается.

Что прикажете делать?


 
MBo   (2002-06-26 07:01) [1]

1) Отказаться от такого использования BackSpace- нехорошо переопределять стандартные действия
2) Если очень надо, по "прятанию" главной формы изменять ее меню,
а по OnShow восстанавливать


 
Proton   (2002-06-26 09:10) [2]

Вот что коллега по этому поводу говорит

Как сказать VCL, чтобы клавиши shortcut пунктов главного меню главной формы
действовали только в этой форме (но не в модальных окнах, к примеру)?
A>:
Знакомая проблема.
Лечится так:

function WindowHook(var Message: TMessage): Boolean;

procedure .FormCreate(Sender: TObject);
begin
// MainForm
Application.HookMainWindow(WindowHook);

function .WindowHook;
begin
Result := False;

with Message do
case Msg of
CM_APPKEYDOWN{??????? ??????? .MainMenu ???????? ?? _????_ ??????.
?????!}, CM_APPSYSCOMMAND{????? .MainMenu ?? ?????? ????. ?????!}: Msg :=
WM_NULL;

Author>:
Александр Петросян, Зеленоград.
(2:5020/468.8)

-----
Уж не знаю что он этим хотел сказать :)


 
Елена   (2002-06-26 12:24) [3]

И мне интересно было бы знать :o)


 
Proton   (2002-06-26 15:09) [4]

Ладно чего не сдлаеш ради девушки с таким дивным именем :)
Вообщем если надо то вот пример - разбирайся.
Я набрал вроде работает

Возможно еще нужна проверка
if not (GetForeguraundWindow = Application.MainForm.handle) then
message.msg := WM_NULL;
Но по чему то все работает и так - наверное ни внимательно смотрел.

* Project1.dpr
program Project1;
uses
Forms,
Unit1 in "Unit1.pas" {Form1},
Unit2 in "Unit2.pas" {Form2};
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
* Unit1.dfm
object Form1: TForm1
Left = 192
Top = 106
Width = 544
Height = 375
Caption = "Form1"
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
Menu = MainMenu1
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object MainMenu1: TMainMenu
Left = 144
Top = 8
object GFDHDFGH1: TMenuItem
Caption = "GFDHDFGH"
object GHDFG1: TMenuItem
Caption = "GHDFG"
ShortCut = 16449
OnClick = GHDFG1Click
end
end
end
end
* Unit1.pas
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus;

type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
GFDHDFGH1: TMenuItem;
GHDFG1: TMenuItem;
procedure GHDFG1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
function WindowHook(var Message: TMessage): Boolean;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.GHDFG1Click(Sender: TObject);
begin
ShowMessage("a");
end;

function TForm1.WindowHook(var Message: TMessage): Boolean;
begin
result := false;
case Message.Msg of
CM_APPKEYDOWN, CM_APPSYSCOMMAND: message.msg := WM_NULL;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.HookMainWindow(WindowHook);
end;

end.
* Unit2.dfm
object Form2: TForm2
Left = 215
Top = 153
Width = 544
Height = 375
Caption = "Form2"
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = False
Visible = True
PixelsPerInch = 96
TextHeight = 13
end
* Unit2.pas
unit Unit2;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm2 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.DFM}

end.



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

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

Наверх





Память: 0.46 MB
Время: 0.006 c
3-23487
SergSerg
2002-06-15 17:34
2002.07.08
Update SQL


1-23652
nimble
2002-06-26 08:20
2002.07.08
StringGrid


1-23594
Fly`
2002-06-25 12:46
2002.07.08
RichEdit, SelStart, Lines


3-23496
Dark Programmer
2002-06-17 04:29
2002.07.08
Чеза барада?


14-23744
Сергей А.
2002-06-06 00:06
2002.07.08
Игры на Delphi





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