Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ssAlt+NUMPAD1 (https://www.delphipraxis.net/80529-ssalt-numpad1.html)

Karstadt 10. Nov 2006 12:36


ssAlt+NUMPAD1
 
Hallo. Wenn ich ALT+NUMPAD1 Drücken wills muss eine aktion passieren.. das mache ich so..

Delphi-Quellcode:
   If Shift = [ssAlt] Then
   begin
     // Blatt
     IF (Key = VK_NUMPAD1) OR (KEY = 49) Then
     begin
       cbx_blatt_bild.ItemIndex := 0;
       cbx_blatt_bild.OnChange(self);
       key := 0;
     end;
Wenn ich aber die NUMPAD1 losslasse passiert folgendes (in eien Edit) ☺☻♥.. wie kann ich das abfangen und diesen zeichen löschen..

DGL-luke 10. Nov 2006 12:45

Re: ssAlt+NUMPAD1
 
Bei Alt+Numpad werden sonderzeichen gezeichnet. z.b. alt + (0-0-1-6-9): ©

Du solltest diese Keys also nicht über ein Textfeld abfangen.

Karstadt 10. Nov 2006 12:50

Re: ssAlt+NUMPAD1
 
Du solltest diese Keys also nicht über ein Textfeld abfangen.

das lässt sich in meine Anwendung nicht anders realisieren.. wie kann ich die trotzdem abfangen? und blocken ? bzw. nur blocken...

DGL-luke 10. Nov 2006 12:54

Re: ssAlt+NUMPAD1
 
Hmm... ich glaube du könntest die keys im OnKeyPress-Eregnis abfangen, indem du sie begrenzt. du solltest dir dazu die ganze ASCII-Tabelle ansehen. ( Bei Google suchenASCII chart )

Hawkeye219 10. Nov 2006 13:09

Re: ssAlt+NUMPAD1
 
Eine mögliche Alternative ist der Einsatz einer TAction. Im OnCreate der Form kannst du den oder die ShortCuts zuweisen, im OnExecute der Action bei Bedarf das aktive Control überprüfen.

Delphi-Quellcode:
// uses Menus

procedure TForm1.FormCreate (Sender: TObject);
begin
  Action1.ShortCut := ShortCut(VK_NUMPAD1, [ssAlt]);
  Action1.SecondaryShortCuts.Add(ShortCutToText(ShortCut(Ord('1'), [ssAlt])));
end;

procedure TForm1.Action1Execute (Sender: TObject);
begin
  IF (ActiveControl = Edit1) THEN
    Caption := IntToStr(GetTickCount);
end;
Gruß Hawkeye

3_of_8 10. Nov 2006 13:11

Re: ssAlt+NUMPAD1
 
...oder ein Timer, der mit GetAsyncKeyState das ganze überprüft, in Abhängigkeit davon, ob die Form den Fokus hat.

Karstadt 10. Nov 2006 15:26

Re: ssAlt+NUMPAD1
 
hallo.

1) Danke für ihre Hilfe!

2) Da ich nur Zahlen eingeben darf habe ich das so gelöst.

Delphi-Quellcode:
procedure Tf_schadensbilderbuchung_innen.led_schadennrKeyPress(
  Sender: TObject; var Key: Char);
    var tr_integer: Integer;
  begin
  If (not TryStrToInt(Key,tr_integer)) and (Key <> chr(VK_BACK)) Then Key := Chr(0);
end;
so sollte das problemlos funktionieren... oder ?


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