Tastatureingabe... Problem gelöst. Danke.



  • Hallo,
    ich möchte die Tastatureingabe abfangen.
    Wollte das So machen, das man alles int Edit1 eintragen kann aber in Edit2 nur
    Buchstaben und Zahlen schreibt. Keine Sonderzeichen und natürlich auch kein Leerzeichen.

    void __fastcall TForm1::Edit1KeyUp(TObject *Sender, WORD &Key,
    	  TShiftState Shift)
    {
    String text;
     if ((Key<65)||(Key>90)&&(Key<97)||(Key>122)) {
    	// text = Key;
        // 
     }
     Edit2->Text = text;
    }
    

    Ich weiss nicht wie ich dass mache das die Werte dann in Edit2 geschrieben wird.
    Danke.



  • void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
    {
       if((Key<'0'||Key>'9')&&Key!=8) Key=0;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Edit1KeyUp(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
       Edit2->Text = Edit1->Text;
    }
    


  • Hi,
    das wollte ich ja nicht so.
    Edit1 soll stehen :

    Hallö ihr Da !

    und in Edit2 so raus kommen:

    Hallihrda

    Kein Leerzeichen und kein Sonderzeichen.
    Bin auch für andere Lösung offen die das Problem lösen können.



  • Ich weiß nicht ob das so die feine Art ist, aber es geht so wie Du es wolltest:

    void __fastcall TForm1::Edit1KeyUp(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
    AnsiString Text = Edit1->Text;
    AnsiString Zeichen[25];
    AnsiString Ausgabe="                            ";
    int zn_leer=1;
    
    // Ersetzungsliste (musst Du noch ergänzen!)
    AnsiString RepStr[20] = { "ö", "ä","ü", "(", ".","!","","ß",";","1","2","3","4","5","6","7","8","9","0", "Text" };
    
    // alle AnsiString im Array suchen und ersetzen
    for (int i = 0; i < 20; i++)
      {
      Text = StringReplace(Text, RepStr[i], " ", TReplaceFlags() << rfReplaceAll);
      }
    
    for (int i = 1; i < 25;i++)
      {
          if (Text.SubString(i,1)!= " ")
          {
          Zeichen[zn_leer]=Text.SubString(i,1);
          zn_leer++;
          }
          else;
      };
    
    for (int i = 1; i < 25; i++)
      {
      Ausgabe= StringReplace(Ausgabe,Ausgabe.SubString(i,1),Zeichen[i],TReplaceFlags());
    
      }
    
    Edit2->Text=Ausgabe.Trim();
    }
    

    Gruß myerscola



  • void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
    {
       if(Key>64&&Key<124) Edit2->Text = Edit2->Text + Key;
    }
    


  • Danke euch.


Log in to reply