Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PageControl - Wechsel zwischen Tabsheet per Tastatur sperren (https://www.delphipraxis.net/207302-pagecontrol-wechsel-zwischen-tabsheet-per-tastatur-sperren.html)

Mat78 11. Mär 2021 07:41

PageControl - Wechsel zwischen Tabsheet per Tastatur sperren
 
Hallo Gemeinde,

wie kann man verhindern, das ein User per Taste Links oder Rechts zwischen den einzelnen Tabsheets wechseln kann?

Es gibt ja keine Tastenabfrage "OnKEy" in diesem Fall.

Danke vorab.

Matthias

mschaefer 11. Mär 2021 07:51

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren
 
Moin, also ich würde es ausblenden, als User klickt man aufs Tab und es tut sich nichts, ist auch "unerwartet ..."

Mat78 11. Mär 2021 08:54

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren
 
Es ging mir um die cursortasten nicht um die Maustasten.

Zitat:

Zitat von mschaefer (Beitrag 1484869)
Moin, also ich würde es ausblenden, als User klickt man aufs Tab und es tut sich nichts, ist auch "unerwartet ..."


Delbor 11. Mär 2021 09:19

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren
 
Hi Mat78

Versuch mal dies bei OnKeyDown des PageControls:

Delphi-Quellcode:
case Key of of
  VK_Left : Key := #0;
  VKDown : Key := #0;
  VK_Right: Key := #0;
  VK_UP  : Key := #0;
end;
Alternativ dazu könntest du bei entsprechendem Tastendruck auch PageControl.ActivPage zwischenspeichern und wieder zuweisen.

Die virtuellen Tastaturcodes müsstest du nachprüfen. Ausserdem könnte es sein, dass das Pagecontrol in anderm Zusammenhang auf eben diese Tasten reagieren können muss.

Gruss
Delbor

Renate Schaaf 11. Mär 2021 09:53

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren
 
Hallo,

Du könntest die WndProc ändern, so dass sie nicht auf keyboard reagiert, könnte man vielleicht noch genauer ausfiltern:

Delphi-Quellcode:
type
 TPageControl=class(Vcl.ComCtrls.TPageControl)
  protected
  procedure WndProc(var Message: TMessage); override;
  end;

...
Delphi-Quellcode:
procedure TPageControl.WndProc(var Message: TMessage);
begin
  if (Message.Msg < WM_KEYFIRST) or (Message.Msg > WM_KEYLAST) then
    inherited;
end;
Gruß

himitsu 11. Mär 2021 11:53

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren
 
Oder KeyPreview=True und dann im Event der Form.

Mat78 11. Mär 2021 13:19

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren
 
Hi, OnKeyDown des PageControls ? Das gibt es nicht.

Zitat:

Zitat von Delbor (Beitrag 1484876)
Hi Mat78

Versuch mal dies bei OnKeyDown des PageControls:

Delphi-Quellcode:
case Key of of
  VK_Left : Key := #0;
  VKDown : Key := #0;
  VK_Right: Key := #0;
  VK_UP  : Key := #0;
end;
Alternativ dazu könntest du bei entsprechendem Tastendruck auch PageControl.ActivPage zwischenspeichern und wieder zuweisen.

Die virtuellen Tastaturcodes müsstest du nachprüfen. Ausserdem könnte es sein, dass das Pagecontrol in anderm Zusammenhang auf eben diese Tasten reagieren können muss.

Gruss
Delbor


Mat78 11. Mär 2021 13:20

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren
 
Hallo, das habe ich schon versucht, funktioniert auch . Problem: dadurch ist aber auch der Rest betroffen auf der Form (Editfelder zum BEispiel)


Zitat:

Zitat von himitsu (Beitrag 1484903)
Oder KeyPreview=True und dann im Event der Form.


himitsu 11. Mär 2021 13:23

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren
 
Es ist ja nicht so, dass man dort nicht auf Self.ActiveControl oder Screen.ActiveControl prüfen könnte und das dann nur dann macht, wenn es nötig ist. :angle2:

Mat78 11. Mär 2021 14:34

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren
 
Dankö für den Tipp, nun funktioniert es.


Zitat:

Zitat von himitsu (Beitrag 1484916)
Es ist ja nicht so, dass man dort nicht auf Self.ActiveControl oder Screen.ActiveControl prüfen könnte und das dann nur dann macht, wenn es nötig ist. :angle2:



Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 Uhr.
Seite 1 von 2  1 2      

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