{{notification.text}}

MirGames

Jackrost
07.07.10 20:30
0
Довольно долго и всё чётко читал по модулям и разобрался как с ними работать, но вот у меня при одной ситуации пройстой выдаёт ошибку, ответ на которую я по статьям и хелпам ничего не нашёл. Всё довольно просто.

У меня иметься главная форма и дополнитльная (конечно для каждой свой модуль создаёться) . Дополнительная форма в момент запуска програмки невидима(открываеться по нажатию одной кнопки). На эту форму я разместил несколько Label'ов. Эти Lable'ы показывают некоторую информацию, которая должна обновляться при каких то действиях. Обновление Lable'ом я разместил в процедуре в модуле этой дополнительной формы. Но при этом Delphi выдаёт ошибку, что эти Lable'ы неидифицированны. Странно, что если это обновление запихнуть в Create, Active и т.д. этой формы , то ошибки выдавать не будет.

1.Хотелось бы знать из-за чего это происходит.
2.Неужели код обновления мне прийдётся делать только в главном модуле, а вызывать в дополнительном?

#1
аксакал
07.07.10 21:42
0
Код обращения к Label'у разместил в методе формы или просто в левой процедуре? Если второй вариант, то необходимо явно указывать объект которому принадлежит обрабатываемый Label, например Form1.Label1.Caption := ...;
Отредактировано: 08.07.10 17:11
#2
Jackrost
07.07.10 22:02
0
Пробовал, но не помогает. Также.
#3
аксакал
07.07.10 22:52
0
Телепаты в отпуске.
#4
Jackrost
07.07.10 23:36
0
Я для кода обновления просто сделал процедуру и поместил код в неё. Но что не вытворяй с Lable'ом (кстати схожая и с кнопками была) , на всё одна и тажен ошибка.
#5
08.07.10 01:43
0
Раз, уж ты так любишь юзать местоимения там где не надо, то нате:
мб ты забыл объявить эту процедуру в заголовке этого модуле и подключить этот модуль в uses реализации того модуля.

зы: а вообще да, телепаты в отпуске.
#6
Jackrost
08.07.10 01:51
0
В uses уже давно прикреплён 2 модуль к 1 . И да я процедуру пробовал объявлять в этом модуле, но проблема таже.

Я бы не обращался бы если бы всё не перепробывал. НО просто действительно уже не знаю как должно оно быть.
Отредактировано: 08.07.10 01:51
#7
08.07.10 05:05
0
Чел не понимает намёков, он тоже не телепат :)

Jackrost, код покажи :)
#8
Jackrost
08.07.10 14:56
0
Я намёк давно уж понял , просто дело то житейское . Но раз настаиваете.

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm2 = class(TForm)
Label9: TLabel;
Label8: TLabel;
Label7: TLabel;
Label6: TLabel;
Label5: TLabel;
Label4: TLabel;
Label3: TLabel;
Label2: TLabel;
Label10: TLabel;
Label1: TLabel;
Label11: TLabel;
StrBut: TButton;
AglBut: TButton;
IntBut: TButton;
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

uses
unit1;

{$R *.dfm}

procedure TForm2.FormActivate(Sender: TObject);
begin
Label1.Caption:='Уровень:'+InttoStr(Hero.Level);
Label2.Caption:='Опыт:'+InttoStr(Hero.EXP);
Label11.Caption:='Следующий уровень:'+InttoStr(Hero.NLEXP);
Label3.Caption:='Очки:'+InttoStr(Hero.SP);
Label4.Caption:='Жизни:'+InttoStr(Hero.MAXHP)+'/'+InttoStr(Hero.HP);
Label5.Caption:='Мана:'+InttoStr(Hero.MAXMP)+'/'+InttoStr(Hero.MP);
Label6.Caption:='Атака:'+InttoStr(Hero.minAtt)+'-'+InttoStr(Hero.maxAtt);
Label7.Caption:='Сила:'+InttoStr(Hero.Str);
Label8.Caption:='Ловкость:'+InttoStr(Hero.Agl);
Label9.Caption:='Разум:'+InttoStr(Hero.Int);
Label10.Caption:='Количество пройденых шагов:'+InttoStr(Hero.stepnum);
end;

end.


Тут ошибки нет, но если сделать вот так.

unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm2 = class(TForm)
Label9: TLabel;
Label8: TLabel;
Label7: TLabel;
Label6: TLabel;
Label5: TLabel;
Label4: TLabel;
Label3: TLabel;
Label2: TLabel;
Label10: TLabel;
Label1: TLabel;
Label11: TLabel;
StrBut: TButton;
AglBut: TButton;
IntBut: TButton;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

uses
unit1;

{$R *.dfm}

procedure LableRefresh;
begin
Label1.Caption:='Уровень:'+InttoStr(Hero.Level);
Label2.Caption:='Опыт:'+InttoStr(Hero.EXP);
Label11.Caption:='Следующий уровень:'+InttoStr(Hero.NLEXP);
Label3.Caption:='Очки:'+InttoStr(Hero.SP);
Label4.Caption:='Жизни:'+InttoStr(Hero.MAXHP)+'/'+InttoStr(Hero.HP);
Label5.Caption:='Мана:'+InttoStr(Hero.MAXMP)+'/'+InttoStr(Hero.MP);
Label6.Caption:='Атака:'+InttoStr(Hero.minAtt)+'-'+InttoStr(Hero.maxAtt);
Label7.Caption:='Сила:'+InttoStr(Hero.Str);
Label8.Caption:='Ловкость:'+InttoStr(Hero.Agl);
Label9.Caption:='Разум:'+InttoStr(Hero.Int);
Label10.Caption:='Количество пройденых шагов:'+InttoStr(Hero.stepnum);
end;

end.

То выдаёт ошибку.
Отредактировано: 08.07.10 14:57
#10
08.07.10 23:41
0
Jackrost
XProger почти угадал, но на одну циферку ошибся :P
#11
Jackrost
12.07.10 17:10
0
Мда, похоже я просто не понимал как надо правильно объявлять процедуру для данного модуля. Счас только заметил что надо перед процедурой писать TForm .

Ладно, простите что потратил ваше время. Спасибо за внимание.

P.S.Ах да.Тему можно закрывать.
Отредактировано: 12.07.10 17:20
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}