Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi space taste sperren und freigeben ohne onKeyPress (https://www.delphipraxis.net/76830-space-taste-sperren-und-freigeben-ohne-onkeypress.html)

Katrin_K 10. Sep 2006 18:50


space taste sperren und freigeben ohne onKeyPress
 
hi

Ich möchte die Spacetaste Sperren, da ich mir mit dem tastendruck eine Nachricht anzeigen lassen möchte.

Delphi-Quellcode:
 if Windows.GetAsyncKeyState(32)<0 then  //32 Space
    begin
      showmessage('Test');
    end
Die Nachricht wird mir aber nicht angezeigt, weil der Tastendruck Das Fenster gleich wieder schließt.

Oder kann man vielleicht das GetAsyncKeyState-Feld veränderm???


gruss katrin

Cyberbob 10. Sep 2006 19:03

Re: space taste sperren und freigeben ohne onKeyPress
 
Was spricht gegen:
Delphi-Quellcode:
if Key = ' ' then
begin
  ShowMessage('Hallo Welt!');
end;
Warum wird das Fenster wieder grschlossen? Benutzt du ein normales Formular oder einen Dialog?

Katrin_K 10. Sep 2006 19:10

Re: space taste sperren und freigeben ohne onKeyPress
 
Ich frage mit

Delphi-Quellcode:
Windows.GetAsyncKeyState(32)<0
ob die Leertaste gedrückt wurde.

Wenn das der Fall ist Zeige ich mir ein MessageFenster

Delphi-Quellcode:
showmessage('Test');
an.

Da aber in dem Fenster der Focus auf dem OK-Button liegt und das Signal von der gedrückten Space an das Messagefenster weitergegeben wird, so schließt sich das Fenster wieder sofort.

Delphi-Quellcode:
if Windows.GetAsyncKeyState(32)<0 then  //32 Space
    begin
      //space sperren oder feld für gedrückte tasten manipulieren. sprich: gedrückteTastenFeld[32] := 0;
      showmessage('Test');
    end

Olli 10. Sep 2006 21:45

Re: space taste sperren und freigeben ohne onKeyPress
 
Tja, wie wäre es als Workaround ein eigenes Fenster zu benutzen? Bsp: MSDN-Library durchsuchenMessageBoxIndirect()!

luigied 11. Sep 2006 09:11

Re: space taste sperren und freigeben ohne onKeyPress
 
Hi,

wäre es nicht auch möglich bei
Delphi-Quellcode:
onKeydown
ein anderes Form zu öffnen und darin den Text anzeigen zu lassen? In
Delphi-Quellcode:
onKeyup
könnte man das Form doch wieder ausblenden.

Katrin_K 11. Sep 2006 12:47

Re: space taste sperren und freigeben ohne onKeyPress
 
Danke luigied für deine Antwort, aber das ist leider keine Lösung für mein Problem.

Hi Olli
ich werde mal schaun, ob ich einen workaround machen kann.
Sonst mache ich das nicht, weil dann ein problem nach dem anderen umgangen wird anstatt eine optimale lösung zu finden. :wink:
trotzdem danke für die idee.

gruss katrin

Christian Seehase 11. Sep 2006 12:48

Re: space taste sperren und freigeben ohne onKeyPress
 
Moin Katrin,

wo fragst Du die Taste denn ab?

Katrin_K 11. Sep 2006 13:00

Re: space taste sperren und freigeben ohne onKeyPress
 
Ich habe auf meiner Fomr ein Image das ich verändere in einer endlosschleife.
in der schleife frage ich nun die taste space ab
Delphi-Quellcode:
if Windows.GetAsyncKeyState(32)<0 then
um den bildverändernden Vorgang zu unterbrechen.

Das klappt auch alles solange ich nicht die space oder enter nehme.
Aber ich will die space taste benutzen. ggrrrr :wall:

luigied 11. Sep 2006 13:05

Re: space taste sperren und freigeben ohne onKeyPress
 
Sorry.
Ich glaube ich hab mich falsch ausgedrückt :oops:
Ich meinte, dass in dem neuen Form deine Nachricht in einem Label oder so ausgegeben wird.
(so zu sagen als selbstgebautes ShowMessage)

Was willst du denn darin ausgeben, bzw. warum 'test'?

DGL-luke 11. Sep 2006 13:23

Re: space taste sperren und freigeben ohne onKeyPress
 
hmm...

du könntest ja ein Application.Processmessages einbauen, dann kannst du den abbruch mit einem button machen.

was für ein problem hast du genau? welches fenster schließt sich? gleich wieder?

Katrin_K 11. Sep 2006 13:24

Re: space taste sperren und freigeben ohne onKeyPress
 
Hi luigied
"test" bedeutet soviel wie "Ich habe noch keine konkreten Vorstellungen wie der Text aussehen wird und habe test als platzhalter benutzt".

Wie gesagt. Ich habe ein Bild das ich mathematisch verändere.
Darüber könne ich das Label mit der Textnachrich legen, aber ich möchte den Nebeneffect eines MessageDialog der die Anwendung pausieren läßt.
Sprich:

1. Bild verändert sich endlos.
2. User drückt taste --> Anwendung pausiert und Nachricht wird ausgegeben
3. user klickt das fenster weg -> Nachricht verschwindet und anwendung läuft weit

trotzdem danke luigied für deinen Beitrag.

LG Katrin

DGL-luke 11. Sep 2006 13:26

Re: space taste sperren und freigeben ohne onKeyPress
 
du könnest auf jeden fall eine eigenen form nehmen, die du mit ShowModal öffnest. die pausiert das programm auch. und da kannst du dann vielleicht dein leertastenproblem lösen ;)

Hawkeye219 11. Sep 2006 13:41

Re: space taste sperren und freigeben ohne onKeyPress
 
Hallo Katrin,

du könntest die Abfrage über GetAsyncKeyState durch eine TAction ersetzen, in welcher du die Leertaste als ShortCut einträgst. Diese Action muß nicht mit einem Control verknüpft sein, deine "Rechenschleife" sollte jedoch von Zeit zu Zeit die Nachrichtenverarbeitung über Application.ProcessMessages anstoßen.

Gruß Hawkeye

Katrin_K 11. Sep 2006 13:54

Re: space taste sperren und freigeben ohne onKeyPress
 
Danke DGL-luke

Super Idee.


Habe eine Dialogbox genommen und den Button ausgetauscht und es funktioniert.


Danke luke :-D


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