AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Key's funktionieren nicht

Ein Thema von EWeiss · begonnen am 5. Apr 2018 · letzter Beitrag vom 7. Apr 2018
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Key's funktionieren nicht

  Alt 6. Apr 2018, 11:19
Könnte Dir das hier eventuell weiterhelfen? Link 1Link 2
Aber da geht es um globale (!) Hotkeys.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Key's funktionieren nicht

  Alt 6. Apr 2018, 11:35
Könnte Dir das hier eventuell weiterhelfen? Link 1Link 2
Aber da geht es um globale (!) Hotkeys.
Leider nein, bringt mich nicht weiter.
OK dann gehen halt nur die NumKeys inklusive VK_CONTROL.

Hook baue ich nicht ein.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.048 Beiträge
 
Delphi 12 Athens
 
#3

AW: Key's funktionieren nicht

  Alt 6. Apr 2018, 11:52
WM_GETDLGCODE könnte dir dabei helfen. Damit kannst du Windows Bescheid sagen, dass du bestimmte Systemtasten selber behandeln möchtest.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Key's funktionieren nicht

  Alt 6. Apr 2018, 11:57
WM_GETDLGCODE könnte dir dabei helfen. Damit kannst du Windows Bescheid sagen, dass du bestimmte Systemtasten selber behandeln möchtest.
Über die Accelerator table?
Wenn ja muss ich mal testen Danke.

@jaenicke Super Idee, das war's.
In meiner DLL!

Delphi-Quellcode:
    WM_GETDLGCODE:
      begin
        result := DLGC_WANTALLKEYS or DLGC_WANTARROWS;
        exit;
      end;
Und Auswertung in der Anwendung.
Ohne Hook oder der gleichen.

Delphi-Quellcode:
      WM_KEYDOWN:
        begin
          ObjectID := gSprCtrl.GI_GetObjectFocusID;
          if ObjectID > 0 then
          begin
            gSprCtrl.GD_GetObjectXY(ObjectID, x, y);
            x1 := x;
            y1 := y;

            if gSprCtrl.GI_IsCtrlKeyPressed then
            begin
              UseStep := 4;
              if gSprCtrl.GI_IsShiftKeyPressed then
                UseStep := 16;
            end else
              if gSprCtrl.GI_IsShiftKeyPressed then
                UseStep := 2
            else
            UseStep := 1;

            if gSprCtrl.GD_GetObjectScroll(ObjectID) then
            begin
              gSprCtrl.GI_GetBitmapSize(gSprCtrl.GI_GetBMP(WinHandle), Width, Height);
            end else
            begin
              GetClientRect(WinHandle, rc);
              Width := rc.Right;
              Height := rc.Bottom;
            end;
            gSprCtrl.GD_GetObjectBound(ObjectID, BoundWidth, BoundHeight);

            x2Div2 := BoundWidth div 2;
            y2Div2 := BoundHeight div 2;

            case wp of
              VK_HOME:
                x1 := 0;
              VK_END:
                x1 := MAX(Width - BoundWidth, 0);
              VK_PRIOR:
                y1 := 0;
              VK_NEXT:
                y1 := MAX(Height - BoundHeight, 0);
              VK_LEFT, VK_NUMPAD4:
                if x1 > -x2Div2 then
                  x1 := MAX(x1 - UseStep, -x2Div2);
              VK_UP, VK_NUMPAD8:
                if y1 > -y2Div2 then
                  y1 := MAX(y1 - UseStep, -y2Div2);
              VK_RIGHT, VK_NUMPAD6:
                if x1 < Width - x2Div2 then
                  x1 := MIN(x1 + UseStep, Width - x2Div2);
              VK_DOWN, VK_NUMPAD2:
                if y1 < Height - y2Div2 then
                  y1 := MIN(y1 + UseStep, Height - y2Div2);
            end;

            if (x <> x1) or (y <> y1) then
            begin
              x := x1;
              y := y1;
              gSprCtrl.GD_SetObjectXY(ObjectID, x1, y1, true);
            end;
            sMessage := 'Object ' + IntToStr(ObjectID) + ' coordinates ' + IntToStr(x) + ',' + IntToStr(y);
            ShowTip(true, sMessage);
          end;
        end;
Hat sich erledigt..

SHIFT + CONTROL + VK_DOWN geht nun ohne Probleme.
Das verschieben des Objects findet dann mit 16Facher Geschwindigkeit statt.

gruss

Geändert von EWeiss ( 6. Apr 2018 um 12:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Key's funktionieren nicht

  Alt 7. Apr 2018, 19:22
Hat etwas gedauert, ich wusste doch das ich noch etwas finde.
Anbei ein Source der dir per WinApi erklärt wie man alle Tasten abfangen kann.
Bei Ausführung klicke dich in das rechte Edit und Teste Tasten.
Ich hoffe diesmal richtig zu liegen auch wenn das Thema deinerseits zu war.
Angehängte Dateien
Dateityp: 7z Hot Keys.7z (22,8 KB, 3x aufgerufen)
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Key's funktionieren nicht

  Alt 7. Apr 2018, 19:29
Das ist lieb und bestimmt nett gemeint aber ich benötige es nicht.
Es ging mir nur um die Vier Arrow tasten und diese kann ich mit der Window Message

Delphi-Quellcode:
    WM_GETDLGCODE:
       begin
         result := DLGC_WANTALLKEYS or DLGC_WANTARROWS;
         exit;
       end;
meiner Anwendung zuordnen vorausgesetzt der Focus ist vorher beim zu verwendenden Objekt gesetzt.
Wie ich die Tasten auswerten bzw.. abfangen kann ist mir geläufig.

Trotzdem Danke.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Key's funktionieren nicht

  Alt 7. Apr 2018, 19:34
Okaydokay, ich dacht es gab Anfangs Probleme die Pfeil-Tasten abzufangen und bei dem Sample hab ich es auf diese Bedingung hin getestet, da eine andere Methode verwendet wird dacht ich mir ich teile es.
Einen schönen Abend noch!

[EDIT]
Ach Du Heilige Banane, das Sample ist ja nicht WinApi, boah das ärgert mich jetzt, hab den falschen Source komprimiert. Egal, hatte sich ja eh erledigt.
[/EDIT]
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 7. Apr 2018 um 19:40 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:31 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