![]() |
Re: Taschenrechner über Tastatur bedienen
Mal zur erläuterung was deine Methode macht:
Du setzt easterstring auf '' dann ergänzt du die gedrückte Taste zu deinem String, z.B: 'T' dann vergleichst du Das erste Zeichen des Strings (es ist ja nur ein Zeichen drin) mit dem String selber, und das ergibt natürlich immer true, also wird die message ausgegeben |
Re: Taschenrechner über Tastatur bedienen
Hm... dann weiss ich nicht, wie ichs richtig machen soll. Ich meine, wenn ichs mit ner If-Abfrage löse, klappts auch nicht:
Code:
Ich kriegs einfach nicht hin. :wall:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: char);
var easterstring:string; begin easterstring:=''; case key of '1' : button1.click; '2' : button2.click; '3' : button3.click; '4' : button4.click; '5' : button5.click; '6' : button6.click; '7' : button7.click; '8' : button8.click; '9' : button9.click; '0' : button10.click; ',' : button11.click; '.' : button11.click; 'n' : button12.click; chr(13) : button13.click; '-' : button14.click; '+' : button15.click; '*' : button16.click; '/' : button17.click; chr(8) : button19.click; 'p' : button20.click; 'w' : button21.click; 'q' : button22.click; 'r' : button23.click; else begin easterstring:=easterstring+key; if Copy('test', 1, Length(easterstring))<>easterstring then easterstring:=''; if easterstring='test' then showmessage('hui'); end; end; end; Gruß Stefan |
Re: Taschenrechner über Tastatur bedienen
Hallo Stefan,
die Variable easterstring mußt du im private Teil des Formulars unterbringen, damit ihr Inhalt mehrere Aufrufe der FormKeyPress-Routine überlebt. Der Löschbefehl zu Beginn der Routine schadet auch nur, oder? Probiere es einmal so:
Delphi-Quellcode:
Wenn der MAGICTEXT auch Zeichen enthalten soll, die für die Bedienung der Buttons benötigt werden, dann solltest du die Überprüfung aus dem ELSE-Zweig herausnehmen und hinter die CASE-Anweisung verschieben.
type
TForm1 = class (TForm) ... private easterstring : string; end; procedure TForm1.FormKeyPress(Sender: TObject; var Key: char); const MAGICTEXT = 'test'; begin case key of '1' : button1.click; ... 'r' : button23.click; else easterstring := easterstring + key; if (easterstring <> Copy(MAGICTEXT, 1, Length(easterstring)) then easterstring := '' else if (easterstring = MAGICTEXT) then begin showmessage('hui'); easterstring := ''; end; end; end; Gruß Hawkeye |
Re: Taschenrechner über Tastatur bedienen
Ups, nicht zu fassen wie blöd ich manchmal bin :oops: . Jetzt kann ich es aber nicht mehr auf den armen Schlauch schieben... :mrgreen:
Naja, ich danke dir auf jeden Fall für die Hilfe. Gruß Stefan Edit: Aber nur mal so aus reiner Neugier, wie würde es denn funktionieren, wenn man auf Tasten reagieren will, die gleichzeitig gedrückt werden? Ich meine, dass z.B. wenn man t,e,s und t gleichzeitig drückt, wird eine Messagebox aufgerufen. Oder ist das zu komplex? |
Re: Taschenrechner über Tastatur bedienen
Da ich immer noch auf Antwort warte, nehme ich mal an, dass ihr diesen Thread vergessen habt.
Hier die noch offene Frage: Zitat:
Bitte um Verständnis und baldige Antwort. Gruß Stefan |
Re: Taschenrechner über Tastatur bedienen
Das solltest du dann am Besten mit einem Timer machen und
![]() |
Re: Taschenrechner über Tastatur bedienen
Ok, vielen Dank, ich werd mich dann mal schlau machen.
Gruß Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 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