Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2010, 05:40   #1
HTL
Пользователь
 
Регистрация: 30.03.2009
Сообщений: 77
Вопрос Обработка событий другой формы

Сделал в unit1 такой блок:

Код:
procedure test123();
begin
//Бла бла
end;
Который я запускаю в unit1 такой строкой:

Код:
test123;
А как мне его запустить с другого unit?
HTL вне форума Ответить с цитированием
Старый 07.01.2010, 05:45   #2
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Надо в другом юните добавить в USES unit1 и просто вызывать test123. Если же и в текущем юните есть test123, то что-бы вызвать test123 из unit1 напишите
Код:
unit1.test123;
Altera вне форума Ответить с цитированием
Старый 07.01.2010, 06:07   #3
HTL
Пользователь
 
Регистрация: 30.03.2009
Сообщений: 77
По умолчанию

Цитата:
Сообщение от Altera Посмотреть сообщение
Надо в другом юните добавить в USES unit1 и просто вызывать test123. Если же и в текущем юните есть test123, то что-бы вызвать test123 из unit1 напишите
Код:
unit1.test123;
не проходит
HTL вне форума Ответить с цитированием
Старый 07.01.2010, 07:58   #4
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Что значит не проходит. А какая у вас ситуация. Оба юнита не в одном проэкте находятся? Тогда надо писать полный путь к юниту, как в *.dpr файле
Altera вне форума Ответить с цитированием
Старый 08.01.2010, 05:19   #5
HTL
Пользователь
 
Регистрация: 30.03.2009
Сообщений: 77
По умолчанию

Цитата:
Сообщение от Altera Посмотреть сообщение
Что значит не проходит. А какая у вас ситуация. Оба юнита не в одном проэкте находятся? Тогда надо писать полный путь к юниту, как в *.dpr файле
[Error] unit2.pas(149): Undeclared identifier: 'test123'

А если написать unit1. то в подсказках будет только var
HTL вне форума Ответить с цитированием
Старый 08.01.2010, 09:32   #6
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

HTL, обычно я вызываю процедуры и функции другой формы вот так:

Код:
Form2.test123;
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 08.01.2010, 09:48   #7
HTL
Пользователь
 
Регистрация: 30.03.2009
Сообщений: 77
По умолчанию

Marsel737, а каким боком ты форму задел? Это самодельная процедура, а не обработчик события какой нить кнопочки...
HTL вне форума Ответить с цитированием
Старый 08.01.2010, 10:17   #8
HTL
Пользователь
 
Регистрация: 30.03.2009
Сообщений: 77
По умолчанию

вот что примерно у меня в проге

Может я что сделал не так?
Вложения
Тип файла: rar procedure.rar (3.5 Кб, 13 просмотров)
HTL вне форума Ответить с цитированием
Старый 08.01.2010, 10:21   #9
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Если ты такой умник чё ваще здесь вопросы задаеш? Вот те пожалуста "самодельная" процедура, которая вызывается с другой формы. Но если ты её объявиш в разделе private, то никаким образом не сможеш никогда вызвать с другой формы.

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private

  public
    procedure ShowMyMessage;
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.ShowMyMessage;
begin
  ShowMessage('Трататаата');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2:= TForm2.Create(Application);
  Form2.Show;
end;

end.
Код:
unit Unit2;

interface

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

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

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  Form1.ShowMyMessage;
end;

end.
Кто так процедуры пишет???

Код:
procedure test123();
begin
Form2.Label1.Caption:='121424324123';
end;
Вот как нада:
Код:
procedure ТForm2.test123;
begin
  Label1.Caption:='121424324123';
end;
Вот те мой пример рабочий и твой:
Вложения
Тип файла: rar Процедура.rar (162.6 Кб, 14 просмотров)
Тип файла: rar procedure.rar (8.3 Кб, 11 просмотров)
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли

Последний раз редактировалось Marsel737; 08.01.2010 в 10:33.
Marsel737 вне форума Ответить с цитированием
Старый 08.01.2010, 10:33   #10
HTL
Пользователь
 
Регистрация: 30.03.2009
Сообщений: 77
По умолчанию

Цитата:
Form2.Label1.Caption:='121424324123 ';
Мне так проще.

а если у меня нету форм а есть просто unit2 и unit3?
HTL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка событий из консоли D_E_N Общие вопросы Delphi 2 24.07.2009 16:50
Обработка событий формы aval Microsoft Office Excel 3 17.06.2009 18:17
Обработка событий в Delphi SlavaSH Компоненты Delphi 19 30.03.2009 11:00
обработка событий из консоли! nereus Общие вопросы Delphi 0 07.02.2007 15:33