![]() |
|
|
|
|
#1
|
|||
|
|||
|
Такой вопрос - как вызвать функцию обозначеную в одной форме. Формы связаны друг с другом - переменные и элементы интерфейса доступны, но я не могу вызвать исполнение функций обозначенных в одной форме из другой.
|
|
#2
|
|||
|
|||
|
Вопрос решен, благодарю. Тема закрыта
Если кто наткнется на эт тему проблема решается таким вот нехитрым способом. private - раздел частных объявлений; public - раздел общих объявлений; Если в паблике обозначить ссылку на функцию а функцию (пусть TamPamPam)описать затем как например TForm1.TamPamPam то все решиться очень просто. Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure TamPamPam;
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
procedure TForm1.TamPamPam(s:string);
begin
showmessage('TamPamPam!');
end;
end. |
|
#3
|
|||
|
|||
|
Ну, для этого достаточно было бы прочитать хоть одну толковую книжку по Дельфи. И такого вопроса бы и не возникло.
Однако, замечание. Так можно вызвать функцию только у объекта, то бишь экземпляра класса. А вот если ты ее опишешь как функцию класса, то тогда ее можно будет вызвать у самого класса без создания его, класса, экземпляра. Но в этом случае нельзя обращаться к переменным класса. Пример: Код:
type
TMyMathClass = class
public
X : Double;
class function ClassSQR(x : Double) : Double;
function ObjectSQR : Double;
end;
...
class function TMyMathClass.ClassSQR(x : Double) : Double;
begin
Result := x * x;
end
function TMyMathClass.ObjectSQR : Double;
begin
Result := X * X;
end;
...
var
C : TMyMathClass;
begin
ShowMessage(FloatToStr(TMyMathClass.ClassSQR(2)));
C := TMyMathClass.Create;
C.X := 2;
ShowMessage(FloatToStr(C.ObjectSQR));
C.Free;
end; |
|
#4
|
|||
|
|||
Про книжку - это верно Чем и воспользовался. Но ведь это раздел для "Начинающих" и их глупых вопросов, не так ли?А про дополнение о функциях класса - спасибо! |