Delphi-PRAXiS
Seite 6 von 6   « Erste     456   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Taschenrechner über Tastatur bedienen (https://www.delphipraxis.net/84048-taschenrechner-ueber-tastatur-bedienen.html)

Tormentor32 15. Jan 2007 07:16

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

Stefan92 15. Jan 2007 18:42

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:
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;
Ich kriegs einfach nicht hin. :wall:

Gruß

Stefan

Hawkeye219 15. Jan 2007 19:08

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:
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;
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.

Gruß Hawkeye

Stefan92 16. Jan 2007 18:57

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?

Stefan92 19. Jan 2007 14:34

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:

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?
Ich verwende daher absichtlich nicht die Editfunktion, um den Thread in die aktuelle Themenliste zu bringen.
Bitte um Verständnis und baldige Antwort.

Gruß

Stefan

inherited 19. Jan 2007 15:41

Re: Taschenrechner über Tastatur bedienen
 
Das solltest du dann am Besten mit einem Timer machen und Hier im Forum suchenGetAsyncKeyState benutzen

Stefan92 19. Jan 2007 21:08

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.
Seite 6 von 6   « Erste     456   

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