Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

поясните,пожалуйста,ежели не сложно... [D6, Win2k]


Андрусь ©   (2002-08-13 18:32:00) 

Привет всем! Столкнулся с такой заморочкой,поясните пожалуйста,ежели не сложно.Есть 2 формы(Form1 - главная, Form2 не указана как auto-create).На одной кнопка,на другой-Memo.По клику на кнопку Form1 пишу обработчик:

Application.CreateForm(TForm,Form2);
Form2.Memo1.Text:="Привет";

Выдаётся ошибка - Access Violation.Почему не работает.


Skier   (2002-08-13 19:33:00) [1]

>Wasya
Можно и так : var Form2Variable:TForm оставтить просто
потом Form2Variable кастить на TForm2.
Дело вкуса автора...


Андрусь   (2002-08-13 19:32:00) [2]

Всё извиняюсь,тоже устал :-{


McSimm   (2002-08-13 19:28:00) [3]

>Извиняюсь... А если так:

Procedure TForm1.Form2Create(Form2Class:TComponentClass;Form2Variable:TForm);


Так нельзя. Можно так:
Procedure TForm1.Form2Create(Form2Class:TComponentClass; varForm2Variable);
Иначе Form2 не проинициализируется.

Интересно, а зачем? Зачем лишняя обертка для CreateForm?


Wasya   (2002-08-13 19:28:00) [4]

в процедуре Form2Create параметр Form2Variable должен быть var. Если просто поставишь varForm2Variable:TForm то компилятор не пропустит - несоответствие типов
правильный ответ-
functionTForm1.Form2Create(Form2Class:TComponentClass; varForm2Variable);
(*!!! Form2Variable - безтиповая переменная !!*)
Begin
Application.CreateForm(Form2Class,Form2Variable);
End;

procedureTForm1.Button1Click(Sender: TObject);
begin
Form2Create(TForm2,Form2);
Form2.Memo1.Text:="Привет";
end;



Skier   (2002-08-13 19:27:00) [5]

>Андрусь

TForm1.Form2Create(
Form2Class:TFormClass; varForm2Variable:TForm);


Андрусь   (2002-08-13 19:23:00) [6]

Там не в этом дело. При попытке выполнении

Form2.Memo1.Text:="Привет";

Form2=nil...


Андрусь   (2002-08-13 19:15:00) [7]

Нет,да возьми попробуй сам.


Skier   (2002-08-13 19:14:00) [8]

>Андрусь

замени TComponentClass на TFormClass


Skier   (2002-08-13 19:12:00) [9]

>Андрусь
Нет. Не то - устал :)
А что этот код тоже не работает ?


Skier   (2002-08-13 19:08:00) [10]

>Андрусь
Тогда нужно необходимые классы регистрировать...


Андрусь   (2002-08-13 19:02:00) [11]

Извиняюсь... А если так:

Procedure TForm1.Form2Create(Form2Class:TComponentClass;Form2Variable:TForm);
Begin
Application.CreateForm(Form2Class,Form2Variable);
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2Create(TForm2,Form2);
Form2.Memo1.Text:="Привет";
end;


Skier   (2002-08-13 18:34:00) [12]

>Андрусь
Application.CreateForm( TForm2,Form2);


Наверх

Титульная страница Поиск, карта сайта Написать письмо