[ Passwd @ 03.01.2006. 18:17 ] @
Napravim komponentu, ima 3 buttona i jedan memo..i napravim paket i dodam ga i kad ga stavim na formu, na formi se ne pojavi nista vec mi samo javi gresku 'Control " has no parent window'!!! Na ovaj sam nacin radio i proslu komponentu (koja me isto zezala al je radilo na ovaj nacin, al ova ipak zeza)..bilo bi pozeljno sto brzi odgovor :)) Evo cijeli kod: Code: unit PasswdSK; interface uses SysUtils, Classes, Controls, ExtCtrls, Dialogs, WinSock,StdCtrls; type TPasswdSK = class(TCustomPanel) private { Private declarations } procedure ServerAktivan(Sender: TObject); procedure Spoji(Sender: TObject); procedure IPlist(Sender: TObject); protected { Protected declarations } public { Public declarations } ServerAktivanBtn:TButton; SpojiBtn:TButton; IPBtn:TButton; IPLst:TMemo; constructor Create(AOwner:TComponent); override; destructor Destroy; override; published { Published declarations } property Align; property Anchors; property AutoSize; property BiDiMode; property Color nodefault; property Constraints; property DragCursor; property DragKind; property DragMode; property Enabled; property Font; property ParentBiDiMode; property ParentColor; property ParentFont; property ParentShowHint; property PopupMenu; property ShowHint; property OnClick; property OnContextPopup; property OnDblClick; property OnDragDrop; property OnDragOver; property OnEndDock; property OnEndDrag; property OnMouseDown; property OnMouseMove; property OnMouseUp; property OnStartDock; property OnStartDrag; end; procedure Register; implementation procedure TPasswdSK.ServerAktivan(Sender: TObject); var sock_data:TWSAData; sock_error:integer; m_socket,AcceptSocket:TSocket; ServerService:SockAddr_in; begin sock_error:=WSAStartUp(2,sock_data); if sock_error<>0 then begin MessageDlg('Error 1',mtError,[mbOK],0); WSACleanup; exit; end else begin //ako je dobro m_socket:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if m_socket=SOCKET_ERROR then begin MessageDlg('Error 2',mtInformation,[mbOK],0); WSACleanup; exit; end else begin //ako je dobro ServerService.sin_family:=AF_INET; ServerService.sin_addr.s_addr:=inet_addr('127.0.0.1'); ServerService.sin_port:=htons(13); try bind(m_socket,ServerService,SizeOf(ServerService)); except begin MessageDlg('Error 3',mtError,[mbOK],0); end; end; listen(m_socket,1); AcceptSocket:=SOCKET_ERROR; MessageDlg('Cekam klijenta..',mtInformation,[mbOK],0); while AcceptSocket=SOCKET_ERROR do begin AcceptSocket:=accept(m_socket,nil,nil); end; MessageDlg('Klijent je uspjesno spojen!',mtInformation,[mbOK],0); end; end; WSACleanup; end; procedure TPasswdSK.Spoji(Sender: TObject); var sock_data:TWSAData; sock_error:integer; m_socket:TSocket; ServerService:SockAddr_in; begin sock_error:=WSAStartUp(2,sock_data); if sock_error<>0 then begin MessageDlg('Error 1',mtError,[mbOK],0); WSACleanup; exit; end else begin //ako je dobro m_socket:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if m_socket=SOCKET_ERROR then begin MessageDlg('Error 2',mtInformation,[mbOK],0); WSACleanup; exit; end else begin //ako je dobro ServerService.sin_family:=AF_INET; ServerService.sin_addr.s_addr:=inet_addr('127.0.0.1'); ServerService.sin_port:=htons(13); try Connect(m_socket,ServerService,SizeOf(ServerService)); MessageDlg('Uspjesno smo spojeni sa serverom!',mtInformation,[mbOK],0); except begin MessageDlg('Error 3',mtError,[mbOK],0); end; end; end; end; WSACleanup; end; function GetIp:TStrings; type TaPInAddr = array[0..10] of PInAddr; PaPInAddr = ^TaPInAddr; var phe: PHostEnt; pptr: PaPInAddr; Buffer: array[0..63] of Char; I: Integer; GInitData: TWSAData; begin WSAStartup($101, GInitData); Result := TstringList.Create; Result.Clear; GetHostName(Buffer, SizeOf(Buffer)); phe := GetHostByName(buffer); if phe = nil then Exit; pPtr := PaPInAddr(phe^.h_addr_list); I := 0; while pPtr^[I] <> nil do begin Result.Add(inet_ntoa(pptr^[I]^)); Inc(I); end; WSACleanup; end; procedure TPasswdSK.IPlist(Sender: TObject); begin IPLst.Lines:=GetIp; end; constructor TPasswdSK.Create(AOwner:TComponent); begin inherited Create(AOwner); ServerAktivanBtn:=TButton.Create(self); ServerAktivanBtn.Parent:=self; with ServerAktivanBtn do begin Top:=10; Left:=10; Caption:='ServerAktivan'; OnClick:=ServerAktivan; end; SpojiBtn:=TButton.Create(self); SpojiBtn.Parent:=self; with SpojiBtn do begin Top:=60; Left:=10; Caption:='Spoji'; OnClick:=Spoji; end; IPBtn:=TButton.Create(self); IPBtn.Parent:=self; with IPBtn do begin Top:=110; Left:=10; Caption:='IP adrese'; OnClick:=IPList; end; IPLst:=TMemo.Create(self); IPLst.Parent:=self; with IPLst do begin Top:=160; Left:=10; Clear; end; Height:=300; Width:=300; end; destructor TPasswdSK.Destroy; begin inherited Destroy; end; procedure Register; begin RegisterComponents('Samples', [TPasswdSK]); end; end. Unaprijed hvala, p0z!!! |