Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2007, 13:52   #1
Иванчо
Пользователь
 
Регистрация: 20.09.2007
Сообщений: 11
По умолчанию ошибся с областью видимости ?

ребята, есть две формы: Form8VedSelect и Form8VedQReport.
форма Form8VedSelect создана динамически:

var Child: TForm8VedSelect;
begin
Child:=TForm8VedSelect.Create(Appli cation);
Child.FormStyle:=fsMdiChild;
end;

форма Form8VedQReport - "Autocreate"

метод первой Form8VedSelect формы вызывает изменяет одно из свойств второй формы, и это приводит к выполнению метода QRLabel3Print второй формы. Так из этого метода переменная Form8VedSelect равна nil. И никак не удаётся получить значение её поля. Где я ошибся ?
Иванчо вне форума Ответить с цитированием
Старый 25.10.2007, 14:14   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну код работы с переменой и ее описание в студию
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.10.2007, 14:24   #3
Иванчо
Пользователь
 
Регистрация: 20.09.2007
Сообщений: 11
По умолчанию

простите, что ?
Иванчо вне форума Ответить с цитированием
Старый 25.10.2007, 14:43   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну как ты описал ту переменку и как к ней обращаешся...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.10.2007, 15:00   #5
Иванчо
Пользователь
 
Регистрация: 20.09.2007
Сообщений: 11
По умолчанию

в
unit Vedomost8Select;

type
TForm8VedSelect = class(TForm)
///...
public
{ Public declarations }

ProizvID: Integer;
ProizvName: String;
ProizvPercent: currency;
mePercent: String;
end;
var
Form8VedSelect: TForm8VedSelect;



в Vedomost8QReport написано:

var
Form8VedQReport: TForm8VedQReport;
implementation
uses MainForm, Vedomost8Select;


procedure TForm8VedQReport.QuickRep1BeforePri nt(Sender: TCustomQuickRep; var PrintReport: Boolean);
begin
QRLabelProizv.Caption := '';
QRLabelProizv.Caption := Form8VedSelect.ProizvName; // здесь ругается access violationi at address in module ...
QRLabelProizv.Refresh;
QRLabel3.Caption:='';
QRLabel3.Caption:='Процент: ' + Form8VedSelect.mePercent;
QRLabel3.Refresh;
end;
Иванчо вне форума Ответить с цитированием
Старый 25.10.2007, 15:12   #6
Maslan
Форумчанин
 
Регистрация: 15.10.2007
Сообщений: 147
По умолчанию

Цитата:
QRLabelProizv.Caption := Form8VedSelect.ProizvName; // здесь ругается access violationi at address in module ...
А форма Form8VedSelect в это время существует?
Может писать так?
Код:
QRLabelProizv.Caption := Child.ProizvName;

Последний раз редактировалось Maslan; 25.10.2007 в 15:25.
Maslan вне форума Ответить с цитированием
Старый 25.10.2007, 16:02   #7
Иванчо
Пользователь
 
Регистрация: 20.09.2007
Сообщений: 11
По умолчанию

ещё один глюк, наверное связанный с тем же:


type
TForm8VedSelect = class(TForm)
public
{ Public declarations }
cmonth, cMonthMin : Integer;
// ...
// ----------------------------------------
procedure TForm8VedSelect.btnPrintClick(Sende r: TObject);
begin
cmonth := cbMonth.ItemIndex + cMonthMin;
// тоже ничего не видит ни cmonth ни cbMonth
// если этот метод из другой формы вызывается, а если из этой же, то видит
// ...
// ----------------------------------------

Последний раз редактировалось Иванчо; 25.10.2007 в 16:06.
Иванчо вне форума Ответить с цитированием
Старый 25.10.2007, 16:05   #8
Maslan
Форумчанин
 
Регистрация: 15.10.2007
Сообщений: 147
По умолчанию

Дай полный исходник, плз...
Maslan вне форума Ответить с цитированием
Старый 25.10.2007, 16:35   #9
Иванчо
Пользователь
 
Регистрация: 20.09.2007
Сообщений: 11
По умолчанию

Ага. Установил для формы Form8VedSelect Autocreate.
Так нормально заработало.
А ещё, создавалась- то форма:
Child := TForm8VedSelect.Create(Application)
и поэтому имени Form8VedSelect в помине небыло.
А теперь если хочу из другой формы её трогать, то нужно глобальную переменную инициализировать ( := Create(Application) )

Спасибо, ребята.
Иванчо вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать чтобы новые строки всегда были в области видимости? neugadal Microsoft Office Excel 9 06.09.2008 12:23
проблемы с областью видимости переменной titan-prog Помощь студентам 2 11.07.2008 18:58
область видимости переменных. С++ Prestigio Помощь студентам 10 07.07.2008 15:55
Не разберу где ошибся, по моему много напутал Forro Паскаль, Turbo Pascal, PascalABC.NET 6 14.01.2008 14:19
область видимости ? artem779 Общие вопросы Delphi 3 14.09.2007 09:34