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
Antwort Antwort
iphi

Registriert seit: 13. Feb 2009
262 Beiträge
 
Delphi 7 Personal
 
#1

Wechseln zwischen Fenstern derselben Anwendung

  Alt 26. Okt 2017, 08:37
Hallo,

ich habe eine Anwendung geschrieben, bei der gleichzeitig mehrere Fenster geöffnet sein können (Grafikfenster, Eingabefenster).

Wenn der Nutzer alle Fenster maximiert, dann stellt sich das Problem, wie er zwischen den Fenstern wechseln kann.

Das Windows-Tastenkürzel alt+tab erlaubt nur das Wechseln zwischen verschiedenen Anwendungen, nicht aber zwischen verschiedenen Fenstern derselben Anwendung. In der Taskbar zeigt sich für meine Anwendung auch nur ein Symbol unabhängig davon, wie viele Fenster geöffnet sind.

Gibt es für dieses Problem eine elegante Lösung?
  Mit Zitat antworten Zitat
Towmuz

Registriert seit: 21. Sep 2016
Ort: Minden
127 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: Wechseln zwischen Fenstern derselben Anwendung

  Alt 26. Okt 2017, 08:47
Moin,

wenn du mit folgendem Überschreib in allen Kinderfenstern, die es betreffen soll, herumhantierst, dann bekommst du in der Taskleiste ein per ALT+TAB wechselbares Fenster.


Delphi-Quellcode:
TForm1 = class(TForm)
...
protected
  procedure CreateParams(var Params: TCreateParams); override;
...
end;
Delphi-Quellcode:
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
  Params.WndParent := 0;
end;
Thomas
  Mit Zitat antworten Zitat
iphi

Registriert seit: 13. Feb 2009
262 Beiträge
 
Delphi 7 Personal
 
#3

AW: Wechseln zwischen Fenstern derselben Anwendung

  Alt 26. Okt 2017, 09:37
Cool, funktioniert prima, Danke!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 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
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
379 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Wechseln zwischen Fenstern derselben Anwendung

  Alt 26. Okt 2017, 14:45
In MDI-App geht das von Haus aus mit Strg+Tab.

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#6

AW: Wechseln zwischen Fenstern derselben Anwendung

  Alt 26. Okt 2017, 15:16
... und für alles andere gibts das Fenster Menü.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  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 16:32 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