Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];

Вниз

Почему не работает присвоение TLabel.Caption?   Найти похожие ветки 

 
Marina_S   (2003-05-21 11:54) [0]

Я столкнулась со следующей проблемой: в новом модуле программы при выполнении команды form5.Label2.Caption:=StrPas(ptext); или вообще любого присвоения form5.LabelN.Caption какого-то значения
выдается ошибка (rase exeption... и т.д.). Помогите, пожалуйста, разобраться, в чем дело. Заранее спасибо!


 
Skier   (2003-05-21 12:03) [1]

>Marina_S (21.05.03 11:54)
Всё дело в ptext. Что-то там не то...


 
Skier   (2003-05-21 12:09) [2]

form5.Label2.Caption := "Hello, world !";
Тоже даст exception ?


 
Marina_S   (2003-05-21 12:11) [3]

Я проверяла Watch"ем - все нормально. И потом если заменить
это строку, например, строкой form5.Label2.Caption:="123"; - выдается та же самая ошибка. Аналогичный код (с ptext"ом) в другом модуле (с другой меткой, на другой форме) прекрасно работает....


 
DesWind   (2003-05-21 12:12) [4]

А може у тебя форма 5 не создана?


 
Skier   (2003-05-21 12:15) [5]

>Marina_S (21.05.03 12:11)

Не поможет ?

if Assigned(form5) then begin
with form5 do Label2.Caption := "123";
end; //if


 
Marina_S   (2003-05-21 12:16) [6]

:) Создана!


 
Marina_S   (2003-05-21 12:22) [7]

Теперь без всяких ошибок, но caption остается старым :(
Что же это такое с моей формой? И как это исправить?


 
Skier   (2003-05-21 12:24) [8]

>Marina_S (21.05.03 12:22)
Значит 2 варианта :
1) Форма не создана
2) Форма создана, но обнулён указатель на нее, т.е form5 = nil


 
Marina_S   (2003-05-21 12:30) [9]

form5:=TForm5.create(application); - достаточно для создания формы? Если без изменений заголовков меток, форма появляется без ошибок... А что делать с указателем?


 
Skier   (2003-05-21 12:32) [10]


> form5:=TForm5.create(application); - достаточно для создания
> формы?

Вполне.

> А что делать с указателем?

В каком смысле ?


 
Marina_S   (2003-05-21 12:37) [11]

Да тут замкнуты круг получается - в программе у меня форма создается form5:=TForm5.create(application); До изменения заголовков меток она прекрасно работала. После добавления
LabelN.Caption:=mstring; заголовки меток не изменяются, потому что форма не создана... Это как так?


 
Sheriff   (2003-05-21 12:38) [12]

Эххх... сейчас бы код посмотреть...
да побольше... ;)


 
DesWind   (2003-05-21 12:41) [13]

Для создания форм я использую Application.CreateForm(TForm5,form5). хотя и в товоем случае все должно работать. Но чем черт нешутит.


 
Skier   (2003-05-21 12:41) [14]

var
form5 : TForm5;
begin
form5 := TForm5.create(Application);
try
with form5 do begin
Label2.Caption := "Hello, world !";
ShowModal;
end; //with
finally
form5.Free;
end; //try
end;


 
Marina_S   (2003-05-21 12:47) [15]

Вот все, что касается пятой формы....
procedure TForm1.N3Click(Sender: TObject);
begin
form5:=TForm5.create(application);
end;

procedure TForm5.FormCreate(Sender: TObject);
begin
form1.visible:=false;
n:=0;
form5.test;
end;

procedure TForm5.Test;
var text:array[0..25] of char;
ptext:PChar;
a,b,i:integer;
begin
inc(n);
for i:=0 to 10 do
text[i]:=" ";
i:=0;
case n of
1: text[1+i]:="1";
2: text[1+i]:="2";
3: text[1+i]:="3";
4: text[1+i]:="4";
5: text[1+i]:="5";
end;
ptext:=text;
form5.label2.Caption:=StrPas(ptext);
end;

procedure TForm5.FormClose(Sender: TObject; var Action:
TCloseAction);
begin
Action:=caFree;
Form1.Visible:=true;
end;


 
DesWind   (2003-05-21 12:48) [16]

Тогда надо смотреть как создаеться LabelN;


 
Verg   (2003-05-21 12:53) [17]


> inc(n);
> for i:=0 to 10 do
> text[i]:=" "; text[i]:=#0;
> i:=0;
> case n of
> 1: text[1+i]:="1";
> 2: text[1+i]:="2";
> 3: text[1+i]:="3";
> 4: text[1+i]:="4";
> 5: text[1+i]:="5";
> end;





 
DesWind   (2003-05-21 12:54) [18]

Здесь бы я посоветовал написать так:
procedure TForm1.N3Click(Sender: TObject);
begin
if form5<>nil then
Application.CreateForm(TForm5,form5);
form5.Show;{form5.ShowModal}
end;
А что такое StrPas?


 
Skier   (2003-05-21 12:57) [19]

