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

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

Вопрос про объявление


товарищ вася ©   (2009-04-17 08:33:00) 

Как объявить свою процедуру, чтобы можно было использовать другие объекты на форме?
Procedure Combine;
begin
 Cmbbtn.Click;
end;


MsGuns   (2009-04-17 10:07:00) [1]

Если процедура - метод класса, то получить "автора" клика можно по Sender
Например
procedure TForm1.Button1Click(Sender : TObject);
begin
 ShowMessage('Нажата кнопка '+(Sender as TButton).Caption);
end;

Если процедура внешняя (т.е. не является методом класса), то передать объект нужно с помощью параметра. Например

procedure SomeBattonClick(Button: TButton);
begin
 Button.Click;
end;


{RASkov}   (2009-04-17 09:51:00) [2]

> [8] товарищ вася   (17.04.09 09:40)
> где что обявить чтобы всё вызвалось.

Uses для этого...
В майнюнит добавь "другой юнит" в котором соответственно в разделе интерфейса объяви вызываемую(MessagesBoxClick) функцию
Только я так понял, что тебе ее ненужно назначать обработчикам событий(events) объектов..


товарищ вася   (2009-04-17 09:40:00) [3]


> AIK ©   (17.04.09 09:20) [6]

За шорткат отдельное спасибо!
Немного другой вопрос:
Вот у меня  есть метод
Procedure MessagesBoxClick(Sender:Tobject);
объект MessagesBox:TListBox;
они оба объявлены в мэйн юнит
я хочу записать реализацию MessagesBoxClick в другой юнит
"другой юнит" присоединен  к мэйн при помощи uses.
как вызвать (MessagesBoxClick)  из мэйн юнит, точнее где что обявить чтобы всё вызвалось.


AIK   (2009-04-17 09:20:00) [4]

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
  Procedure Combine;  ///  CTR + Shift + C
   { Public declarations }
 end;


В зависимости от области видимости процедуры под private либо под public


Palladin   (2009-04-17 09:20:00) [5]


> можно подумать у меня две формы.

можно подумать, что ты глуп.

Var
f1,f2:TForm1;

вот и сиди думай, сколько у тебя форм


Palladin   (2009-04-17 09:19:00) [6]

иди читай учебники.


товарищ вася   (2009-04-17 09:11:00) [7]


> положи на форму кнопку и щелкни по ней два раза. то что
> ты увидишь в редакторе и будет метод.

Спасибо это я знал, ещё есть вариант
Procedure Combine(var fm:TForm1);
begin
fm.cmbbtn.Click;
end;
Просто неохота каждый раз писать перед баттон имя формы,
можно подумать у меня две формы.
Может где объявить процедуру чтоб она себя хорошо вела?


Palladin   (2009-04-17 08:59:00) [8]

положи на форму кнопку и щелкни по ней два раза. то что ты увидишь в редакторе и будет метод.


товарищ вася   (2009-04-17 08:54:00) [9]

Уменя есть форма
  Form1: TForm1;
тогда

> надо ее превратить в метод

это Form1.Combine?

implementation

Procedure Form1.Combine;
begin
Cmbbtn.Click;
end;


Palladin   (2009-04-17 08:40:00) [10]

надо ее превратить в метод


Наверх

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