|
#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 ) Цитата:
|