![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
События...
WingGod © (2003-01-24 02:45:00)Расмотрим ситуацию...
Формы нет (т.е. кодим прям в проэкте).
Нужно создать компонент TClientSocket, с этим проблем нет,
Но вот как от него поймать события, типа OnConnect, OnRead,OnWrite...
если ктонить понял плиз хелп...
Чих-пых (2003-01-26 18:08:00) [1]
> Не откомпилится. Нет указания базового класса для наследника.
Ты про это THelper=class ?
Почитай хэлп, там чётко написано, что если у наследника не указан базовый класс, автоматически считается, что это наследник TObject.
Sha (2003-01-26 12:02:00) [2]> Song © (26.01.03 11:53)
> Не откомпилится. Нет указания базового класса для наследника.
Это по поводу Sha © (26.01.03 11:45) ?
Странно, у меня компилится отлично - проверял.
Song (2003-01-26 11:53:00) [3]Не откомпилится. Нет указания базового класса для наследника.
Sha (2003-01-26 11:48:00) [4]еще вариант:
@s.OnConnect:=@YourProcedureName;
Sha (2003-01-26 11:45:00) [5]
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.
WingGod (2003-01-26 06:36:00) [6]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"
как лечить?...
Чих-пых (2003-01-25 04:30:00) [7]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:=????
^^
Чих-пых (2003-01-25 04:29:00) [8]s.OnConnect := YourProcedureName;
где YourProcedureName - это имя вызываемой процедуры, то есть процедуры обработки события OnConnect.
Посмотри, как её объявить надо. Обычно...
procedure YourProcedureName(Sender : TObject);
begin
end;
Это обычный TNotifyEvent.
Но с твоим TClientSocket не знаю, посмотри в хэлп. Ну а если не понятно - создай на форме где-нибудь (в другом проекте) этот TClientSocket, задай ему обработчик ОнКоннекта, а потом скопируй эту процедуру в свой проект.
WingGod (2003-01-24 21:01:00) [9]ктонить может дописать
var
s:TClientSocket;
begin
s:=TClientSocket;
s.Onconnect=????????
Digitman (2003-01-24 14:05:00) [10]
> vuk
Не возражаю. У меня - Д5, поэтому конкретностей на эту тему по Д6 не имею
Anatoly Podgoretsky (2003-01-24 13:56:00) [11]Все может быть, но автор вопроса тщателбн скрывает версию Дельфи.
vuk (2003-01-24 13:51:00) [12]to Digtman:
>Как это нет ? А это что :
В D6 этого уже нет. В принципе, в scktcomp ссылка на forms была нужна исключительно из-за AllocateHWND. В D6 все это хозяйство перенесено в classes.
Кстати, туда же переехал и TDataModule. Поэтому в проектах, где формы не нужны, можно использовать модули данных.
WingGod (2003-01-24 13:43:00) [13]Danlicha ©, приведи исходник того что ты написал...ок?
Anatoly Podgoretsky (2003-01-24 13:39:00) [14]Так сообщением выше
WingGod (2003-01-24 13:32:00) [15]плиз, если не трудно напишите пример исходника...
Digitman (2003-01-24 10:40:00) [16]Как это нет ? А это что :
(Д5)
implementation
uses Forms,..; ?
печально только то, что подцепляется модуль Forms
ради вызова только двух ф-ций - AllocateHWnd() и DeallocateHWnd()
nikulin (2003-01-24 10:03:00) [17]2 Digitman
А в модуле ScktComp вроде нет ссылки на Forms...
Где же TClientSocket использует Forms????
Digitman (2003-01-24 09:52:00) [18]нет смысла отказываться от формы при использовании TClientSocket.
потому что этот объект так или иначе все равно использует модуль Forms
Viktor Kushnir (2003-01-24 08:47:00) [19]Тороян? :) А вообще можно TClientSocet в отдельном модуле UNIT инициализировать. И там сделать то, что посоветывал Danlicha ©
А (2003-01-24 03:52:00) [20]Удалено модератором