Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#4

AW: Wechseln zwischen Fenstern derselben Anwendung

  Alt 26. Okt 2017, 13:49
Oder die Behandlung nur für das eigene Programm anpassen,
wenn man nicht will, dass das eigene Programm mehrmals im Alt+Tab auftaucht.

* Tab / Shift+Tab = Next Control
* Strg+Tab / Strg+Shift+Tab = Next Tab Control (PageControl)
* Strg+Alt+Tab / Strg+Shift+Alt+Tab = Next Form (InApp) ???
* Alt+Tab / Alt+Shift+Tab = Next Application
* Win+Tab = Task View

Komisch, hätte gedacht, dass Windows da schon lange was hat, für MultiWindow-Apps.
Hmmm, und wie geht das bei MDI? (dachte da ging es auch schon)

Letztes Fenster:
Delphi-Quellcode:
procedure TForm6.ApplicationEvents1ShortCut(var Msg: TWMKey; var Handled: Boolean);
var
  i: Integer;
begin
  if (Msg.CharCode = VK_TAB) and (GetKeyState(VK_CONTROL) < 0) then begin
    i := 1;
    while i < Screen.FormCount do
      if Screen.Forms[i].Visible and IsWindowEnabled(Screen.Forms[i].Handle) then begin
        Screen.Forms[i].SetFocus;
        Break;
      end else
        Inc(i);
  end;
end;
Die letzten Fenster: (Beispiel mit Strg+Tab und ohne Reverse-Shift und Rollover)
Delphi-Quellcode:
//private
// FFormSwitchStart: Integer;

procedure TForm6.ApplicationEvents1ShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
  if (Msg.CharCode = VK_CONTROL) and (Msg.KeyData and $40000000 = 0) then
    FFormSwitchStart := 1;
  if (Msg.CharCode = VK_TAB) and (GetKeyState(VK_CONTROL) < 0) then begin
    while FFormSwitchStart < Screen.FormCount do
      if Screen.Forms[FFormSwitchStart].Visible and IsWindowEnabled(Screen.Forms[FFormSwitchStart].Handle) then begin
        Screen.Forms[FFormSwitchStart].SetFocus;
        Inc(FFormSwitchStart);
        Break;
      end else
        Inc(FFormSwitchStart);
  end;
end;
Demo: neue VCL-Anwendung, ein/mehrere neue VCL-Forms (mit Visible=True) und TApplicationEvents.OnShortCut (z.B. auf die MainForm)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (26. Okt 2017 um 13:51 Uhr)
  Mit Zitat antworten Zitat