Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Глобализазия переменных, Пишет undeclired Memo1 
:(
    Опции темы
Гость_Виктор
Дата 24.3.2005, 22:01 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Здраствуйте Вот тренирусь потихоньку- Хочу чтобы 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 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 16.1.2005
Где: Киев

Репутация: 9
Всего: 16



Так не выйдет, потому что к моменту вызова основного блока форма и все компоненты на ней еще не созданы.
PM MAIL WWW   Вверх
Poseidon
Дата 25.3.2005, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Ошибка № 1
оператор ":=" - означает присваивание. Для сравнения нужно использовать "="

А теперь об основном:
Цитата
Хочу чтобы Memo1 было доступно и в основном теле программы
Это вообще для чего? Может можно по другому, но так сложно?

PS. Что бы не было ошибки (в данном примере) undeclired Memo1 пиши не
Код
If Memo1.Visible
а
Код
If Form1.Memo1.Visible




--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Blindman
Дата 25.3.2005, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 24.12.2004
Где: НиНо

Репутация: нет
Всего: нет



Так как ты написал точно не заработает. Вот корректный пример:

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Visible:=true;
If Memo1.Visible=true then ShowMessage('Ok');
end;


А можно и так: If Memo1.Visible then ShowMessage('Ok');

PM MAIL   Вверх
Poseidon
Дата 25.3.2005, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Blindman требуется
Цитата
Глобализазия
т.е. что бы было доступно не только в Button1Click. Только вот сделано не правильно. Я бы сделал так (если я правилоно понял суть задачи):
Код
procedure Myprocedure; // создаем наше событие в отдельной процедуре
begin
If Form1.Memo1.Visible then ShowMessage('что-то там');
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Visible:=true;
Myprocedure; // вызываем нашу процедуру с нужным событием
end;


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


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Coder
Дата 25.3.2005, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: 5
Всего: 11



Цитата(Poseidon @ 25.3.2005, 00:27)
Код
procedure Myprocedure; // создаем наше событие в отдельной процедуре
begin
If Form1.Memo1.Visible then ShowMessage('что-то там');
end;

а не проще эту процедуру прописать в разделе public, дабы каждый раз не упоминать о Form1? да и с такой процедурой меньше будет проблем при вызове ее из других модулей.
Гость_Виктор, зачем тебе Memo1 в основном теле программы? Он же (Мемо) объявлен в классе Form1 и будет доступен из любой процедуры этой форму для любых действий и проверок...
PM MAIL   Вверх
Poseidon
Дата 25.3.2005, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата
а не проще эту процедуру прописать в разделе public, дабы каждый раз не упоминать о Form1?
Конечно проще. Но у человека ошибка
Цитата
undeclired Memo1
и нужно ему указать способ избовится от нее. И это, по-моему, самый простой способ, даже когда мы используем его не в модуле формы Form1. Причем, если человек только
Цитата
тренирусь потихоньку
то ему легче будет понять именно это. А потом, со временем, он освоит и раздел public.


2Гость_Виктор
Укажи что именно ты хочешь от своей программы, а мы поможем тебе, как это сделать.
Добавлено @ 18:28
Цитата
а не проще эту процедуру прописать в разделе public, дабы каждый раз не упоминать о Form1?
Конечно проще. Но у человека ошибка
Цитата
undeclired Memo1
и нужно ему указать способ избовится от нее. И это, по-моему, самый простой способ, даже когда мы используем его не в модуле формы Form1. Причем, если человек только
Цитата
тренирусь потихоньку
то ему легче будет понять именно это. А потом, со временем, он освоит и раздел public.


2Гость_Виктор
Укажи что именно ты хочешь от своей программы, а мы поможем тебе, как это сделать.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Гость_Viktor
Дата 26.3.2005, 01:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Срастбо за ответы а теперь подробнее можно как именно ее в раздели паблик описать- чтбы была доступнее всем.

Poisodon понял что я хочу
  Вверх
Blindman
Дата 26.3.2005, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 24.12.2004
Где: НиНо

Репутация: нет
Всего: нет



Просто вставляешь в этот раздел её описание. Например:

unit Unit1;
........................
private
{ Private declarations }
public
{ Public declarations }
Procedure MyProcedure;
end;

.........................

procedure Myprocedure; // создаем наше событие в отдельной процедуре
begin
If Form1.Memo1.Visible then ShowMessage('что-то там');
end;

end.

Всё, процедуру можно вызавать в любом месте программы.
PM MAIL   Вверх
Poseidon
Дата 26.3.2005, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Код
type
  TForm1 = class(TForm)

  private
    
  public
    procedure MyProcedure; // во тута объявляем;

  end;
...

procedure TForm1.MyProcedure; // вот так вот пишим.
begin
...
end;


Blindman, опередил! Только вот не
Код
procedure Myprocedure; // создаем наше событие в отдельной процедуре
а
Код
procedure TForm1.Myprocedure; // создаем наше событие в отдельной процедуре
а так все правильно!

Это сообщение отредактировал(а) Poseidon - 26.3.2005, 01:41


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Blindman
Дата 26.3.2005, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 24.12.2004
Где: НиНо

Репутация: нет
Всего: нет



Цитата(Poseidon @ 26.3.2005, 01:35)
Blindman, опередил! Только вот не
Код
procedure Myprocedure; // создаем наше событие в отдельной процедуре
а
Код
procedure TForm1.Myprocedure; // создаем наше событие в отдельной процедуре
а так все правильно!

Разве в том же самом модуле, где объявлена процедура, так необходимо дописывать предка?
PM MAIL   Вверх
Poseidon
Дата 26.3.2005, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата
Разве в том же самом модуле, где объявлена процедура, так необходимо дописывать предка?
Да, иначе ошибка
Цитата
Unsatisfied forward or external declaration: '<element>'



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Blindman
Дата 26.3.2005, 02:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 24.12.2004
Где: НиНо

Репутация: нет
Всего: нет



Учту на будущее. Спасибо.
PM MAIL   Вверх
Гость_Viktor
Дата 26.3.2005, 21:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











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 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











expected ( but found; ошибка!!!
  Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.