AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Abfangen Arrow Tasten - Aber WM_GetDlgCode kommt gar nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Abfangen Arrow Tasten - Aber WM_GetDlgCode kommt gar nicht

Ein Thema von steamengine · begonnen am 7. Jul 2006 · letzter Beitrag vom 11. Jul 2006
Antwort Antwort
steamengine

Registriert seit: 7. Jul 2006
12 Beiträge
 
Delphi 2006 Professional
 
#1

Abfangen Arrow Tasten - Aber WM_GetDlgCode kommt gar nicht

  Alt 7. Jul 2006, 15:09
Hi,

in mehreren Threads wurde hier schon das Thema
Abfangen von Funktionstasten, Arrow Tasten usw. per WM_GetDlgCode diskutiert.

Alles sehr schön, aber bei mir kommt trotz aller Versuche (siehe davon unten 4 Stück) diese Botschaft nirgendwo an - egal ob ich sie in einer Form oder den einzelnen Controls aufzuspüren versuche.

Die Form wird ganz normal mit ShowModal angeworfen und geht auch ansonsten.

Plattform ist XP (SP2) mit BDS 2006 (ComponentOne Studio Enterprise).

Wer kann mir helfen?

Beste Grüße



Delphi-Quellcode:
type
  TOwnEdit = class(TEdit)
    procedure WMGetDlgCode(var msg: TWMGetDlgCode); message WM_GETDLGCODE;
  end;


procedure TOwnPanel.WMGetDlgCode(var Msg: TWMGetDlgCode);
begin
  //kommt nicht an
  inherited;
  Msg.Result := Msg.Result or DLGC_WANTARROWS or DLGC_WANTTAB;
end;

ODER --------------------

type
  TOwnPanel = class(TPanel)
    procedure WMGetDlgCode(var Msg: TWMGetDlgCode); message WM_GETDLGCODE;
  end;

procedure TOwnEdit.WMGetDlgCode(var msg: TWMGetDlgCode);
begin
  //kommt nicht an
  inherited;
  msg.Result := msg.Result or DLGC_WANTTAB or DLGC_WANTARROWS;
end;

ODER --------------------


TEditFitParamForm = class(TForm)

    procedure WMGetDlgCode(var Message: TWMGetDlgCode); message WM_GETDLGCODE;

procedure TEditFitParamForm.WMGetDlgCode(var Message: TWMGetDlgCode);
begin
  //kommt nicht an
  inherited;
  Message.Result := Message.Result or DLGC_WANTTAB or DLGC_WANTARROWS;
end;

ODER --------------------

TEditFitParamForm = class(TForm)
        ...
        procedure MyOwnWindowProc(var Message: TMessage);

    
procedure TEditFitParamForm.FormCreate
    ...
    OldWindowProc:=WindowProc;
    WindowProc:=MyOwnWindowProc;

procedure TEditFitParamForm.MyOwnWindowProc(var Message: TMessage);
var debug:integer;
begin
  Message.Result:=0;
  if Message.Msg = wm_size then //kommt an
    begin
      debug:=1;
    end;
  if Message.Msg = WM_GetDlgCode then //kommt nicht an
    begin
      debug :=1;
    end;
   //send everything to OldWindowProc
  OldWindowProc(Message);
end;
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Abfangen Arrow Tasten - Aber WM_GetDlgCode kommt gar nic

  Alt 7. Jul 2006, 15:53
Moin Steamengine,

erst einmal herzlich willkommen hier in der Delhpi-PRAXiS.

Wie, das kommt nicht an?

Wenn ich mal Deinen Code für TOwnEdit per Copy&Paste verwende, und dann noch folgendes hinzufüge:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  with TOwnEdit.Create(self) do begin
    Parent := self;
    OnKeyDown := Edit1KeyDown;
  end;
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if KEY = VK_TAB then ShowMessage('TAB');
end;
Erhalte ich immer die Meldung 'TAB', wenn das dynamisch erzeugte Editfeld den Fokus hat, und ich Tab drücke.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
steamengine

Registriert seit: 7. Jul 2006
12 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Abfangen Arrow Tasten - Aber WM_GetDlgCode kommt gar nic

  Alt 11. Jul 2006, 12:33
Ja, danke für die Ideen.

Ich habe den Panels nicht genug Beachtung geschenkt. wm_GetDlgCode muß im Parent des betroffenen Controls abgefangen werden - und da waren zwischen der Form und meinem Control eben die Panels dazwischen.

Also jetzt ist das ok.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz