Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Ascicode für "Entfernen" (https://www.delphipraxis.net/130561-ascicode-fuer-entfernen.html)

Samufi 10. Mär 2009 17:06


Ascicode für "Entfernen"
 
Hallo,
in meinem Programm möchte ich, dass beim Drücken der "Entfernen"-Taste eine Prozedur aufgerufen wird, wenn gerade eine bestimmte Listbox aktiviert ist. Ich habe also in die OnKeyPress-Prozedur der besagten ListBox geschrieben:
Delphi-Quellcode:
if Key=#? then ZeileLoeschenClick(Sender);
Natürlich habe ich an Stelle des Fragezeichens eine andere Zahl geschrieben, mit anderen Tasten (z.B. 13 für "Enter") funktioniert das ganz wunderbar, aber ich finde nicht den Code für "Entfernen". Um mir den herauszusuchen habe ich einfach probiert. Ich habe ein zweites Programm geschrieben, das mit 129 if-Klauseln alle Möglichkeiten durchgeht.
Delphi-Quellcode:
if Key=? then Ausgabe.Text:='?';
(Natürlich habe ich auch hier das Fragezeichen ersetzt)
Bei vielen Tasten funktioniert das auch Wunderbar, bloß für "Entfernen" scheint es keinen zu geben. Da nun die Frage an euch: Gibt es überhaupt eine Möglichkeit für "On-Entfernen"? Und wenn nicht, gibt es eine Möglichkeit, eine Prozedur mit einer Tastenkombination aufzurufen? Ich bin Dankbar für jeden Tipp!
Samufi

TurboMartin 10. Mär 2009 17:11

Re: Ascicode für "Entfernen"
 
Zitat:

Zitat von Samufi
Hallo,
in meinem Programm möchte ich, dass beim Drücken der "Entfernen"-Taste eine Prozedur aufgerufen wird, wenn gerade eine bestimmte Listbox aktiviert ist. Ich habe also in die OnKeyPress-Prozedur der besagten ListBox geschrieben:
Delphi-Quellcode:
if Key=#? then ZeileLoeschenClick(Sender);
Natürlich habe ich an Stelle des Fragezeichens eine andere Zahl geschrieben, mit anderen Tasten (z.B. 13 für "Enter") funktioniert das ganz wunderbar, aber ich finde nicht den Code für "Entfernen". Um mir den herauszusuchen habe ich einfach probiert. Ich habe ein zweites Programm geschrieben, das mit 129 if-Klauseln alle Möglichkeiten durchgeht.

:mrgreen:
Zitat:

Zitat von Samufi
Delphi-Quellcode:
if Key=? then Ausgabe.Text:='?';
(Natürlich habe ich auch hier das Fragezeichen ersetzt)
Bei vielen Tasten funktioniert das auch Wunderbar, bloß für "Entfernen" scheint es keinen zu geben. Da nun die Frage an euch: Gibt es überhaupt eine Möglichkeit für "On-Entfernen"? Und wenn nicht, gibt es eine Möglichkeit, eine Prozedur mit einer Tastenkombination aufzurufen? Ich bin Dankbar für jeden Tipp!
Samufi

Probier es doch mal VK_DEL oder so ähnlich. Hab halt hier kein Delphi um es zu testen.
Aber ich hatte hier in der DP auch mal von irgendjemanden ein Programm gesehen, welches sogar die Win-Taste rausfinden konnte, finde es grade aber nicht.

dfried 10. Mär 2009 17:14

Re: Ascicode für "Entfernen"
 
#127 ist vermutlich das was du suchst.

DeddyH 10. Mär 2009 17:15

Re: Ascicode für "Entfernen"
 
Könnte man sich ja mal ausgeben lassen ;)

jaenicke 10. Mär 2009 17:16

Re: Ascicode für "Entfernen"
 
Setz doch einfach einen Haltepunkt auf die Zeile und probiere es aus. ;-)

Noedel 10. Mär 2009 17:18

Re: Ascicode für "Entfernen"
 
Zitat:

Zitat von Samufi
Hallo,
in meinem Programm möchte ich, dass beim Drücken der "Entfernen"-Taste eine Prozedur aufgerufen wird, wenn gerade eine bestimmte Listbox aktiviert ist. Ich habe also in die OnKeyPress-Prozedur der besagten ListBox geschrieben:
Delphi-Quellcode:
if Key=#? then ZeileLoeschenClick(Sender);
Natürlich habe ich an Stelle des Fragezeichens eine andere Zahl geschrieben, mit anderen Tasten (z.B. 13 für "Enter") funktioniert das ganz wunderbar, aber ich finde nicht den Code für "Entfernen". Um mir den herauszusuchen habe ich einfach probiert. Ich habe ein zweites Programm geschrieben, das mit 129 if-Klauseln alle Möglichkeiten durchgeht.
Delphi-Quellcode:
if Key=? then Ausgabe.Text:='?';
(Natürlich habe ich auch hier das Fragezeichen ersetzt)
Bei vielen Tasten funktioniert das auch Wunderbar, bloß für "Entfernen" scheint es keinen zu geben. Da nun die Frage an euch: Gibt es überhaupt eine Möglichkeit für "On-Entfernen"? Und wenn nicht, gibt es eine Möglichkeit, eine Prozedur mit einer Tastenkombination aufzurufen? Ich bin Dankbar für jeden Tipp!
Samufi



Was hältst du denn davon, einfach mal die Ascii nummmer ausgeben zu lassen wenn du eine Taste probierst.... ?!

BAMatze 10. Mär 2009 17:21

Re: Ascicode für "Entfernen"
 
Ein ähnliches Problem hatte ich auch mal, als ich ein Edit-Feld nur für Zahlen zulassen wollte und die üblichen Funktionen wieder nachprogrammieren wollte (Backspace, Entfernen,...). Schau dir mal die beiden Threats an, die haben mir geholfen. Beitrag 1 und Beitrag 2

Wichtig beim Lösen meines Problems damals war, dass das übergebene Key ein Word-Format hatte, was z.B. bei der OnKeyDown-Funktion der Fall ist, hingegen bei der OnKeyPress-Funktion ist der übergebene Key ein Char. Als Char hab ich das damals nicht hinbekommen, was nicht bedeutet, dass es nicht funktionieren muss.

Wenn Key ein Word-Format hat, kannst du das vk_delete einfach abfragen.

jaenicke 10. Mär 2009 17:36

Re: Ascicode für "Entfernen"
 
Der Unterschied ist, dass OnKeyDown/Up nicht auf die sichtbaren Zeichen (inkl. z.B. Zeilenumbruch, Backspace) beschränkt sind, OnKeyPress aber nur diese sichtbaren Zeichen abfangen kann.

BAMatze 10. Mär 2009 17:42

Re: Ascicode für "Entfernen"
 
Zitat:

Zitat von jaenicke
Der Unterschied ist, dass OnKeyDown/Up nicht auf die sichtbaren Zeichen (inkl. z.B. Zeilenumbruch, Backspace) beschränkt sind, OnKeyPress aber nur diese sichtbaren Zeichen abfangen kann.

Aufgrund der Ähnlichkeit seines Problemes, wenn eine Taste in der ListBox gedrückt wird und meinem damaligen Problem eine gedrückte Taste im Edit, sollte ihn das vieleicht die Lösung geben. Denke mal er hat derzeit nur das Problem, was du ebend angesprochen hast (sichtbarkeit der Tastendrücke, die er abfragt) und mit der Änderung, die auch im ersten Beitrag dokumentiert ist, sollte das Problem lösbar sein.

Jakob Ullmann 10. Mär 2009 18:37

Re: Ascicode für "Entfernen"
 
ASCII-Code von Entfernen? Also entweder ist der Titel komisch oder ich bin jetzt völlig verrückt. :gruebel: ASCII gibt es doch nur für Zeichen. Also ist sicher der Tastencode für Entfernen gemeint, oder? Dann könnte man ja einfach ein Memo auf das Formular legen, daneben eine ListBox. Und dann schreiben:

Delphi-Quellcode:
procedure TFormular.mmoEingabeKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  ListBox.Items.Add(IntToStr(Key));
end;
Oder sonst ein Blick in Delphi-Referenz durchsuchenVirtuelle Tastencodes

Noedel 10. Mär 2009 18:51

Re: Ascicode für "Entfernen"
 
ehm, wenn ich mit delphi sieben diesen ungeheuer schweren code erstelle,
Delphi-Quellcode:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  showmessage(inttostr(ord(key)));
end;
bekomm ich "8" als Antwort bei Benutzung der Back Taste ("<-") :gruebel:

DeddyH 10. Mär 2009 18:55

Re: Ascicode für "Entfernen"
 
Es geht aber nicht um Backspace, sondern um die ENTF (oder DEL)-Taste.

alzaimar 10. Mär 2009 19:13

Re: Ascicode für "Entfernen"
 
Schaut Euch doch einfach mal die Definition von ASCII an. Danach dürfte klar sein, das es einige 'Zeichen' gibt, die zwar nicht druckbar sind, aber dennoch etwas bewirken. ASCII wurde u.A. für Fernschreiber und Drucker konzipiert, sodaß die 'Steuerzeichen' < #32 zum ...jawoll! Steuern dienen (Zeilenvorschub, Druckkopfrücklauf, Tabulator, usw). Insofern dient das 'BACKSPACE' #8, einen Druckkopf um ein Zeichen nach links zu verschieben, sodaß aus "-#8|" ein 'Plus' wird. und aus "=#88#8"" eine kleine Biene :stupid: (oder irgend ein anderes kleines dickes Käferchen). Zumindest auf Fernschreibern und anderen ähnlich antiken Landmaschinen.

Wie hier schon richtig in den Raum geworfen wurde, scheint der Fragesteller eher die entsprechenden virtuellen Tastencodes zu suchen. Das sind zwar auch Zahlen, haben aber nichts mit ASCII zu tun.

DeddyH 10. Mär 2009 19:24

Re: Ascicode für "Entfernen"
 
Zitat:

Mit Ihnen teilt meine Ente das Wasser nicht.
:mrgreen:
Darauf wollten wir ja dezent hinweisen.

alzaimar 10. Mär 2009 19:46

Re: Ascicode für "Entfernen"
 
Herr Müller-Lüdenscheidt! :mrgreen:

Samufi 10. Mär 2009 20:13

Re: Ascicode für "Entfernen"
 
Okay, danke erstmal für die vielen Antworten!
Ich erspar es mir und euch mal, auf jede Antwort einzeln zu antworten, auch wenn sich das vielleicht so gehören würde. Ich habe jetzt die Sache mit vk_delete in die onKeyDown Prozedur geschrieben und es funktioniert wunderbar. Vielen Dank für die Hilfe! Als Kleinsparer ist man halt immer so unvermündelt!

DeddyH 10. Mär 2009 20:14

Re: Ascicode für "Entfernen"
 
[OT]
Zitat:

Zitat von Samufi
Als Kleinsparer ist man halt immer so unvermündelt!

Loriot rulez :mrgreen: [/OT]


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