Главная страница
    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.064 c
2-1269178623
Delphist2
2010-03-21 16:37
2010.08.27
динамический массив


2-1272341393
Игорь
2010-04-27 08:09
2010.08.27
GetProcessAffinityMask


4-1232054248
Vemer
2009-01-16 00:17
2010.08.27
Как программа может узнать о запуске хранителя экрана?


2-1274170139
Крапивин Олег
2010-05-18 12:08
2010.08.27
Переключение датасетов


15-1264628812
Алексей111
2010-01-28 00:46
2010.08.27
пуассоновский поток





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский