Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Hotkey bei Image Kompente (https://www.delphipraxis.net/47964-hotkey-bei-image-kompente.html)

Stony2k 18. Jun 2005 15:23


Hotkey bei Image Kompente
 
Beim Durchstöbern des Forum habe ich zwar ein paarr Threads zum Thema Hotkeys gefunden, aber nichts, was mir weiter geholfen hat.
Und zwar benutze ich Images als Buttons und geklickt werden sie via Mouse Down.
Das Problem ist, ich weiss nicht wie ich es hinbekommen soll, nen Hotkey mit den Images zu verlinken (nennt man das so?) und auch per Hotkey Komponente, dem Benutzer zu ermöglichen, selber seinen Hotkey zu nennen.

PS: Ich bin noch nen ziemlicher Anfänger in diesem Bereich, darum nicht mich mit Super komplizierte Codes zuballern :)

hanselmansel 18. Jun 2005 15:31

Re: Hotkey bei Image Kompente
 
Okey, Newbie-Antwort, aber dennoch habe ich in einem anderen Thread folgendes gefunden:
Delphi-Quellcode:
if Key=13 then
begin
  Key := 0;
  SuchBtn.Click; // SuchBtn = Name des Buttons
end;
Müsste man damit nicht auch den hotkey abfragen können und anstatt der Button-Click Prozedur deine eigene Routine reinschreiben können?

MfG, hanselmansel

Stony2k 18. Jun 2005 15:39

Re: Hotkey bei Image Kompente
 
Das Problem ist ja, das der Hotkey nen Systemweiter Hotkey sein soll, ganz vergessen das zu sagen.
Aber bei deinem Code kann ich nicht sehen, welchen Hotkey man drücken muss.
Und wenn ich mich nicht irre, müssen die ja erst Registriert werden und beim Beenden des Programmes wieder De-Registriert.

hanselmansel 18. Jun 2005 15:43

Re: Hotkey bei Image Kompente
 
Okey... da DAS nun eindeutig meine Kompetenzen übersteigt, überlasse ich die Frage nun Anderen, die mehr Ahnung von der Materie haben.

Ultimator 18. Jun 2005 15:49

Re: Hotkey bei Image Kompente
 
Das hier sieht recht vielversprechend aus :)

Schwitzus 18. Jun 2005 16:18

Re: Hotkey bei Image Kompente
 
statt den konstanten kannst auch direkt WORD('A') für die taste A übergeben als letzten parameter bei RegisterHotKey, liefert 65 was $41 entspricht, für Enter kannst vk_return genauso wie 13 bzw halt $0D verwenden, eben die entsprechende nummer von der guten alten acsii tabelle

und inwiefern man die mod-konstanten neu definieren muss is auch fraglich, bei Delphi 6 zumindest sind die genau gleich wie die in der windows-unit, also warum nicht von dort nehmen?

Delphi-Quellcode:
 const
  {$EXTERNALSYM MOD_ALT}
  MOD_ALT = 1;
  {$EXTERNALSYM MOD_CONTROL}
  MOD_CONTROL = 2;
  {$EXTERNALSYM MOD_SHIFT}
  MOD_SHIFT = 4;
  {$EXTERNALSYM MOD_WIN}
  MOD_WIN = 8;

Stony2k 18. Jun 2005 16:19

Re: Hotkey bei Image Kompente
 
Jau sieht schon sehr gut aus. Nur da sind nicht alle VK's für die einzelnen Buchstaben wie z.B. b,c,d etc. dabei, gibt es da vllt eine Liste?
ich werde nun versuchen das ganze ins das Programm einzubauen, wenn es Probleme gibt melde ich mich. Aber ich könnte ja weitere Vorschläge machen :)

//Edit: Das war aber wer schneller *g*. Das heisst also ich kann auch vk_b, vk_c etc. nehmen ?
//Edit 2:@neolithos: Ja ich habe ein TImage als Button verwendet. Hast du eine Idee wie ich dass denn sonst umsetzen kann ?

neolithos 18. Jun 2005 16:20

Re: Hotkey bei Image Kompente
 
Wenn du TImage verwendet hast, kannst du den Hotkey nicht direkt an das Control binden, da es kein Windows-Fenster-Handle besitzt.

Schwitzus 19. Jun 2005 01:55

Re: Hotkey bei Image Kompente
 
Zitat:

Zitat von Stony2k
Das heisst also ich kann auch vk_b, vk_c etc. nehmen ?

wennst dir vorher eine liste mit konstanten von vk_a bis vk_z machst kannst die verwenden, also Buchstaben und Zahlen sind glaub ich nicht vordefiniert
Delphi-Quellcode:
const
 vk_A=65;
 vk_B=66;
 vk_C=67;
 {..usw..}
 vk_Z=90;
 vk_0=48;
 vk_1=49
 {..usw..}
F1 bis F12 sind vordefiniert (vk_f1, ...), genauso wie Enter (vk_return) und andere Tasten, schau in die unit Windows und such nach "VK_", da wirst einiges finden :wink:

das TImage selbst hat kein handle, deswegen wird der hotkey ja auch für das handle des Fensters registriert, das Fenster erhält dann auch den Hotkey:
Delphi-Quellcode:
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
  if Msg.HotKey = in_registerhotkey_angegebener_id then Image1.OnMouseDown(nil,mbleft,[],0,0);
end;

Stony2k 19. Jun 2005 13:23

Re: Hotkey bei Image Kompente
 
Das heisst ich registriere den Hotkey und wenn ich ihn dann drücke, gemäß dem Code
Code:
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
  if Msg.HotKey = in_registerhotkey_angegebener_id then Image1.OnMouseDown(nil,mbleft,[],0,0);
end;
müsste es eigentlich funktionieren. Ich werde es später mal ausprobieren.
Fragt sich nun nurnoch wie ich die Hotkey-Komponente so verwende, damit der Benutzer selbst den Hotkey wählen kann, bzw. ich den Hotkey un- bzw. deregistriere.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:56 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