An eine Position innerhalb einer Edit-Box springen



  • Ich möchte ein Edit für die Eingabe einer IP-Adresse nutzen.
    Diese soll folgendermaßen funktionieren:

    1. Das erste Zeichen eines IP-Blocks soll auf 2 begrenzt sein, das zweite auf 5 und das dritte auf 4
    2. wird ein Punkt eingegeben, soll der nächste Block angesprungen werden

    Wie kann ich eine bestimmte Position innerhalb eines Edit-Feldes anspringen?



  • Hi.

    Der Cursor kann mit

    Edit1->SelStart = 2;
    

    auf die, in diesem Fall, zweite Position gesetzt werden.
    Dazu muss die Edit fokussiert sein. Falls sie es nicht ist:

    Edit1->SetFocus;
    

    Edit:

    Edit1->SetFocus();
    


  • Hi CHLINDE,

    ob ein MaskEdit an der Stelle optimaler wäre ?

    mfg
    Peter



  • CHLINDE schrieb:

    [...] und das dritte auf 4

    255 ist absolut zulässig.

    Du könntest dir auch das entsprechende WinAPI-Control des InternetExplorers zunutze machen.

    HWND IPHandle;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
      IPHandle = CreateWindowEx(0, WC_IPADDRESS, "", WS_CHILD|WS_VISIBLE, 100, 20,
    							150, 20, Handle, 0, (HINSTANCE)HInstance, 0);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      long IPAddressEntered, BlankFields;
      BlankFields = SendMessage(IPHandle, IPM_GETADDRESS, 0,
    				(LPARAM)&IPAddressEntered);
    
      Caption = String(FIRST_IPADDRESS(IPAddressEntered)) + "." +
    			String(SECOND_IPADDRESS(IPAddressEntered)) + "." +
    			String(THIRD_IPADDRESS(IPAddressEntered)) + "." +
    			String(FOURTH_IPADDRESS(IPAddressEntered));
    }
    //---------------------------------------------------------------------------
    

    Hat einen Schönheitsfehler: die Schriftart des Adressfeldes entspricht nicht dem Rest der Form. Da müsste man auch noch mal die WinAPI bemühen, habe allerdings auf die Schnelle keinen Ansatzpunkt (VCL-verwöhnt 😮 😃 ).



  • Jansen schrieb:

    Du könntest dir auch das entsprechende WinAPI-Control des InternetExplorers zunutze machen.

    Es gibt auch Komponenten-Wrapper für dieses Steuerelement, z.B. in der JVCL.


Anmelden zum Antworten