Announcement

Collapse
No announcement yet.

Word &Key nach AnsiString

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Word &Key nach AnsiString

    Moin!

    Ich mal wieder ;-)
    Wie bekomme ich denn möglichst bequem den Rückgabewert WORD &Key aus einem OnKeyUp-Ereignis in den entsprechenden AnsiString gewandelt?
    In der Hilfe steht bei mir nur
    Der Parameter Key bezeichnet die Taste auf der Tastatur. Verwenden Sie für nicht alphanumerische Tasten die virtuellen Tastencodes, um die gedrückte Taste zu bezeichnen. Weitere Informationen finden Sie unter Virtuelle Tastencodes.
    Wenn ich allerdings nach virtuelle Tastencodes suche, finde ich keinen Eintrag in meiner Hilfe :-(

    Ein bisschen Abhilfe schafft sowas, aber das funktioniert natürlich nur mit Buchstaben:
    Code:
    void __fastcall TForm1::RichEdit1KeyUp(TObject *Sender, WORD &Key,
    	  TShiftState Shift)
    {
    AnsiString k;
    char kk;
    int sh;
    
    kk=Key;
    k=kk;
    sh=Shift.ToInt();
    
    if(!sh)
    	k=k.LowerCase();
    else
    	k=k.UpperCase();
    
    ComPort1->WriteStr(k);
    }
    Wie gesagt, im Endeffekt brauch ich die Zuordnung Taste auf ASCII-Zeichen. Da muss es doch bereits ein Funktion dafür geben, oder?

    Gruß, und danke!

  • #2
    http://www.marquardtnet.info/cecke/q...quicky_23.html

    Wie gesagt, im Endeffekt brauch ich die Zuordnung Taste auf ASCII-Zeichen.
    Der Code ist der ASCII Code. (65 = A)
    Christian

    Comment


    • #3
      Danke, hier gibts also eine Zuordnung für die nicht-alphanumerischen.
      Aber wie komme ich denn z. B. an so nette Dinger wie ein Fragezeichen('?') ?
      Im TKeyEvent bekomem ich für '?' Key=219, im ASCII code ist '?' aber 63.

      Comment


      • #4
        Ich weiss jetzt nicht was in TKeyEvent der Key für ein Code ist ScanCode?
        Christian

        Comment


        • #5
          Das ist dummerweise einfach nur WORD:

          (Sender: TObject; var Key: Word; Shift: TShiftState) ( TKeyEvent)();
          Zuletzt editiert von bodo2407; 08.12.2009, 11:20. Reason: Tippfehler korrigiert

          Comment


          • #6
            Ich habe hier keinen Builder, es muss doch in der Hilfe die Beschreibung der Parameter stehen.
            Christian

            Comment


            • #7
              Nee, leider machts das nicht so richtig...
              Das ist die Beschreibung für das Event:
              Tritt auf, wenn der Benutzer eine zuvor gedrückte Taste loslässt.

              Pascal
              property OnKeyUp;
              C++
              __property OnKeyUp;
              Beschreibung
              Mit einer Ereignisbehandlungsroutine für OnKeyUp können Sie spezielle Aktionen definieren, die beim Loslassen einer Taste durch den Benutzer erfolgen sollen. Die Ereignisbehandlungsroutine für OnKeyUp kann auf alle Tasten sowie Kombinationen mit Umschalt, Alt und Strg und auf Funktionstasten antworten.

              Der Typ TKeyEvent zeigt auf eine Methode, die Tastaturereignisse verarbeitet. Der Parameter Key bezeichnet die Taste auf der Tastatur. Verwenden Sie für nicht alphanumerische Tasten die virtuellen Tastencodes, um die gedrückte Taste zu bezeichnen. Weitere Informationen finden Sie unter Virtuelle Tastencodes.

              Der Parameter Shift gibt an, ob auch die Tasten Umschalt, Alt oder Strg gedrückt wurden.



              Siehe auch
              OnKeyDown

              OnKeyPress
              Hier die Beschreibung für TKeyEvent:
              Pascal
              TKeyEvent = procedure (Sender: TObject; var Key: Word; Shift: TShiftState) of object;
              C++
              (Sender: TObject; var Key: Word; Shift: TShiftState) ( TKeyEvent)();
              Datei
              Controls

              Beschreibung
              Das ist der Typ Controls.TKeyEvent.
              Das ist mir leider etwas zu rudimentär ;-)
              Habe wirklich ALLES aus der Hilfe hier reinkopiert.

              Comment


              • #8
                Verwenden Sie für nicht alphanumerische Tasten die virtuellen Tastencodes
                Offenbar ist dann auch der Tastencode
                Christian

                Comment


                • #9
                  Aber es gibt für die Sonderzeichen doch keine virtuellen Tastencodes, sondern nur für Steuerzeichen...

                  Comment


                  • #10
                    Schau mal im OnKeyPress nach. Da müsste der ASCII Code als Parameter übermittelt werden.
                    Christian

                    Comment


                    • #11
                      Schau mal im OnKeyPress nach. Da müsste der ASCII Code als Parameter übermittelt werden.
                      Du hast Recht! Danke! :-)
                      Ich war davon ausgegangen, dass im OnKeyUp, OnKeyDown und OnKeyPress die Parameterliste dieselbe ist.

                      Nochmal danke!!!

                      Comment


                      • #12
                        Originally posted by bodo2407 View Post
                        ....ComPort1->WriteStr(k);
                        ComPort ... Ist das eine Komponent?

                        Woher?

                        Comment


                        • #13
                          Originally posted by bodo2407 View Post
                          AnsiString k;
                          char kk;
                          Diese mix von char und AnsiString sieht nicht shön aus. Es geht auch so:
                          Code:
                          void __fastcall TForm1::RichEdit1KeyPress(TObject *Sender, char &Key)
                          {
                            AnsiString asKey = " ";  // platz fuer eine buchstabe
                          
                            asKey[1] = Key;
                          
                            ComPort11->WriteStr(asKey);
                          }
                          oder
                          Code:
                          void __fastcall TForm1::RichEdit1KeyPress(TObject *Sender, char &Key)
                          {
                            ComPort11->WriteStr(AnsiString(Key));
                          }

                          Comment


                          • #14
                            @bodo
                            Christian hat, ohne weitere vermeldung, meine Frage ueber TComPort hier abgelegt:
                            http://entwickler-forum.de/showthread.php?t=59173

                            Wass meine Frage mit Komponentenentwicklung zu tun hat bleibt jeweils eine Frage.

                            Comment


                            • #15
                              @Hans G.

                              Was deine Frage über die TComPort-Komponente NICHT mit der Komponentenentwicklung zu tun hat, erklärt sich mir nicht.
                              Was deine Frage über die TComPort-Komponente mit einem ANSI-String zu tun hat (dieser Thread) erklärt sich mir ebenfalls nicht

                              Weiterhin hätte eine einfache Suche über die heutigen Beiträge

                              http://entwickler-forum.de/search.php?searchid=410316

                              dir schnell einen Überblick verschafft.

                              Das nächste Mal werde ich eine entsprechende Nachricht hinterlassen
                              Zuletzt editiert von Christian Marquardt; 08.12.2009, 22:44.
                              Christian

                              Comment

                              Working...
                              X