با سلام
من در برنامه ام procedureهایی نوشته ام و در حالت اجرا میخواهم نام یکی از procedureها را در داخل یک Edit بنویسم و وقتی که دکمه Run را میزنم آن procedure اجرا بشود . چگونه میتوانم این کار را انجام دهم .
با تشکر
Printable View
با سلام
من در برنامه ام procedureهایی نوشته ام و در حالت اجرا میخواهم نام یکی از procedureها را در داخل یک Edit بنویسم و وقتی که دکمه Run را میزنم آن procedure اجرا بشود . چگونه میتوانم این کار را انجام دهم .
با تشکر
سلام.
بهتره پروسیجر ها رو ببرید روی قسمت پابلیشد فرم، در این صورت می تونید با RTTI بهش دسترسی داشته باشید اون هم فقط با اسم.
با تشکر
من در برنامه ام تعداد n تا procedure دارم با یک مشخصه که بصورت زیر میباشند
Procedure Run_Proc_0001_(Sender : TObject)
Procedure Run_Proc_0002_(Sender: TObject)
Procedure Run_Proc_0003_(Sender : TObject)
.
.
Procedure Run_Proc_????_(Sender: TObject)
من میخواهم که تمام این procedure ها در یک زمان خاصی به ترتیب اجرا شوند ولی تعدادآنها مشخص نیست من میخواهم اجرای Procedureها را در داخل یک حلقه For گذاشته و اجرا کنم . من چگونه میتوانم این کار را انجام دهم
با تشکر
یک آرایه از پروسیجر ها درست کنید.
به همین راحتی
PArr = array of TNotifyEvent
با سلام و با تشکر از دوست عزیز آقای یوسف زالی
نحوه انتصاب یک نام پروسیجر به یک متغییر از نوع TNotifyEvent چگونه هستش .
من یک آرایه ای مثلا با نام NameProc از نوع TNotifyEvent دارم میخواهم سه پرسیجر با عنوان Run_Proc_01 و Run_Proc_02 و Run_Proc_03 را به متغییر NameProc انتصاب دهم چگونه میتوانم این کار را انجام دهم .
با تشکر
var
NameProc : array[1..3] of TNotifyEvent ;
i_ : byte ;
begin
For i_ := 1 to 3 do
begin
NameProc[i_] := ??
?? و برای اجرا چگونه دستور را بایستی بنویسم
end ;
end ;
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, TypInfo, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
published
procedure P1(Sender: TObject);
procedure P2(Sender: TObject);
procedure P3(Sender: TObject);
procedure P4(Sender: TObject);
procedure P5(Sender: TObject);
public
PArr: array[1..5] of TNotifyEvent;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
PArr[2](Self);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
Routine: TMethod;
ObjMethod: TNotifyEvent;
begin
for i := 1 to 5 do
begin
Routine.Data := Pointer(Self);
Routine.Code := Self.MethodAddress('P' + IntToStr(i));
PArr[i] := TNotifyEvent(Routine);
end;
end;
procedure TForm1.P1(Sender: TObject);
begin
Caption := 'P1';
end;
procedure TForm1.P2(Sender: TObject);
begin
Caption := 'P2';
end;
procedure TForm1.P3(Sender: TObject);
begin
Caption := 'P3';
end;
procedure TForm1.P4(Sender: TObject);
begin
Caption := 'P4';
end;
procedure TForm1.P5(Sender: TObject);
begin
Caption := 'P5';
end;
end.