Главная страница
    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.01 c
3-70993
nikolo
2002-07-31 14:06
2002.08.22
Как в BDE создать алиас на MS SQL Server 2000?


3-71021
bobr12
2002-08-01 11:04
2002.08.22
Хранимые процедуры в InterBase и модификация записей.


1-71125
maxim2
2002-08-13 10:05
2002.08.22
Можно ли отловить двойной клик правой клавиши мыши на элементе


14-71362
ZLOST
2002-07-28 07:22
2002.08.22
Народ,поможите,срочно нужен компонент типа TXPForm можно и Dll-ку


1-71194
Katie
2002-08-09 20:17
2002.08.22
установка RxLib v 2.75





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