![]() |
|
|
#1
|
|||
|
|||
|
Подскажите пожалуйста -
например прога состоит из 2 модулей - unit1, unit 2 В первом описана процедура procedure1. Как её использовать в unit2. Понятно что в unit2 надо подключить unit1, но видимо этого не достаточно, что надо еще сделать? |
|
#2
|
||||
|
||||
|
Этого вполне достаточно, только прописывать ее (procedure1) нужно в unit1 в interface-ной части...
|
|
#3
|
|||
|
|||
|
Cпасибо, а можно прямо пальцем тыкнуть где процедура должна быть обьявлена?
Сейчас так Код:
unit Unit 1;
interface
uses ........;
type
TForm1= class (TForm)
...
procedure procedure1(senderL TObject);
...
private
{}
pablic
{}
end;
var
Form1: TForm1;
implementation
uses ....;
{$R *.dfm}Вот при такой конструкции из модуля 2 данная процедура не доступна. |
|
#4
|
|||
|
|||
|
Код:
Form1.<Имя процедуры>(Sender); Последний раз редактировалось mol-Ou, 15.03.2010 в 12:37. |
|
#5
|
|||
|
|||
|
да, так недоступна.
Переменные обьявленные в модуле 1 из модуля 2 доступны, а процедура нет. |
|
#6
|
||||
|
||||
|
Попробуй так...
Цитата:
|
|
#7
|
|||
|
|||
|
У меня так:
Код:
unit Unit2;
interface
uses....
type
TFrame2 = class(TFrame)
........................
procedure BitBtn1Click(Sender: TObject);
private
......
public
......
end;
implementation
uses Unit1;
{$R *.dfm}
// далее описание процедур, и вот процедура нажатия на кнопку:
procedure TFrame2.BitBtn1Click(Sender: TObject);
var
.......
begin
...........
end;а вызываю я её из меню формы1, соответственно Unit1 : Код:
procedure TForm1.N2Click(Sender: TObject); begin Form1.Frame21.BitBtn1Click(Sender); end; Попробуй в uses описать их друг у друга. в Unit1: Код:
Uses Unit2; Код:
Uses Unit1; |
|
#8
|
|||
|
|||
|
Я очень сильно извиняюсь, чутка ошибся - у меня процедура не является обьектом формы, поэтому небольшие изменения
Код:
unit Unit 1;
interface
uses ........;
type
TForm1= class (TForm)
...
procedure procedure1(senderL TObject); //- тут процедуры конечно же нету это ошибка,т.к. процедура моя не объект формы.
...
private
{}
pablic
{}
end;
var
Form1: TForm1;
implementation
uses ....;
{$R *.dfm}
//- процедура1 описана сразу после странной надписи $R *.dfm в фигурных ковычках -
procedure procedure1(...);
begin
...
end;//Если процедуру запехнуть туда, куда советует nich, то то компилятор говорит - Statement not allowed in interface part Совет Mol-Ou тоже не подходит - модули и так у друг друга подключены, а form1.proc1 не помогает Вопрос остался не решённым- явно в unit1 процедуру1 гдето не там надо описать где у меня. Последний раз редактировалось Taddy23, 15.03.2010 в 16:53. |
|
#9
|
|||
|
|||
|
В строке
procedure procedure1(senderL TObject); опечатка: senderL Видимо, поэтому и "Statement not allowed in interface part" |
|
#10
|
||||
|
||||
|
А так???
Код:
unit Unit 1;
interface
uses ........;
type
TForm1= class (TForm)
...
private
{}
pablic
{}
end;
var
Form1: TForm1;
procedure procedure1;//воткни ее сюда
implementation
uses ....;
{$R *.dfm} |
|
#11
|
|||
|
|||
|
У меня коллега по работе оказался чисто случайно преподавателем делфи, спросил у него, он тоже не сразу смог помочь. вместе методом тыка разобрались.
Оказалось надо так Код:
unit Unit 1;
interface
uses ........;
procedure procedure1(a:integer);
type
TForm1= class (TForm)
...
private
{}
pablic
{}
end;
var
Form1: TForm1;
implementation
uses ....;
{$R *.dfm}
procedure procedure1(a:integer);
begin
...
end;//
lmikle: Такс, ну что? 2 месяца рид-онли? |
|
#12
|
||||
|
||||
|
Цитата:
Просто нет слов...Из справки ( про Statements not allowed in interface part ) Цитата:
|