>Marina_S (21.05.03 12:47)

1)

procedure TForm1.N3Click(Sender: TObject);
begin
if form5 = nil then form5 := TForm5.create(application);
end;

procedure TForm5.FormCreate(Sender: TObject);
begin
form1.visible:=false;
n:=0;
form5.test;
end;

procedure TForm5.Test;
begin
form5.label2.Caption:= "Hello, world !";
end;

procedure TForm5.FormClose(Sender: TObject; var Action:
TCloseAction);
begin
Action:=caFree;
form5 := nil;
Form1.Visible:=true;
end;

2)Зачем использовать array[0..25] of char и PChar ?
String не подойдёт ?



 
DesWind   (2003-05-21 12:57) [20]

А вот это перенести в FormShow.

procedure TForm5.FormCreate(Sender: TObject);
begin
form1.visible:=false;
n:=0;
form5.test;
end;


 
Marina_S   (2003-05-21 13:03) [21]

Не помогает :( Но там явно проблемы с формой.


 
Hint   (2003-05-21 13:15) [22]

Замените
Form5.Label2.Caption:=StrPas(pText)
на
Label2.Caption:=StrPas(pText);


 
Marina_S   (2003-05-21 13:22) [23]

Это я уже тоже пробовала - не помогает... :(
Вообще, очень интересная ситуация получается:
После командной строки form5:=TForm5.create(application);
form5=nil....(в Watch"е). Я уже ничего не понимаю...:((((


 
Hint   (2003-05-21 13:25) [24]

А Form1 невидимой становится, событие Form5.OnCreate возникает?


 
Skier   (2003-05-21 13:29) [25]

>Marina_S (21.05.03 13:22)

procedure TForm1.N3Click(Sender: TObject);
var
form5 : TForm5;
begin
Visible:=False;
form5 := TForm5.create(Application);
try
with form5 do begin
Test;
ShowModal;
end; //with
finally
form5.Free;
Visible:=true;
end; //try
end;

procedure TForm5.FormCreate(Sender: TObject);
begin
n:=0;
end;

procedure TForm5.Test;
begin
label2.Caption:= "Hello, world !";
end;

procedure TForm5.FormClose(Sender: TObject; var Action:
TCloseAction);
begin
//убрать...
end;





 
Mike Kouzmine   (2003-05-21 13:32) [26]

см Verg © (21.05.03 12:53)


 
Marina_S   (2003-05-21 13:45) [27]

Да событие OnCreate возникало. Сейчас попробовала вместо form5 := TForm5.create(Application); написать Application.CreateForm(TForm5, Form5); и все стало работать :)
Честно говоря, я до сих пор не понимаю, в чем же была проблема
(т.е. в чем разница между этими командами)...
Всем большое спасибо!


 
Anatoly Podgoretsky   (2003-05-21 16:57) [28]

У тебя вероятно две переменные Form5


 
pasha_golub   (2003-05-21 17:27) [29]

По поводу создания форм еще в книге Фаронова написано, что предпочтительней использовать Application.CreateForm, но если честно, это первый раз, когда эта мысль подтвердилась...


 
Vorobyev Sergey   (2003-05-21 17:55) [30]


> У тебя вероятно две переменные Form5

Верно..
У меня такое было..

В myproject.dpr Delphi автоматически прописывает
Application.CreateForm(TForm1, Form1);

Я про это забыл и сам создавал
Form1 := TForm1.Create(Application);

Потом это приводило ко многим проблемам.. :(

>Marina_S
Проверь..


 
AbrosimovA   (2003-05-23 12:38) [31]

begin
try
Form1 := TForm1.Create(Application);
Form1.Visible:=false;
finally
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end;
end.


Я делал так и никаких проблем не было.


 
Skier   (2003-05-23 12:49) [32]

>pasha_golub © (21.05.03 17:27)

> По поводу создания форм еще в книге Фаронова написано, что
> предпочтительней использовать Application.CreateForm

Это почему ? Цитату можно...


 
KSergey   (2003-05-23 14:17) [33]

присоединяюсь к Skier © (23.05.03 12:49)
Хотя бось, что обоснований в книге нет...


 
Skier   (2003-05-23 14:29) [34]

>KSergey © (23.05.03 14:17)
Я поэтому и спрашиваю, что тоже боюсь что "обоснований в книге нет..."



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.015 c
14-13446
Style
2003-05-07 23:29
2003.06.05
Delphi Challenge: Judge Client - програмулька для судейства.


1-13186
AlexCool
2003-05-26 13:10
2003.06.05
Напечатать документ Word в Canvas?


3-13094
Taktic
2003-05-19 08:10
2003.06.05
Редактирование поле типа DateTime... маленький такой вопрос


1-13144
Delph1
2003-05-26 10:46
2003.06.05
Как поменять местами узлы в TListView?


1-13295
Goblinus
2003-05-24 18:00
2003.06.05
Как создать кнопку в панели задач для неглавного окна приложения?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский