| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Глобализазия переменных |
| Автор: Гость_Виктор 24.3.2005, 22:01 |
| Здраствуйте Вот тренирусь потихоньку- Хочу чтобы Memo1 было доступно и в основном теле программы а как это сделать? В чем ошибка? unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Visible:=true; end; begin If Memo1.Visible:=true then ShowMessage('Âñå îê'); end. |
| Автор: s-mike 24.3.2005, 22:16 |
| Так не выйдет, потому что к моменту вызова основного блока форма и все компоненты на ней еще не созданы. |
| Автор: Poseidon 25.3.2005, 00:11 | ||||||
| Ошибка № 1 оператор ":=" - означает присваивание. Для сравнения нужно использовать "=" А теперь об основном:
PS. Что бы не было ошибки (в данном примере) undeclired Memo1 пиши не
|
| Автор: Blindman 25.3.2005, 00:17 |
| Так как ты написал точно не заработает. Вот корректный пример: procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Visible:=true; If Memo1.Visible=true then ShowMessage('Ok'); end; А можно и так: If Memo1.Visible then ShowMessage('Ok'); |
| Автор: Poseidon 25.3.2005, 00:27 | ||||
Blindman требуется
Причем вызывать процедуру Myprocedure можно из любой процедуры или функции модуля. |
| Автор: Coder 25.3.2005, 12:40 | ||||
а не проще эту процедуру прописать в разделе public, дабы каждый раз не упоминать о Form1? да и с такой процедурой меньше будет проблем при вызове ее из других модулей. Гость_Виктор, зачем тебе Memo1 в основном теле программы? Он же (Мемо) объявлен в классе Form1 и будет доступен из любой процедуры этой форму для любых действий и проверок... |
| Автор: Poseidon 25.3.2005, 18:24 | ||||||||||||
2Гость_Виктор Укажи что именно ты хочешь от своей программы, а мы поможем тебе, как это сделать. Добавлено @ 18:28
2Гость_Виктор Укажи что именно ты хочешь от своей программы, а мы поможем тебе, как это сделать. |
| Автор: Гость_Viktor 26.3.2005, 01:09 |
| Срастбо за ответы а теперь подробнее можно как именно ее в раздели паблик описать- чтбы была доступнее всем. Poisodon понял что я хочу |
| Автор: Blindman 26.3.2005, 01:33 |
| Просто вставляешь в этот раздел её описание. Например: unit Unit1; ........................ private { Private declarations } public { Public declarations } Procedure MyProcedure; end; ......................... procedure Myprocedure; // создаем наше событие в отдельной процедуре begin If Form1.Memo1.Visible then ShowMessage('что-то там'); end; end. Всё, процедуру можно вызавать в любом месте программы. |
| Автор: Poseidon 26.3.2005, 01:35 | ||||||
Blindman, опередил! Только вот не
|
| Автор: Blindman 26.3.2005, 01:45 | ||||||
Разве в том же самом модуле, где объявлена процедура, так необходимо дописывать предка? |
| Автор: Poseidon 26.3.2005, 02:09 | ||||
|
| Автор: Blindman 26.3.2005, 02:16 |
| Учту на будущее. Спасибо. |
| Автор: Гость_Viktor 26.3.2005, 21:11 |
| unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Menus; type TForm1 = class(TForm) RichEdit1: TRichEdit; MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; procedure N3Click(Sender: TObject); private { Private declarations } public procedure Val; { Public declarations } end; var Form1: TForm1; implementation procedure TForm1.val; begin Form1.Richedit1.Clear; Form1.RichEdit1.Lines.LoadFromFile('c:\65'); Form1.RichEdit1.Font.Size:=13; Form1.RichEdit1.Font.Name:='Lucida Console' end; {$R *.dfm} procedure TForm1.N3Click(Sender: TObject); begin Showmessage('Ïîêà!'); Close; end; begin Val; end. |
| Автор: Гость_Viktor 26.3.2005, 21:14 |
| expected ( but found; ошибка!!! |
| Автор: Blindman 26.3.2005, 23:26 | ||
Так ты всунь вызов процедуры Val в другой процедуре и все будет пучком, например
Если я не ошибаюсь, то ты перешел на Дельфи с Паскаля? Тут немного все по другому. |
| Автор: Poseidon 27.3.2005, 01:50 | ||||||
PS. И еще. Если ты указываешь предка в имени процедуры, то можно не указывать его в именах компонентов, т.е. не
а
Хотя это не ошибка. |
| Автор: p0s0l 27.3.2005, 11:20 | ||
| Люди, вам уже в самом начале s-mike сказал причину... Так как сделано - делать нельзя! Блок begin ... end. - называется блоком инициализации модуля (обычно пишут initialization ... end.), во время этой инициализации еще никаких форм и мемов нет! Их нельзя использовать... Еще даже не все модули проинициализировались... Засунь вызов Val в событие OnCreate... Добавлено @ 11:22
|
| Автор: Poseidon 27.3.2005, 17:36 | ||||
|