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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2011, 19:50   #1
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию процедура к кнопке на другой форме

скриптом открыл форму(Form3) создал там кнопку(Btn:TButton) написал в Unit3 процедуру по клику на кнопку, которая использует объекты первой формы(Form1) но она не работает, пробовал писать в Unit1 но компилятору не нравится. помогите
скрипт вообще не реагирует на то что в процедуре!
пыжок

Последний раз редактировалось maloun; 03.01.2011 в 20:12.
maloun вне форума Ответить с цитированием
Старый 03.01.2011, 20:17   #2
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
скриптом открыл форму(Form3)
код в студию
Цитата:
создал там кнопку(Btn:TButton)
код в студию
Цитата:
написал в Unit3 процедуру по клику на кнопку, которая использует объекты первой формы(Form1)
код в студию
Цитата:
пробовал писать в Unit1
код в студию
Цитата:
но компилятору не нравится
С ним спорить безполезно
Цитата:
помогите
Поможем, обязательно.
Sibedir вне форума Ответить с цитированием
Старый 03.01.2011, 20:40   #3
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

форма уже была создана без меня открыл я её так Form3.Show;
кнопку создал вот так:
var
btn:TButton;
...
Btn:=TButton.Create(Form3.PageContr ol1);
Btn.Parent:=Form3.PageControl1;
________

Процедура по клику на кнопку из Unit3 вот такого вида:

procedure TForm3.BtnClick(Sender: TObject);
begin
Memo1.text:='1';
end;

он не реагирует вообще не на что в этой процедуре
ни на Memo1.text:='1';
ни на Form3.Memo1.text:='1';
ни на Form3.PageControl1.Memo1.text:='1';
ни на Form1.Memo1.text:='1';

________

Процедура по клику на кнопку из Unit1 такая же, но ему не нравится TForm3 по тому что это Form1

procedure TForm1.BtnClick(Sender: TObject);
begin
Form1.Memo1.text:='1';
end;

хотя вот так не пробовал, считаю это не будет работать на Form1 нету Btn и процедура не должна работать, в любом случае...
Memo1.text:='1';
Form3.Memo1.text:='1';
Form3.PageControl1.Memo1.text:='1';
Form1.Memo1.text:='1';

______

Нету другого способа написать процедуру для клика по кнепке которая на другой форме?
пыжок

Последний раз редактировалось maloun; 03.01.2011 в 20:44.
maloun вне форума Ответить с цитированием
Старый 03.01.2011, 20:53   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Код:
Btn:=TButton.Create(Form3.PageContr ol1);
Btn.Parent:=Form3.PageControl1;
Btn.OnClick := Form3.BtnClick;
Или
Код:
Btn.OnClick := Form1.BtnClick;
Так тоже работать будет. Кнопке пофиг откуда процедуру в OnClick запихали. Главное что бы это была procedure of class. Можно даже
Код:
type
  TMyObject = class
    procedure BtnClick (Sender: TObject);
  end;
var
  MyObject: TMyObject;
...
Btn.OnClick := MyObject.BtnClick;

Последний раз редактировалось Sibedir; 04.01.2011 в 13:03. Причина: исправил назад
Sibedir вне форума Ответить с цитированием
Старый 03.01.2011, 21:06   #5
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

не смотря на то что процедура уже стоит в обоих юнитах
Код:
procedure TForm3.BtnClick(Sender: TObject);
ему не нравится
Код:
Btn.OnClick:=TForm3.BtnClick
говорит не знает что такое BtnClick
пыжок
maloun вне форума Ответить с цитированием
Старый 03.01.2011, 21:18   #6
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

ему не нравится
Код:
MyObject
в
Код:
Btn.OnClick:=MyObject.BtnClick;
он о5 не ведает что это такое
при этом процедуры написанны
пыжок
maloun вне форума Ответить с цитированием
Старый 03.01.2011, 21:24   #7
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
ему не нравится MyObject
Сори. См. изменения выше.
Цитата:
не смотря на то что процедура уже стоит в обоих юнитах
Код:
procedure TForm3.BtnClick(Sender: TObject);
Это как? У вас что TForm3 в 2-х юнитах описан?
Цитата:
ему не нравится
Код:
Btn.OnClick:=TForm3.BtnClick
говорит не знает что такое BtnClick
Выложи описание TForm3
Код:
TForm3 = class (TForm)
  ???
end;

Последний раз редактировалось Sibedir; 03.01.2011 в 21:28.
Sibedir вне форума Ответить с цитированием
Старый 03.01.2011, 21:28   #8
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Цитата:
Это как? У вас что TForm3 в 2-х юнитах описан?
из обоих пробовал, откуда надо - не знаю

был так
Код:
type
  TForm3 = class(TForm)
    PageControl1: TPageControl;
    procedure BtnClick(Sender: TObject);
стал так
Код:
  type
  TMyObject = class
    procedure BtnClick (Sender: TObject);
    end;


а это то что тогда??
[Error] Unit1.pas(200): Incompatible types: 'TNotifyEvent' and 'Procedure'
пыжок

Последний раз редактировалось maloun; 03.01.2011 в 21:35.
maloun вне форума Ответить с цитированием
Старый 03.01.2011, 21:29   #9
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
из обоих пробовал
Да не может
Код:
procedure TForm3.BtnClick(Sender: TObject);
Находится в модуле, в котором не описан сам TForm3.
Sibedir вне форума Ответить с цитированием
Старый 03.01.2011, 21:36   #10
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

и что теперь делать?

вот с этим к примеру
[Error] Unit1.pas(200): Incompatible types: 'TNotifyEvent' and 'Procedure'

мозги на вынос!
пыжок

Последний раз редактировалось maloun; 03.01.2011 в 23:43.
maloun вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов события компонента на другой форме Lokos Общие вопросы Delphi 4 02.08.2010 11:12
есть ли в Делфи процедура, которая рисует на форме круг заданого радиуса? vedro-compota Общие вопросы Delphi 2 08.05.2010 18:38
StringGrid на другой форме cowboy Общие вопросы Delphi 20 17.07.2009 14:07
передать переменную другой форме Var17 Общие вопросы Delphi 5 07.01.2009 02:03
Использование компонентов в другой форме White БД в Delphi 3 27.08.2008 13:32