Вниз
Скачать: CL | DM;

Не получается создать окно.   Найти похожие ветки 

 
Denisrf   (2010-06-06 10:19) [0]

Всем доброго времени! Вот такая проблема, нужно из одного окна вызвать другое, кторое еще не создано при запуске. Пишу вот это - не работает:

procedure check3; {сравнение значений}
begin   {copy(r1,1,30)=copy(r2,1,30)}
 if (r1=r2) then begin
               Form1.Visible:=False;
               
              Application.CreateForm(TForm2, Form2);
             

             end
         else  begin
                  form1.Edit2.text:="";

               end;


 
Leonid Troyanovsky ©   (2010-06-06 10:33) [1]


> Denisrf   (06.06.10 10:19)  

> окна вызвать другое

Вызвать - Show?

И, во-ще, procedure check3 д.б. методом,
а использование переменных форм - Form1, Form2
это дурной вкус.

--
Regards, LVT.


 
Denisrf   (2010-06-06 10:46) [2]

Да тут уж не до вкуса, но вроде Application.CreateForm(TForm2, Form2) - сначала надо, а потом уже Show, разве нет?


 
Leonid Troyanovsky ©   (2010-06-06 10:55) [3]


> Denisrf   (06.06.10 10:46) [2]

> Да тут уж не до вкуса, но вроде Application.CreateForm(TForm2,
>  Form2) - сначала надо, а потом уже Show, разве нет?

Для того, чтобы вызвать метод объекта, его надо создать.
Дык, а что ж не работает?

--
Regards, LVT.


 
Юрий Зотов ©   (2010-06-06 13:03) [4]

if r1 = r2 then
begin
 Form1.Visible := False;
 TForm2.Create(Application).Show
end
else
 Form1.Edit2.text := "";

И в обработчике TForm2.OnClose пропишите Action := caFree.


 
Denisrf   (2010-06-06 13:50) [5]

ППЦ вылетает с ошибкой эта процедура, пишет что-то про нарушение прав доступа.


 
Плохиш ©   (2010-06-06 14:27) [6]

Значит ошибка в неприведённом коде.


 
Denisrf   (2010-06-06 15:04) [7]

Ладно спасибо дельфистам от сишника!


 
Юрий Зотов ©   (2010-06-06 16:34) [8]


> Denisrf   (06.06.10 13:50) [5]

Скорее всего, не нарушение прав доступа, а Access Violation (обращение к нераспределенной памяти). Если Вы прописали caFree, то при закрытии формы 2 она автоматически уничтожается - и если после этого обратиться к переменной Form2, то получим ту самую ошибку. Видимо, где-то у Вас такое обращение есть.

Вам нужно определиться - хотите ли вы создавать форму 2 каждый раз заново, или хотите создать ее только один раз, а потом только показывать и прятать. Если первое, то удалите переменную Form2 совсем и работайте без нее. А если второе, то не надо создавать TForm2 в коде, включите ее в AutoCreate и потом только вызывайте ее методы Show и Hide.



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.045 c
15-1265977848
TStas
2010-02-12 15:30
2010.08.27
Из любопытства: как функция возвращает значение?


15-1264270853
Нехочуха
2010-01-23 21:20
2010.08.27
Атака мертвецов


15-1265314234
Kerk
2010-02-04 23:10
2010.08.27
Задачка


2-1272351299
noob_one
2010-04-27 10:54
2010.08.27
ВЫзвываю форму из библиотеки. Она отображается отдельной


15-1271004598
Константинов
2010-04-11 20:49
2010.08.27
Недоступность ресурсов




   Наверх