Форум: "Основная";
Текущий архив: 2002.08.22;
Скачать: [xml.tar.bz2];
Внизпоясните,пожалуйста,ежели не сложно... Найти похожие ветки
← →
Андрусь (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c