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