![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
передача параметра [D7]
Цукор5 © (2006-03-29 19:07:00)Есть приватный метод,который мне необходимо передать параметром. Не получается :( Приходиться создавать некую процедуру(Dure),в которой и вызывается приватный метод. Все в коде :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure Hello;
public
procedure Do_(AddrProc:Pointer);
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Do_(AddrProc: Pointer);
type _Proc=procedure;
var Proc:_Proc;
begin
@Proc:=AddrProc;
if Assigned(Proc) then Proc;
end;
procedure TForm1.Hello;
begin
Caption:='Preved medved';
end;
procedure Dure;
begin
Form1.Hello;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Do_(@Dure); // ТУТ! а хотелось сразу @Form1.Hello
end;
end.
Как вызывать Do_(@приватный метод формы)? Т.е. без процедуры Dure
Rial (2006-03-29 19:49:00) [1]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
Type
TProc=procedure of object;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure Hello;
public
procedure Do_(Const Proc:TProc);
{ Public declarations }
end;
Var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Do_(Const Proc:TProc);
begin
If (Assigned(Proc)) then Proc;
end;
procedure TForm1.Hello;
begin
Caption:='Preved medved';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Do_(Hello);
end;
end.
У тебя много кривостей было.
Цукор5 (2006-03-29 19:38:00) [2]2 Rial © (29.03.06 19:18) [1]
Нет, не работает :(
Rial (2006-03-29 19:18:00) [3]
_Proc=procedure of object;
Do_(@Hello);