![]() |
Edit für eine IP Adresse
Hallo ihr,
ich habe danach gesucht, aber da die DP leider IP blockiert weiß ich nicht, ob ich es übersehen habe. Und zwar würde ich einfach eine IP-Adresse in einem Edit angeben. Also so wie es auch Windows an einigen Stellen tut. MfG xZise |
Re: Edit für eine IP Adresse
Guck mal da:
![]() Allerdings sollte dir klar sein, dass du dadurch implizit auf IPv4 limitierst, was per se vermutlich auch mit IPv6 laufen würde ;) Und du solltest darüber nachdenken, ob jemand, der weiß was eine IP ist, nicht auch ohne ein spezielles Eingabefeld dazu in der Lage ist, selbige einzugeben... |
Re: Edit für eine IP Adresse
TJvIPAddress, wenn du Jedis installiert hast.
Aber das ist wahrscheinlich auch auf IPv4 beschränkt, ich kann es gerade nicht nachschauen. |
Re: Edit für eine IP Adresse
Du kannst das Win-API IP-Adresseingabfeld benutzen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin // IP-Controll erstellen hIP := CreateWindowEx(WS_EX_CLIENTEDGE,WC_IPADDRESS,nil, WS_VISIBLE or WS_CHILD,80,51,125,21, Panel1.Handle,IDC_IPCTRL,hInstance,nil); // So f.cking what? if(hIp = 0) then begin MessageBox(self.Handle,'Fehler beim Erstellen des IP-Controls', nil,0); self.Close; end; // in die "WndProc" des Panels eingreifen OldPanelProc := POINTER(SetWindowLong(Panel1.Handle,GWL_WNDPROC, integer(@PanelWndProc))); // aktuellen Font für das IP-Control nutzen hFont := GetStockObject(DEFAULT_GUI_FONT); if(hFont <> 0) and (hIP <> 0) then SendMessage(hIP,WM_SETFONT,hFont,1); // in den Edits für die Ports nur Ziffern zu lassen // im Objektinspektor ist zusätzlich eine Begrenzung auf // 5 Stellen aktiv! SetWindowLong(edtStartPort.Handle, GWL_STYLE, GetWindowLong(edtStartPort.Handle, GWL_STYLE) or ES_NUMBER); SetWindowLong(edtEndPort.Handle, GWL_STYLE, GetWindowLong(edtEndPort.Handle, GWL_STYLE) or ES_NUMBER); end; // -- Panel (Subclassing) ---------------------------------------------------------- // // dient zum Aktivieren des Buttons "Scannen", wenn direkt eine // IP-Adresse angegeben wird var OldPanelProc : POINTER; function PanelWndProc(hPanel: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM): dword; stdcall; var dwIp : dword; begin Result := 0; case uMsg of WM_COMMAND: case HIWORD(wp) of // irgendein Edit wurde geändert EN_CHANGE: // es ist das IP-Control; na dann holen wir uns die IP // doch mal if(LOWORD(wp) = IDC_IPCTRL) then begin SendMessage(hIp,IPM_GETADDRESS,0,LPARAM(@dwIp)); Form1.btnScan.Enabled := (dwIp <> 0); end // hm, interessiert uns nicht; soll sich Windows // darum kümmern else Result := CallWindowProc(OldPanelProc,hPanel,uMsg,wp,lp); // irgendeine andere Nachricht als EN_CHANGE? // pöh! wozu gibt´s Windows? else Result := CallWindowProc(OldPanelProc,hPanel,uMsg,wp,lp); end; WM_NOTIFY: if(PNMIpAddress(lp)^.hdr.Code = IPN_FIELDCHANGED) then begin SendMessage(hIp,IPM_GETADDRESS,0,LPARAM(@dwIp)); Form1.btnScan.Enabled := (dwIp <> 0); end; else Result := CallWindowProc(OldPanelProc,hPanel,uMsg,wp,lp); end; end; |
Re: Edit für eine IP Adresse
Zitat:
Aber du kannst auch jederzeit die Google Suche verwenden: ![]() |
Re: Edit für eine IP Adresse
Zitat:
MfG xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 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