![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не получается создать окно. [D7, XP]
Denisrf © (2010-06-06 10:19:00)Всем доброго времени! Вот такая проблема, нужно из одного окна вызвать другое, кторое еще не создано при запуске. Пишу вот это - не работает:
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;
Юрий Зотов (2010-06-06 16:34:00) [1]
> Denisrf (06.06.10 13:50) [5]
Скорее всего, не нарушение прав доступа, а Access Violation (обращение к нераспределенной памяти). Если Вы прописали caFree, то при закрытии формы 2 она автоматически уничтожается - и если после этого обратиться к переменной Form2, то получим ту самую ошибку. Видимо, где-то у Вас такое обращение есть.
Вам нужно определиться - хотите ли вы создавать форму 2 каждый раз заново, или хотите создать ее только один раз, а потом только показывать и прятать. Если первое, то удалите переменную Form2 совсем и работайте без нее. А если второе, то не надо создавать TForm2 в коде, включите ее в AutoCreate и потом только вызывайте ее методы Show и Hide.
Denisrf (2010-06-06 15:04:00) [2]Ладно спасибо дельфистам от сишника!
Плохиш (2010-06-06 14:27:00) [3]Значит ошибка в неприведённом коде.
Denisrf (2010-06-06 13:50:00) [4]ППЦ вылетает с ошибкой эта процедура, пишет что-то про нарушение прав доступа.
Юрий Зотов (2010-06-06 13:03:00) [5]if r1 = r2 then
begin
Form1.Visible := False;
TForm2.Create(Application).Show
end
else
Form1.Edit2.text := '';
И в обработчике TForm2.OnClose пропишите Action := caFree.
Leonid Troyanovsky (2010-06-06 10:55:00) [6]
> Denisrf (06.06.10 10:46) [2]
> Да тут уж не до вкуса, но вроде Application.CreateForm(TForm2,
> Form2) - сначала надо, а потом уже Show, разве нет?
Для того, чтобы вызвать метод объекта, его надо создать.
Дык, а что ж не работает?
--
Regards, LVT.
Denisrf (2010-06-06 10:46:00) [7]Да тут уж не до вкуса, но вроде Application.CreateForm(TForm2, Form2) - сначала надо, а потом уже Show, разве нет?
Leonid Troyanovsky (2010-06-06 10:33:00) [8]
> Denisrf (06.06.10 10:19)
> окна вызвать другое
Вызвать - Show?
И, во-ще, procedure check3 д.б. методом,
а использование переменных форм - Form1, Form2
это дурной вкус.
--
Regards, LVT.