в данном случае отключить клиента можно только "попросив" его самого сделать это. То есть при выборе тункта меню "отключить", сервак посылает выбранному клиенту особое сообщение с просьбой отключиться. Клиент, распознав такое сообщение, тупо генерит событие doClose.
------------ Дoбавленo в 22.51:
вот сервак
Add(MainForm,6678,329,119) { Left=312 Top=322 Height=215 link(onCreate,20680:doOpen,[]) } Add(TCP_Server,20680,385,133) { Port=180 Point(doSendByIp) link(onRead,4225999:doAdd,[(431,139)(431,83)]) link(onConnect,12624536:doAdd,[]) link(onDisconnect,3116593:doEvent1,[]) } Add(MT_AddData,3877925,252,154) { PColor(onAdd,16711680) link(onAdd,16328597:doWork2,[]) link(Data1,695799:Text,[(258,135)(237,135)]) link(Data2,4056195:Text,[(265,135)(286,135)]) } Add(Edit,695799,231,91) { Left=65 Top=135 Text="данные" } Add(Edit,4056195,280,91) { Left=150 Top=135 Width=60 Text="127.0.0.1" } Add(Button,9197703,189,154) { Left=225 Top=135 link(onClick,3877925:doAdd,[]) } Add(ListBox,12624536,525,140) { Left=30 Top=15 Width=75 Height=65 Font=[Arial,8,0,0,1] Point(onMouseDown) Point(String) Point(doSelectString) Point(Index) link(onMouseDown,4117335:doEvent1,[]) } Add(MouseEvent,3494615,658,154) { } Add(Hub,4117335,581,154) { link(onEvent1,3494615:doClick,[]) link(onEvent2,5147414:doTimer,[(602,167)(602,209)]) } Add(PopupMenu,14537455,658,196) { Menu=#9:отключить| link(onClick,4493895:doEvent,[]) } Add(IndexToChanel,4493895,707,196) { link(onEvent1,15718527:doAdd,[(747,202)(747,302)(282,302)(282,265)]) } Add(Timer,5147414,609,203) { Interval=100 Enable=1 AutoStop=1 link(onTimer,14537455:doPopupHere,[]) } Add(MT_AddData,15718527,294,259) { PColor(onAdd,16711680) link(onAdd,16328597:doWork3,[(361,265)]) link(Data1,1567224:Value,[]) link(Data2,12624536:String,[(307,229)(552,229)]) } Add(HubEx,16328597,357,147) { PColor(onEvent,16711680) link(onEvent,20680:doSendByIp,[]) } Add(Memory,1567224,294,189) { Default=String(слушай, отключись пожалуйста, очень тебя пршу..) } Add(RichEdit,4225999,476,77) { Left=135 Top=10 Width=120 Height=90 ScrollBars=3 } Add(Hub,3116593,441,147) { link(onEvent1,12624536:doSelectString,[(463,153)(463,188)]) link(onEvent2,13412409:doData,[]) } Add(DoData,13412409,476,154) { link(onEventData,12624536:doDelete,[]) link(Data,12624536:Index,[(482,130)(572,130)(572,204)(559,204)]) }
и клиент
Add(MainForm,2953706,357,196) { link(onCreate,96010:doOpen,[]) } Add(Case,3589760,504,210) { Value=String(слушай, отключись пожалуйста, очень тебя пршу..) link(onNextCase,14313:doAdd,[]) link(onTrue,7973874:doEvent1,[]) } Add(TCP_Client,96010,441,210) { Port=180 IP="127.0.0.1" link(onRead,3589760:doCase,[]) } Add(ListBox,14313,595,210) { Left=265 Top=15 Width=110 Height=70 Font=[Arial,8,0,0,1] } Add(Edit,14281849,357,245) { Left=270 Top=100 Width=100 link(onEnter,96010:doSend,[(415,258)(415,230)]) } Add(Hub,7973874,553,217) { link(onEvent1,96010:doClose,[(580,223)(580,189)(430,189)(430,223)]) link(onEvent2,2953706:doCaption,[(582,230)(582,300)(343,300)(343,202)]) }
, делал на скорую руку (показывает только принцип) - проверяй..
|