AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Wechseln zwischen Fenstern derselben Anwendung
Thema durchsuchen
Ansicht
Themen-Optionen

Wechseln zwischen Fenstern derselben Anwendung

Ein Thema von iphi · begonnen am 26. Okt 2017 · letzter Beitrag vom 26. Okt 2017
 
Benutzerbild von himitsu
himitsu

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

AW: Wechseln zwischen Fenstern derselben Anwendung

  Alt 26. Okt 2017, 12: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)
Ein Therapeut entspricht 1024 Gigapeut.

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


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 06:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz