Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Problem mit IP-Eingabefld

  Alt 1. Aug 2009, 15:52
Ich würde empfehlen, das IP Address Control überhaupt nicht zu verwenden.
Auf den ersten Blick mag es logisch sein, eine streng formatierte Eingabe zu präsentieren.
Aber wenn man selbst das Control benützt, dann nerven die Einschränkungen doch gewaltig.
* Copy & Paste funktioniert nicht.
Man steckt immer in der ersten Zahl vor dem ersten Punkt fest und muss dann die IP-Adresse ABTIPPEN.
Also ich hasse es wenn ich eine IP abtippen muss.
* keine Möglichkeit einen Rechnernamen einzugeben
ich möchte bitteschön einen Rechnernamen eingeben können; das Programm soll die Namensauflösung durchführen
und die Eingabe durch die IP Adresse ersetzen. Soviel Komfort muss sein.
* Control reagiert nicht auf den Punkt
ich bin immer etwas irritiert, wenn ich die erste Zahl eingegeben habe und dann den Punkt eingebe:
nichts passiert
man muss Pfeil nach rechts drücken um zur 2. Zahl zu kommen.
Das Control sollte sich dem Benutzer anpassen nicht umgekehrt.

Alternative Lösung:
* ein normales TEdit verwenden
* das Editfeld zeigt folgenden Inhalt [ . . . ] solange es nicht den Fokus hat
und noch keine Eingabe getätigt wurde. Damit wird dem Benutzer gezeigt: "hier eine IP eingeben"
* erhält das Edit den Fokus, wird der Inhalt [ . . . ] gelöscht (Event OnEnter)
* wird das Feld verlassen (Event OnExit) wird geprüft, ob es sich um eine vollständige und korrekte IP handelt.
Sollte das Feld 3 Punkte und nur Ziffern enthalten, aber keine gültige IP sein - Exception werfen
Enthält das Feld genau 8 Hexzeichen? Umwandeln in dezimale IP.
Ansonsten wird versucht eine Namensauflösung durchzuführen.
Falls Namensauflösung erfolgreich: IP in Editfeld kopieren
Falls Namensauflösung nicht erfolgreich: Exception werfen (Feld nicht verlassen)


Diese Lösung verwendet keine Low-Lewel-Funktionen und ist auf jeder Windowsversion und sogar anderen Betriebssystemen lauffähig.

@Matze: Hey, das wollte ich auch schreiben, hatte es nur noch nicht abgeschickt
fork me on Github
  Mit Zitat antworten Zitat