Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.05;
Скачать: CL | DM;

Вниз

Формы и ф-ции   Найти похожие ветки 

 
Bobby Digital ©   (2004-11-21 19:30) [0]

... допустим есть две формы, так вот как из второй формы вызватьфункию, которая описанна в первой форме?


 
begin...end ©   (2004-11-21 19:31) [1]

Вызвать как обычную функцию, вот только в список uses модуля второй формы должен быть добавлен модуль первой.


 
ламер ©   (2004-11-21 19:34) [2]

> которая описанна в первой форме
зачем вы так с ней?


 
Bobby Digital ©   (2004-11-21 19:36) [3]

происал во второй форме

implementation
uses Unit1;


и все равоно ошибка
[Error] Unit2.pas(33): Undeclared identifier: "Save"

а вот как вызвана функция
procedure TForm6.N1Click(Sender: TObject);
begin
Save();
end;


 
GuAV ©   (2004-11-21 19:42) [4]

Bobby Digital ©   (21.11.04 19:36) [3]

осталось привести как описана и всё наверное станет ясно.

пока 2 вариата:
1. это не функция, а метод
2. нет описания в interface


 
Bobby Digital ©   (2004-11-21 19:43) [5]


> ламер ©   (21.11.04 19:34) [2]
> > которая описанна в первой форме
> зачем вы так с ней?


эта функция нужна во обеих формах


 
Bobby Digital ©   (2004-11-21 19:44) [6]

Вот так описана функция ...

function Save ():TSaveDialog;
begin
if Form1.SaveDialog1.Execute then
Form1.Memo1.Lines.SaveToFile(Form1.SaveDialog1.FileName+".in4");
end;


 
GuAV ©   (2004-11-21 19:53) [7]

Bobby Digital ©   (21.11.04 19:44) [6]

Тогда наверное
GuAV ©   (21.11.04 19:42) [4]
2. нет описания в interface


скопируй
function Save ():TSaveDialog;
выше слова implementation

а функция
function Save ():TSaveDialog;
begin
if Form1.SaveDialog1.Execute then
Form1.Memo1.Lines.SaveToFile(Form1.SaveDialog1.FileName+".in4");
end;

достойна помещения в орешник.


 
Bobby Digital ©   (2004-11-21 19:56) [8]

Че такое орешник?


 
KilkennyCat ©   (2004-11-21 19:56) [9]

вероятно, она и в первой форме не работает :)


 
GuAV ©   (2004-11-21 19:58) [10]

KilkennyCat ©   (21.11.04 19:56) [9]
вероятно, она и в первой форме не работает :)


Работает. Если конечно результатом не пользоваться.

Bobby Digital ©   (21.11.04 19:56) [8]
Че такое орешник?

http://www.delphimaster.ru/nuts/


 
Bobby Digital ©   (2004-11-21 19:59) [11]

.. тю работает в первой форме .. ради прикола сам посмотри


 
Bobby Digital ©   (2004-11-21 20:00) [12]

а какой тип выбрать для данной функции  ??? ... хе я по приколу скопировал TSaveDialog; ... и заработало )))))


 
KilkennyCat ©   (2004-11-21 20:02) [13]

не...не буду смотреть - я не так прикалываюсь.


 
GuAV ©   (2004-11-21 20:07) [14]

Bobby Digital ©   (21.11.04 20:00) [12]
а какой тип выбрать для данной функции  ???

А как ты собираешься пользоваться её результатом ?


 
begin...end ©   (2004-11-21 20:15) [15]


> [12] Bobby Digital ©   (21.11.04 20:00)

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


 
Bobby Digital ©   (2004-11-21 20:17) [16]

... ну представь если тебе надо сохранить файл, не только по нажатию на кнопку ,  а еще несколько раз например по какому-нибудь событию ... просто не хотелось кажый раз писать ...SaveDialog1.Execute... и тд.


 
Bobby Digital ©   (2004-11-21 20:21) [17]


> begin...end ©  

Да сделал ... а как все же вызвать эту процедуру из другой формы


 
begin...end ©   (2004-11-21 20:41) [18]


> [17] Bobby Digital ©   (21.11.04 20:21)

Уже ж сказали; см., напр., [7]. Или оформляй как метод, только тогда во второй форме вызывай её так: FormName.Save, где FormName - имя первой формы.


 
novice_man ©   (2004-11-21 20:47) [19]

Уважаемый Bobby Digital
у вас есть какие-либо книги (реал, электронные) по программированию, в частности по ДЕЛФИ?


 
begin...end ©   (2004-11-21 20:53) [20]


> [19] novice_man ©   (21.11.04 20:47)

Ты такие провокационные вопросы не задавай, после них почему-то обычно посылают. :)


 
SergP ©   (2004-11-21 20:59) [21]

А если твоя функция объявлена как метод объекта класса первой формы (например TForm1)

то соответственно
Form1.myfunction(....);


 
novice_man ©   (2004-11-21 20:59) [22]

begin...end ©   (21.11.04 20:53) [20]

> [19] novice_man ©   (21.11.04 20:47)

Ты такие провокационные вопросы не задавай, после них почему-то обычно посылают. :)


Вот так всегда ...... ;)


 
SergP ©   (2004-11-21 21:02) [23]

А лучше всего функции и процедуры которые должны использоваться в разных юнитах вынеси в отдельный юнит...


 
novice_man ©   (2004-11-21 21:05) [24]

Пример:

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.MyProcedure(Sender);
end;

*****************************************************************

unit Unit2;

interface

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

type
 TForm2 = class(TForm)
 private
   { Private declarations }
 public
   { Public declarations }
   procedure MyProcedure(sender: tobject);
 end;

var
 Form2: TForm2;

implementation

{$R *.dfm}

{ TForm2 }

procedure TForm2.MyProcedure(sender: tobject);
begin
// body procedure
end;

end.

Что то вроде этого?


 
Bobby Digital ©   (2004-11-21 21:09) [25]

спасибо всем за внимание и советы



Страницы: 1 вся ветка

Текущий архив: 2004.12.05;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.093 c
8-1094201150
1
2004-09-03 12:45
2004.12.05
Как сделать линии/прямые сглаженными ?


1-1100965289
Evgeny
2004-11-20 18:41
2004.12.05
Решение задач


14-1100200907
Викусик
2004-11-11 22:21
2004.12.05
Глупый вопрос.


6-1096453559
GHJ
2004-09-29 14:25
2004.12.05
TTcpClient


3-1099803279
SergP
2004-11-07 07:54
2004.12.05
Как получить коментарий к полю?