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

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

Юниты [XP]


Steep ©   (2007-04-20 11:28:00) 

Не подскажете как использовать события (клики на клавиши например) функции и процедуры находящиеся в другом юните?

uses Unit2; я прописал

Пытаюсь использовать как

Form2. здесь имя процедуры... не помогает...


Amoeba   (2007-04-23 13:19:00) [1]


> Steep ©   (23.04.07 08:47) [18]
>
> Может потому что делфя у меня 2006-я... или руки кривые
> ;)
>

Скорее второе...


Steep   (2007-04-23 08:47:00) [2]

Может потому что делфя у меня 2006-я... или руки кривые ;)


Ega23   (2007-04-20 15:04:00) [3]


> После запуска выводится сообщение (с клавишами break, contine)
> с этой мессагой


А у меня почему-то не выводится. Что я делаю не так?


type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage(Form2.GetCount(3,2));
end;

end.

type
 TForm2 = class(TForm)
 private
   { Private declarations }
 public
   function GetCount(const X, Y : Integer) : string;
 end;

var
 Form2: TForm2;

implementation

{$R *.dfm}

{ TForm2 }

function TForm2.GetCount(const X, Y: Integer): string;
begin
 Result := IntToStr(X+Y);
end;


Steep   (2007-04-20 15:00:00) [4]

После запуска выводится сообщение (с клавишами break, contine) с этой мессагой


Ega23   (2007-04-20 14:40:00) [5]


> Пишет Invalid property value


Где именно пишет?


Steep   (2007-04-20 14:35:00) [6]

Видет нормально хотя выдает ошибку..

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
 private
   { Private declarations }
 public
   { Public declarations }
   procedure Button1Click(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Showmessage( Form2.Count(2,3) );
end;

end.


unit Unit2;

interface

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

type
 TForm2 = class(TForm)
 private
   { Private declarations }
 public
   { Public declarations }
   Function Count(us1, us2:integer): string;
 end;

var
 Form2: TForm2;

implementation

{$R *.dfm}

Function TForm2.Count(us1, us2:integer): string;
begin
 Result := IntToStr(us1+us2);
end;

end.


Пишет Invalid property value


Steep   (2007-04-20 14:31:00) [7]

блин...
Сделал простой примерчик - работает....


Ega23   (2007-04-20 13:34:00) [8]


> так где же ошибка???


В 17-й строке.

Полные секции interface обоих юнитов - в студию!


Плохиш   (2007-04-20 12:29:00) [9]


> так где же ошибка???

Ошибка в нежелании заняться изучением теории.


Steep   (2007-04-20 12:28:00) [10]

так где же ошибка???


Steep   (2007-04-20 11:51:00) [11]

т.е. оставить Frm_Add.FastButtonбез Sender: TObject?


Steep   (2007-04-20 11:49:00) [12]


> Быстро марш за книгу, читать что такое private, protected,
>  public и published


> Перенос в паблик так же не помогает...


stakan   (2007-04-20 11:49:00) [13]


> Frm_Add.FastButton
> А токого синтаксиса нет...

Frm_Add.FastButton(SomeObj);?
После
> Перенос в паблик
естественно.


Ega23   (2007-04-20 11:45:00) [14]

private
  { Private declarations }
  procedure FastButtonClick(Sender: TObject);


А фигли ты хотел? Это же private-метод.
Быстро марш за книгу, читать что такое private, protected, public и published


Steep   (2007-04-20 11:43:00) [15]

Перенос в паблик так же не помогает...


Steep   (2007-04-20 11:42:00) [16]

Второй юнит

unit AddUnit;
............
private
   { Private declarations }
   procedure FastButtonClick(Sender: TObject);
.................
var
 Frm_Add: TFrm_Add;
.................
//Щелчек по клавише
procedure TFrm_Add.FastButtonClick(Sender: TObject);
var
 i: byte;
 path: string;
begin
 for I := 1 to 5 do
 begin
   Path := (Sender as TPathButton).PathArray[i];
   if path<>'' then
     Showmessage(Path);
     //ShellExecute(handle, 'open', Path, NULL, NULL, SW_SHOWNORMAL);
 end;
end;


В основном юните пишу
......
implementation

uses AddUnit;
......
Frm_Add.FastButton

А токого синтаксиса нет...


Desdechado   (2007-04-20 11:40:00) [17]

События не в юнитах, события в винде. А обработчики их - в классах. Чтоб обработчик задейстовать, нужно сначала экземпляр класса создать (обычно), а уж потом обработчик запускать.


ЮЮ   (2007-04-20 11:35:00) [18]

Form2. здесь имя процедуры... не помогает...

Кто не помогает? Чем не помогает? Почему решил, что не помогает?
Лучше покажи, что реально написал, чем диагноз бессмысленный.


Ega23   (2007-04-20 11:31:00) [19]

Ещё раз с начала, только внятно и подробно.


Наверх

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