AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist
Thema durchsuchen
Ansicht
Themen-Optionen

TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist

Ein Thema von Helmi · begonnen am 25. Sep 2012 · letzter Beitrag vom 26. Sep 2012
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#1

TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist

  Alt 25. Sep 2012, 21:42
Hallo,

ich nutze ein TMaskEdit um eine IP-Adresse eingeben zu können.

Dabei hat das MaskEdit unter EditMask die Maske:
Zitat:
099.099.099.099;1;_
Wenn jetzt nichts eingegeben wurde, dann erhalte ich als Text:
Zitat:
. . .
Momentan entfern ich alle Leerzeichen und prüf danach auf
Zitat:
...
In diesem Falle ist für mich das MaskEdit leer.

Gibt es noch eine andere Möglichkeit um zu prüfen ob im MaskEdit etwas vorhanden ist/eingegeben wurde?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist

  Alt 25. Sep 2012, 23:15
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.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

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

AW: TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist

  Alt 26. Sep 2012, 04:53
ich nutze ein TMaskEdit um eine IP-Adresse eingeben zu können.
Also ich bin im Laufe der Zeit von derlei restiktiven Eingaben abgekommen.
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.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#4

AW: TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist

  Alt 26. Sep 2012, 10:44
@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

ich nutze ein TMaskEdit um eine IP-Adresse eingeben zu können.
Also ich bin im Laufe der Zeit von derlei restiktiven Eingaben abgekommen.
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.
Ich gib dir ja recht - aber in meinem Falle kann man nur eine IP-Adresse angeben - und in diesem Falle auch nur eine IPv4
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.069 Beiträge
 
Delphi 12 Athens
 
#5

AW: TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist

  Alt 26. Sep 2012, 13:41
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist

  Alt 26. Sep 2012, 13:59
@himitsu

#2
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.069 Beiträge
 
Delphi 12 Athens
 
#7

AW: TMaskEdit mit Maske prüfen ob Eingabe erfolgt ist

  Alt 26. Sep 2012, 14:37
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz