Einzelnen Beitrag anzeigen

Marco Steinebach

Registriert seit: 4. Aug 2006
491 Beiträge
 
Delphi 5 Enterprise
 
#1

Problem mit wm_keydown und -up

  Alt 1. Jul 2015, 17:44
Hallo zusammen,
mein Programm hat mehrere Teilprogramme, von denen auch mehrere geöffnet sein können. Nun möchte ich mittels strg+TAB durch die offenen Formulare wechseln. Heißt, ich drücke strg+tab sooft bis ich das richtige Formular habe, und lasse dann erst strg wieder los - also alt+tab von Windows nachgebildet.
Funktioniert auch soweit...
Delphi-Quellcode:
procedure TMainForm.AppEvMessage(var Msg: tagMSG;
  var Handled: Boolean);
// als Ereignisbehandlungsroutine von onMessage des AppEventobjektes, damit es in allen Formularen verfügbar ist...
var
  shift: TShiftState;
  key: word;
begin
  if (msg.message <> wm_keyDown) and
     (msg.message <> wm_keyUp) then
    exit; // mich interessieren ja nur die beiden...
  getShiftState (shift); // selbstgeschrieben, wird mittels GetKeyboardState ermittelt
  key := msg.wParam;
  if msg.message = wm_keyDown then
  begin
    if (shift = [ssCtrl]) and
       (key = vk_tab) then
    begin
    formChanged := true; // wir sind beim wechseln...
      // geh' durch die offenenFormulare...
    end;
  end
  else // dann muß es keyUp sein
  begin
    if formchanged and
       (key = vk_control) then
    begin // strg wieder losgelassen...
      // speichere das Formular als "zuletzt aufgerufen" was gerade ausgewählt ist. Und genau hier kommt er, eben nicht immer, an - ich versteh's nicht...
    end
  end;
end;
Kann mir vielleicht jemand sagen, warum der "keyUp"-Teil nicht immer aufgerufen wird, bzw. was man dagegen machen kann...
Vielen Dank schonmal und herzliche Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat