![]() |
TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist
Hallo,
ich nutze ein TMaskEdit um eine IP-Adresse eingeben zu können. Dabei hat das MaskEdit unter EditMask die Maske: Zitat:
Zitat:
Zitat:
Gibt es noch eine andere Möglichkeit um zu prüfen ob im MaskEdit etwas vorhanden ist/eingegeben wurde? |
AW: TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist
was hältst Du hiervon?
Delphi-Quellcode:
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Commctrl; type TForm2 = class(TForm) ButtonCreateInput: TButton; ButtonAcceptInput: TButton; procedure ButtonCreateInputClick(Sender: TObject); procedure ButtonAcceptInputClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } MyIPEdit: HWND; MyIPAddress: integer; end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.ButtonCreateInputClick(Sender: TObject); Const x=10; y=10; w=130; h=22; begin MyIPAddress := MAKEIPADDRESS(127, 0, 0, 1); // Vorbelegung InitCommonControl(ICC_INTERNET_CLASSES); MyIPEdit := CreateWindow(WC_IPADDRESS, nil, WS_CHILD or WS_VISIBLE, x, y, w, h, self.Handle, 0, hInstance, nil); SendMessage(MyIPEdit, IPM_SETADDRESS, 0, MyIPAddress); // Vorbelegung eintragen wenn gewünscht SendMessage(MyIPEdit, IPM_SETFOCUS, 0, 0); end; procedure TForm2.ButtonAcceptInputClick(Sender: TObject); begin SendMessage(MyIPEdit, IPM_GETADDRESS, 0, longint(@MyIPAddress)); if MyIPAddress = 0 then begin Showmessage('Keine IP-Adresse'); SendMessage(MyIPEdit, IPM_SETFOCUS, 0, 0); end else Showmessage('IP: ' + IntToStr(FIRST_IPADDRESS(MyIPAddress)) + '.' + IntToStr (SECOND_IPADDRESS(MyIPAddress)) + '.' + IntToStr (THIRD_IPADDRESS(MyIPAddress)) + '.' + IntToStr (FOURTH_IPADDRESS(MyIPAddress)) + '.') end; end. |
AW: TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist
Zitat:
Wenn man eine IP-Adresse erwartet, dann kann man genausogut auch einen Rechnernamen zulassen. Sollte man tatsächlich nur eine IP-Adresse benötigen, dann könnte man bei Verlassen des Eingabefeldes den Rechnernamen auflösen und die IP in das Eingabefeld zurückschreiben. Manche Benutzer wollen die IP nicht eintippen, sondern kopieren sie über das Clipboard aus einer anderen Anwendung heraus. Hier wäre ein TMaskEdit ebenfalls störend (Benutzer denkt: "man warum muss ich jetzt die blöde IP abtippen, ich will's doch nur kopieren") Und ausserdem kommt ja irgendwann IPv6. Gut wenn der Programmierer mitgedacht hat und die Eingabe von IPv6-Adressen zulässt. Mit der Funktion WSAStringToAddress() kann man prüfen, ob eine IPv4, IPv6 oder etwas Anderes (Rechnername) vorliegt. |
AW: TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist
@Bummi: Schaut gut aus - nur gefällt mir dieses Windows-eigene-IP-Anzeige-Edit nicht wirklich - da bleib ich lieber bei meiner TMaskEdit-Logik (auch wenn sie mir nicht wirklich gefällt
Zitat:
|
AW: TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist
Via NonVCL kann man sich vom Windows auch direkt ein Edit für die IP-Eingabe besorgen (allerdingt nur IPv4).
Im Prinzip ist es ein NumEdit, mit 3 Punkten und 4 1- bis 3-stelligen Zahlen. Auslesen und befüllen kann man es dort direkt mit einem LongWord, bzw. einen 4-Byte-Record oder einem Array[0..3] of Byte. |
AW: TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist
@himitsu
#2 |
AW: TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist
:oops:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz