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 werdenWie 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.