Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1266165565
NewZ
2010-02-14 19:39
2010.08.27
Class.


15-1274775765
bss
2010-05-25 12:22
2010.08.27
D2006, не работает "Find declaration" на DevExpress объектах


15-1264519606
Igor_guest
2010-01-26 18:26
2010.08.27
распространение продукта на Delphi


2-1270073429
Виктор
2010-04-01 02:10
2010.08.27
Запретить печать из TWebBrowser


2-1275332438
Delphi
2010-05-31 23:00
2010.08.27
Как это будет на Delphi?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский