Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
4-71439
serd_hhc
2002-06-15 08:45
2002.08.22
Wininet и закачка файлов.


3-70970
NDR
2002-08-02 13:56
2002.08.22
ОТМЕНА последнего действия !


1-71137
I
2002-08-13 12:45
2002.08.22
Как создать свой Button ч/з код.


6-71285
GM_
2002-06-10 09:41
2002.08.22
IP адрес отправки UDP пакета


14-71327
AL2002
2002-07-26 13:19
2002.08.22
Кто играл в детстве на Аtаri 8-бит





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский