![]() |
|
|
#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
|
|||
|
|||
![]() ![]() ![]() А про дополнение о функциях класса - спасибо! |