при ручном наборе некоторые процедуры неработают?

zAlexandrz
Дата: 09.11.2007 21:27:42
Удивлению нет придела, проконсультируйте.

Разрабатываю систему клиент-сервер. Особо невдоваясь в подробности, скажу, есть программа пример чата, сократил ее до такой формы:

unit MainUnit;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp, ExtCtrls;

type
TForm1 = class(TForm)
ServerSocket: TServerSocket;
ClientSocket: TClientSocket;
ChatMemo: TMemo;
ClientBtn: TButton;
procedure ClientBtnClick(Sender: TObject);
procedure ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation

{$R *.dfm}
procedure TForm1.ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ChatMemo.Lines.Add('['+TimeToStr(Time)+'] Подключение к серверу.');
end;

procedure TForm1.ClientBtnClick(Sender: TObject);
begin
ClientSocket.Port:=7777;
ClientSocket.Address:='127.0.0.1';
ClientSocket.Active:=True;
end;
end.

Все работает, ура.
НО если делать самому "с чистого листа"(тупо вручную набрать с распечатки)

Вобщем НАБРАННАЯ работает, запускается, подключается к серверу НО несрабатывает процедура (при трасcировке это видно)

procedure TForm1.ClientSocketConnect(Sender: TObject; Socket: TCustomWinSocket);

и остальные (здесь я их не привел) почему так? Может кто сталкивался?

Вот то что я набираю вручную:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;

type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure clientsocket1connect(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
clientsocket1.Port:=7777;
clientsocket1.Address:='127.0.0.1';
clientsocket1.Active:=true;
end;
procedure tform1.clientsocket1connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add('['+TimeToStr(Time)+'] Подключение к серверу.');
end;
end.

Для создания выбираю: file->new-> application

Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
Johnmen
Дата: 09.11.2007 22:03:54
Конечно не будет. Процедура-обработчик не назначена соответствующему событию.
Альт
Дата: 10.11.2007 08:34:47
Связи между объектами и их методами... реализованными в implementation и заявленными в interface части... описаны на уровне dfm-файла... в вашем случае (наборе с листа) этой связи просто нет... потому ClientBtnClick и ClientSocketConnect всего лишь публичные методы TForm1
zAlexandrz
Дата: 10.11.2007 08:52:59
как связи организовывать? Дайте сылку просвятится или объясните
Альт
Дата: 10.11.2007 09:15:16
вариант на коде... просто добавить связи.. описав их например в конструкторе формы...

  TForm1 = class(TForm)
  ...
    ClientBtn: TButton;
    procedure FormCreate(Sender: TObject);
    procedure ClientBtnClick(Sender: TObject);
  ...
  private
  public
  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ClientBtn.OnClick := ClientBtnClick;
end;

кодом мы просто повторям ту связь, что описывает среда разработки... при визуальном проектировании формы... в dfm, а выглядит она вот так:
object Form1: TForm1
  ....
  object ClientBtn: TButton
    ....
    OnClick = ClientBtnClick
  end
  ....
end

где прочитать... хм... в любых статьях по rtti
zAlexandrz
Дата: 10.11.2007 18:30:22
Спасибо, разобрался.

Чтоб не создавать новую тему подскажите...

Есть программа, хочу добавить в нее настройки, т.е. нажимаешь на основном окне кнопку и должно появляться еще одно окно (кажется оно называется подчиненное) там я размещу настройки.

Я сделал так - создал новое приложение, в нем две формы.

Вопрос: какие команды нужно записать на кнопке чтобы перейти (показать, передать управление) второй форме. И какими командами эту форму скрыть и вернуться на основное окно?
A.K.
Дата: 10.11.2007 21:19:03
zAlexandrz
Господа, здесь все-таки не детский сад, младшая группа.
Берем любую книжку и читаем.

PS: Команды - это что-то вообще не из терминологии языка Delphi.