Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.17;
Скачать: CL | DM;

Вниз

События...   Найти похожие ветки 

 
WingGod   (2003-01-24 02:45) [0]

Расмотрим ситуацию...
Формы нет (т.е. кодим прям в проэкте).
Нужно создать компонент TClientSocket, с этим проблем нет,
Но вот как от него поймать события, типа OnConnect, OnRead,OnWrite...

если ктонить понял плиз хелп...


 
Danlicha ©   (2003-01-24 02:59) [1]

Написать метод объекта с параметрами, такие требует этот сокет от обработчика и присвоить этот метод событию (а это не что иное, как просто свойство типа метод). Удачи!


 
А   (2003-01-24 03:52) [2]

Удалено модератором


 
Viktor Kushnir ©   (2003-01-24 08:47) [3]

Тороян? :) А вообще можно TClientSocet в отдельном модуле UNIT инициализировать. И там сделать то, что посоветывал Danlicha ©


 
Digitman ©   (2003-01-24 09:52) [4]

нет смысла отказываться от формы при использовании TClientSocket.
потому что этот объект так или иначе все равно использует модуль Forms


 
nikulin ©   (2003-01-24 10:03) [5]

2 Digitman

А в модуле ScktComp вроде нет ссылки на Forms...

Где же TClientSocket использует Forms????


 
Digitman ©   (2003-01-24 10:40) [6]

Как это нет ? А это что :

(Д5)

implementation

uses Forms,..; ?

печально только то, что подцепляется модуль Forms
ради вызова только двух ф-ций - AllocateHWnd() и DeallocateHWnd()


 
WingGod ©   (2003-01-24 13:32) [7]

плиз, если не трудно напишите пример исходника...


 
Anatoly Podgoretsky ©   (2003-01-24 13:39) [8]

Так сообщением выше


 
WingGod ©   (2003-01-24 13:43) [9]

Danlicha ©, приведи исходник того что ты написал...ок?


 
vuk ©   (2003-01-24 13:51) [10]

to Digtman:
>Как это нет ? А это что :
В D6 этого уже нет. В принципе, в scktcomp ссылка на forms была нужна исключительно из-за AllocateHWND. В D6 все это хозяйство перенесено в classes.

Кстати, туда же переехал и TDataModule. Поэтому в проектах, где формы не нужны, можно использовать модули данных.


 
Anatoly Podgoretsky ©   (2003-01-24 13:56) [11]

Все может быть, но автор вопроса тщателбн скрывает версию Дельфи.


 
Digitman ©   (2003-01-24 14:05) [12]


> vuk


Не возражаю. У меня - Д5, поэтому конкретностей на эту тему по Д6 не имею


 
WingGod ©   (2003-01-24 21:01) [13]

ктонить может дописать

var
s:TClientSocket;
begin
s:=TClientSocket;
s.Onconnect=????????


 
Чих-пых   (2003-01-25 04:29) [14]

s.OnConnect := YourProcedureName;

где YourProcedureName - это имя вызываемой процедуры, то есть процедуры обработки события OnConnect.

Посмотри, как её объявить надо. Обычно...

procedure YourProcedureName(Sender : TObject);
begin
end;

Это обычный TNotifyEvent.
Но с твоим TClientSocket не знаю, посмотри в хэлп. Ну а если не понятно - создай на форме где-нибудь (в другом проекте) этот TClientSocket, задай ему обработчик ОнКоннекта, а потом скопируй эту процедуру в свой проект.


 
Чих-пых   (2003-01-25 04:30) [15]

s.OnConnect := YourProcedureName;

где YourProcedureName - это имя вызываемой процедуры, то есть процедуры обработки события OnConnect.

Посмотри, как её объявить надо. Обычно...

procedure YourProcedureName(Sender : TObject);
begin
end;

Это обычный TNotifyEvent.
Но с твоим TClientSocket не знаю, посмотри в хэлп. Ну а если не понятно - создай на форме где-нибудь (в другом проекте) этот TClientSocket, задай ему обработчик ОнКоннекта, а потом скопируй эту процедуру в свой проект.

P.S. Сейчас создавать объекты уже не модно?
s:=TClientSocket.Create; // или Create(smthg)...

P.P.S. Это Паскаль а не Си! :)
s.Onconnect:=????
^^


 
WingGod ©   (2003-01-26 06:36) [16]

program Project1;

uses Dialogs,ScktComp;
procedure Connect(Sender:Tobject; socket:TCustomWinSocket);
begin
showmessage("Connected");
end;

var
s:TClientSocket;
begin
s.OnConnect:=connect;
s:=TClientSocket.Create(nil);
...

ругается....дельфя...
Incompatible types: " method pointer and regular procedure"

как лечить?...




 
Sha ©   (2003-01-26 11:45) [17]


program Project1;
{$APPTYPE CONSOLE}

uses
SysUtils,
Dialogs,
ScktComp;

type
THelper=class
procedure OnConnect(Sender: TObject; socket: TCustomWinSocket);
end;

procedure THelper.OnConnect(Sender: TObject; socket: TCustomWinSocket);
begin;
showmessage("Connected");
end;

var
h: THelper;
s: TClientSocket;
begin;
h:=THelper.Create;
s:=TClientSocket.Create(nil);
s.OnConnect:=h.OnConnect;
//............
s.Free;
h.Free;
end.


 
Sha ©   (2003-01-26 11:48) [18]

еще вариант:
@s.OnConnect:=@YourProcedureName;


 
Song ©   (2003-01-26 11:53) [19]

Не откомпилится. Нет указания базового класса для наследника.


 
Sha ©   (2003-01-26 12:02) [20]

> Song © (26.01.03 11:53)
> Не откомпилится. Нет указания базового класса для наследника.

Это по поводу Sha © (26.01.03 11:45) ?
Странно, у меня компилится отлично - проверял.


 
Чих-пых ©   (2003-01-26 18:08) [21]


> Не откомпилится. Нет указания базового класса для наследника.

Ты про это THelper=class ?
Почитай хэлп, там чётко написано, что если у наследника не указан базовый класс, автоматически считается, что это наследник TObject.



Страницы: 1 вся ветка

Текущий архив: 2003.03.17;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.014 c
1-53983
Roki
2003-03-04 12:05
2003.03.17
Как обратится к переменной, имя которое вычисляется?


1-54012
baracuda
2003-03-06 19:03
2003.03.17
Form


14-54252
Пубертанец
2003-02-28 11:59
2003.03.17
Как сделать программу-резидент


1-53964
4rex
2003-03-05 23:07
2003.03.17
Как сделать порядок в проигрывании файлов


7-54340
BALU1111
2003-01-16 14:57
2003.03.17
Определитель номера