AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein PageControl - Wechsel zwischen Tabsheet per Tastatur sperren
Thema durchsuchen
Ansicht
Themen-Optionen

PageControl - Wechsel zwischen Tabsheet per Tastatur sperren

Ein Thema von Mat78 · begonnen am 11. Mär 2021 · letzter Beitrag vom 11. Mär 2021
Antwort Antwort
Seite 1 von 2  1 2      
Mat78

Registriert seit: 13. Mär 2017
11 Beiträge
 
#1

PageControl - Wechsel zwischen Tabsheet per Tastatur sperren

  Alt 11. Mär 2021, 08:41
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
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#2

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren

  Alt 11. Mär 2021, 08:51
Moin, also ich würde es ausblenden, als User klickt man aufs Tab und es tut sich nichts, ist auch "unerwartet ..."
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Mat78

Registriert seit: 13. Mär 2017
11 Beiträge
 
#3

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren

  Alt 11. Mär 2021, 09:54
Es ging mir um die cursortasten nicht um die Maustasten.

Moin, also ich würde es ausblenden, als User klickt man aufs Tab und es tut sich nichts, ist auch "unerwartet ..."
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren

  Alt 11. Mär 2021, 10:19
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
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (11. Mär 2021 um 10:23 Uhr)
  Mit Zitat antworten Zitat
Renate Schaaf

Registriert seit: 25. Jun 2020
Ort: Lippe
114 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren

  Alt 11. Mär 2021, 10:53
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ß
Renate
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren

  Alt 11. Mär 2021, 12:53
Oder KeyPreview=True und dann im Event der Form.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Mat78

Registriert seit: 13. Mär 2017
11 Beiträge
 
#7

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren

  Alt 11. Mär 2021, 14:19
Hi, OnKeyDown des PageControls ? Das gibt es nicht.

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
  Mit Zitat antworten Zitat
Mat78

Registriert seit: 13. Mär 2017
11 Beiträge
 
#8

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren

  Alt 11. Mär 2021, 14:20
Hallo, das habe ich schon versucht, funktioniert auch . Problem: dadurch ist aber auch der Rest betroffen auf der Form (Editfelder zum BEispiel)


Oder KeyPreview=True und dann im Event der Form.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren

  Alt 11. Mär 2021, 14:23
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Mat78

Registriert seit: 13. Mär 2017
11 Beiträge
 
#10

AW: PageControl - Wechsel zwischen Tabsheet per Tastatur sperren

  Alt 11. Mär 2021, 15:34
Dankö für den Tipp, nun funktioniert es.


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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:10 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