Вниз
Скачать: 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.068 c
15-1270102589
AlexDan
2010-04-01 10:16
2010.08.27
Думаю поспамить


15-1268978113
oldman
2010-03-19 08:55
2010.08.27
Драйвер для Xerox Phaser 3117 под МЕ


15-1267870116
AlexDan
2010-03-06 13:08
2010.08.27
php и мат. функции..


15-1270233026
Smile
2010-04-02 22:30
2010.08.27
Off Top дальше некуда))


15-1273480342
SKIPtr
2010-05-10 12:32
2010.08.27
закртие или контроль приложений в Mozilla и оперы




   Наверх