![]() |
IP Editfeld?
hi
wie kann man es bei einem Editfeld einstellen, dass man wie bei den netzwerkeinstellungen drei oder weniger Zahlen eingibt, dann ein Punkt ist. Muss ich dafür eine eigene Komponente schreiben (Abgeleitet von TEdit) oder wie macht man das? mfg |
Re: IP Editfeld?
In der JVCL gibt es schon eine Edit-Komponente dafür
|
Re: IP Editfeld?
aha, habe ich noch gar nicht gesehen, aber wie ist es dann, wenn ich es zb. mit Lazarus schreiben will
|
Re: IP Editfeld?
Ich weiß nicht ob Lazarus auch ein sogenanntest TMaskEdit hat.
Wenn dann benutze dies, da kannst du dan eine Maske einstellen mit punkten |
Re: IP Editfeld?
Hallo,
wenn es in Lazarus ein TMaskEdit gibt, kannst du es damit machen:
Delphi-Quellcode:
Allerdings sind dann auch unerlaubte Eingaben wie 999.999.999.999 möglich. Dann gibt's ja noch IPv6, was gesondert behandelt werden müsste.
MaskEdit.EditMask := '000\.000\.000\.000;0;'
Grüße Edit: Ohje bin ich langsam. Aber ich habe wenigstens einen Beispiel-Code dabei. *g* |
Re: IP Editfeld?
danke, ich schaue dann einmal nach
was bedeutet eigentlich die letzte null hier Zitat:
|
Re: IP Editfeld?
Die 0 bedeutet, dass die Leerzeichen auch als solche dargestellt werden: "___.___.___.___"
Würde dort einen 1 stehen, werden Leerzeichen zu Unterstrichen: "___.___.___.___" Edit: Da Leerzeichen im Forum bei der Darstellung untergehen, habe ich weiße Unterstriche fürs erste Beispiel genommen. Edit 2: Hm oder auch nicht, ich dachte immer das sei so, doch mein Delphi zeigt beides Mal Leerzeichen an. :oops: Edit 3: Ah, die 1 steht für "Literalzeichen speichern". :) |
Re: IP Editfeld?
hi
es gibt keine TMaskEdit (falls du eine Visuelle Komponenten meinst) was ist ein Literalzeichen? |
Re: IP Editfeld?
Bei torry.net gibt es auch jede Menge Komponenten für IP-Eingabe.
Aber keine Ahnung, ob die auch bei Lazarus laufen. |
Re: IP Editfeld?
ehrlich überlegt, um Das Programm auch auf Linux zum Laufen zu bringen, müsste ich die Einstellungen ändern (Netzwerkkonfiguration), daher werde ich es mit Delphi machen.
|
Re: IP Editfeld?
Du könntest aber auch ein ganz normales Editfeld nehmen und als Ausgleich eine erweiterte Funktionalität anbieten.
Wenn der Inhalt nur Ziffern und Punkte hat, wird er als IP-Adresse betrachtet. Alles andere wird als Rechnername (wie z.B. 'www.delphipraxis.net') betrachtet und über eine Namensauflösung in eine IP-Adresse verwandelt. |
Re: IP Editfeld?
Liste der Anhänge anzeigen (Anzahl: 1)
Solange es nur auf Windows laufen soll, ist es egal welche Compiler verwendet wird, da Windows sleber schon seit Jahren eine entsprechende Komponente anbietet.
leider fehlt diese nur in fast jeder Entwicklungsumgebung. :shock: >> ![]() ![]()
Delphi-Quellcode:
einige nette Funktionen/Makros > siehe PSDK
// InitCommonControlsEx + ICC_INTERNET_CLASSES
Const IPN_FIRST = UINT(-860); IPN_LAST = UINT(-879); Const WC_IPADDRESS = 'SysIPAddress32'; // IP Address Edit Control Messages IPM_CLEARADDRESS = WM_USER + 100; IPM_SETADDRESS = WM_USER + 101; IPM_GETADDRESS = WM_USER + 102; IPM_SETRANGE = WM_USER + 103; IPM_SETFOCUS = WM_USER + 104; IPM_ISBLANK = WM_USER + 105; // IP Address Edit Control Notification Codes IPN_FIELDCHANGED = IPN_FIRST - 0; Type NMIPADDRESS = packed Record {IPN_FIELDCHANGED} hdr: NMHDR; iField: _INT; iValue: _INT; End; pNMIPADDRESS = ^NMIPADDRESS;
Delphi-Quellcode:
Erstellung in nonVCL:
Function MAKEIPRANGE (Low, High: BYTE): DWORD;
Function MAKEIPADDRESS (B1, B2, B3, B4: BYTE): DWORD; Function FIRST_IPADDRESS (X: DWORD): BYTE; Function SECOND_IPADDRESS(X: DWORD): BYTE; Function THIRD_IPADDRESS (X: DWORD): BYTE; Function FOURTH_IPADDRESS(X: DWORD): BYTE;
Delphi-Quellcode:
'ne fertiges Objekt hab ich derzeit aber nicht rumliegen :|
Handle := CreateWindowExW(0, WC_IPADDRESS, nil, WS_CHILD or WS_VISIBLE
or WS_TABSTOP, Left, Top, Width, Height, Parent, DlgID, HInstance, nil); Jedenfalls versteckt sich grad irgendeinfehler in meiner Demo :? [add] 'nen leeres Projekt und dann dieses ... Ergebnis = siehe Anhang
Delphi-Quellcode:
const
WC_IPADDRESS = 'SysIPAddress32'; IPM_SETADDRESS = WM_USER + 101; procedure TForm1.FormCreate(Sender: TObject); var H: HWND; begin Randomize; H := CreateWindowEx(0, WC_IPADDRESS, nil, WS_CHILD or WS_VISIBLE or WS_TABSTOP, Left, Top, 120, 21, Handle, 0, HInstance, nil); SendMessage(H, IPM_SETADDRESS, 0, Random($7fffffff)); end; |
Re: IP Editfeld?
danke :thumb: es gehört zwar eher zu meinem anderen Thread, aber danke, ich versuche dann einmal den Fehler zu finden :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:54 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