Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.22;
Скачать: CL | DM;

Вниз

поясните,пожалуйста,ежели не сложно...   Найти похожие ветки 

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

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

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

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


 
Skier ©   (2002-08-13 18:34) [1]

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


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

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

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 19:08) [3]

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


 
Skier ©   (2002-08-13 19:12) [4]

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


 
Skier ©   (2002-08-13 19:14) [5]

>Андрусь

замени TComponentClass на TFormClass


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

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


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

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

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

Form2=nil...


 
Skier ©   (2002-08-13 19:27) [8]

>Андрусь

TForm1.Form2Create(
Form2Class:TFormClass; var Form2Variable:TForm);


 
McSimm ©   (2002-08-13 19:28) [9]

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

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


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

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


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

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

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




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

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


 
Skier ©   (2002-08-13 19:33) [12]

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



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

Текущий архив: 2002.08.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
4-71435
jj
2002-06-18 20:44
2002.08.22
Сообщения - где эта очередь и кто крайний?


4-71447
Andrew_k
2002-06-20 15:26
2002.08.22
Как найти следующий RichEdit?


1-71239
eruc
2002-08-11 18:28
2002.08.22
вопрос про (........)


1-71256
Вечно молодой
2002-08-11 22:05
2002.08.22
TFileStream


4-71421
МитяЙ2
2002-06-14 13:21
2002.08.22
Перезагрузка - это...