Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

События...


Страницы:   1 2

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]

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо