Главная страница
    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
3-71046
RUS1
2002-08-01 14:35
2002.08.22
Подскажите утилитку для администрации IB 6 (типа quickDesk)


1-71138
delta
2002-08-13 14:10
2002.08.22
Hooks


7-71386
Lelik17
2002-06-07 12:49
2002.08.22
Ошибка при попытке позвонить через модем


14-71367
Eugene_Jek_Efimochkin
2002-07-10 00:40
2002.08.22
Переустановка Delphi без потери компонентов


3-70957
dimonf
2002-08-04 12:51
2002.08.22
Подскажите почему у меня не работает база данных под Windows XP?





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