Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизНе получается создать окно. Найти похожие ветки
← →
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 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.058 c