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

Вниз

Create form   Найти похожие ветки 

 
anod ©   (2004-02-15 00:43) [0]

В факе посмотрел, как чделать заставку для программы, так вот на этом спотыкается...
...
implementation
...
uses logo;
..
Form2:=TForm2.Create(nil);

В project.dpr
logo in "logo.pas" {Form2};

Что ему не нравиться?


 
Defunct   (2004-02-15 01:13) [1]

В приведенном коде все в порядке.

> В факе посмотрел, как чделать заставку для программы
Делай по FAQу, видно что-то не учел.

А что представляет собой TForm2? Если это заставка, там наверное есть таймер, может этот таймер что-то дергает раньше времени.
Имеется ли в DPR строка:
Application.CreateForm(TForm1, Form1);?

Да и было бы неплохо указать какая ошибка появляется, а то так ничего сказать нельзя.


 
Defunct   (2004-02-15 01:14) [2]

Defunct (15.02.04 01:13) [1]
>Application.CreateForm(TForm1, Form1);?
читать
Application.CreateForm(TForm2, Form2);?


 
anod ©   (2004-02-15 01:23) [3]


> А что представляет собой TForm2? Если это заставка, там
> наверное есть таймер, может этот таймер что-то дергает раньше
> времени.
> Имеется ли в DPR строка:
> Application.CreateForm(TForm1, Form1);?

TForm2 -
FormCreate:
const
PBM_SETBARCOLOR = WM_USER+9;
begin
SendMessage(ProgressBar1.Handle,PBM_SETBARCOLOR,0,RGB(111,180,56));
Form2.Width:=Image1.Width;
Form2.Height:=Image1.Height;
end;
B все....

>Application.CreateForm(TForm2, Form2);
Зачем эта строка, если я хочу динамически форму создать???
Но добавление её ничего не правит...

Ошибка: Access violation at address .. in module Project1.exe

Испарвление Form2:=TForm2.Create(nil); на Application.CreateForm(TForm2, Form2);
Вроде испарвило все, но не понятно почему вообще была ошибка...


 
Юрий Зотов ©   (2004-02-15 02:08) [4]

> Form2.Width:=Image1.Width;
> Form2.Height:=Image1.Height;

Зачем в методе класса использовать глобальную ссылку на его же собственный экземпляр? Вот так и нарываются на Access Violation. Уберите Form2 совсем.


 
anod ©   (2004-02-15 02:37) [5]

Чтобы понятнее было...
Спасибо, помогло.... А почему в методе класса использовать глобальную ссылку на его же собственный экземпляр ошибка?
А что можно использовать вместо, sender?


 
Defunct   (2004-02-15 02:59) [6]

anod © (15.02.04 02:37) [5]
> А почему в методе класса использовать глобальную ссылку на его же собственный экземпляр ошибка?

anod © (15.02.04 01:23) [3]
FormCreate:

Потому что собственный экземпляр еще не существует на момент вызова конструктора.


 
Юрий Зотов ©   (2004-02-15 03:00) [7]

> anod © (15.02.04 02:37) [5]

> почему в методе класса использовать глобальную ссылку на его
> же собственный экземпляр ошибка?

Это может быть ошибкой, а может и нет. Просто при использовании сылок надо быть аккуратным, а глобальных - вдвойне.

Пример - создаю 2 экземпляра одного класса (глобальная ссылка указывает на последний). Убиваю его (глобальная ссылка указывает в никуда). Первый экземпляр вызывает какой-то свой метод, где использована эта глобальная ссылка - и здравствуй, Access Violation.

Вообще, старайтесь всячески избегать глобальных ссылок - это очень распространенный источник ошибок.

> А что можно использовать вместо, sender?

Ничего не нужно. По умолчанию используется Self.


 
Defunct   (2004-02-15 03:05) [8]

Давайте напишем в такой форме и все будет понятно:

P:Pointer;
Form2 : TForm2;

Begin
..
P := TForm2.Create(Nil); // Тут Form2 = nil
Form2 := P; // Тут P указывает на экземпляр TForm2
.. // Тут Form2 указывает на экземпляр TForm2
End;


Начинает выполняться конструктор, он вызывает FormCreate, после завершения, возвращает ссылку на созданный экземпляр. И только после этого можно использовать экземпляр.


 
anod ©   (2004-02-15 03:16) [9]

Спасибо, значит Self.


 
Alexander666 ©   (2004-02-15 11:09) [10]

А какая такая заставка? При запуске приложения что ли?



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

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

Наверх




Память: 0.49 MB
Время: 0.017 c
7-94198
Nau
2003-12-08 17:35
2004.02.29
Запуск проги до загрузки системы


3-93797
Victor!
2004-01-31 15:12
2004.02.29
Вопрос по Microsoft Jet


8-94033
Вера
2003-10-29 11:35
2004.02.29
Image


6-94062
NoIdeaAboutName
2003-12-22 22:52
2004.02.29
Как отловить установление dialup соединения,.


1-93955
Anton
2004-02-17 11:46
2004.02.29
Как загрузить и сохранить значения переменных из файла в файл?