|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.09.2007, 16:45 | #1 |
Пользователь
Регистрация: 12.09.2007
Сообщений: 34
|
Несколько форм.
Уважаемые подскажите пожалуйста следующие.
Как при нажатии на кнопку открыть вторую форму в приложении. НО надо сделать проверку. Если форма уже открыта то остановить её повторное открытие. Первая форма var Form1: TForm1; form2:Tform2; implementation var sys: string; begin if sys='Proc_v' then if formproc=nil then form2:=Tform2.Create(self); form2.Show; end; вторая форма procedure TFormProc.Image2Click(Sender: TObject); begin Close; end; Проблема: Просто не запускаутся программа. Не одно окно не отображается. Стоит удалить вторую форму и все нормально. Помогите чем можете. ПомощщщЩь!! Нужна помощь!!!! Последний раз редактировалось Sargon; 13.09.2007 в 20:11. |
13.09.2007, 21:50 | #2 |
Пользователь
Регистрация: 01.09.2007
Сообщений: 35
|
а вот это:
var sys: string; begin if sys='Proc_v' then if formproc=nil then form2:=Tform2.Create(self); form2.Show; end; к какой процедуре относится? |
13.09.2007, 22:00 | #3 |
Пользователь
Регистрация: 12.09.2007
Сообщений: 34
|
Ну к примеру нажатие на кнопку. В sys вводится значение текстового поля.
procedure TForm1.ImageOkClick(Sender: TObject); begin sys:=edit1.text; дальше надо сделать проверку и открыть другую форму если уже не открыто. end; |
13.09.2007, 22:30 | #4 |
Пользователь
Регистрация: 01.09.2007
Сообщений: 35
|
ну для начала сделай код таким
var sys: string; begin if sys='Proc_v' then if formproc=nil then begin form2:=Tform2.Create(self); form2.Show; end; end; |
14.09.2007, 00:58 | #5 |
Пользователь
Регистрация: 12.09.2007
Сообщений: 34
|
Эээ... Ну вобщем вот так вот веду загрузку второй формы.
Неполучается. Программа не показывает ни одной формы. uses ....,unit2; var Form1: TForm1;form2:Tform2; implementation procedure TForm1.Button1Click(Sender: TObject); var sys: string; begin if sys='Proc_v' then if form2=nil then begin form2:=Tform2.Create(self); form2.Show; end; end; end. |
14.09.2007, 09:43 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Значит надо искать ошибки в OnShow или OnCreate второй формы.
I'm learning to live...
|
14.09.2007, 11:30 | #7 |
Пользователь
Регистрация: 12.09.2007
Сообщений: 34
|
Вот вторая форма. Может Delphi глючит вроде ведь всё верно
var Form2: TForm2; implementation uses unit1; procedure TForm2.Button1Click(Sender: TObject); begin Close; end; end. Самое интерестное то что проект грузится. Но ни каких окон нет. Даже в диспетчере задач проект только в процесах виден. Как будто я его невидимым делал, хотя это не так. Event log Thread Start: Thread ID: 3440. Process Project1.exe (3436) крастным выделено Process Start: D:\InfoBase\Razrabotka\SargonProgra ms\New\Project1.exe. Base Address: $00400000. Process Project1.exe (3436) дальше всё нормально. Непонимаю... Хотябы интуитивно-в чем может быть ошибка и как её исправить? Последний раз редактировалось Sargon; 14.09.2007 в 11:42. |
14.09.2007, 11:40 | #8 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Sargon, А може глюк не в формах а в компонентах а них? Создай пустой проект без компонентов, только с одной кнопкой на первой форме...
I'm learning to live...
|
14.09.2007, 11:52 | #9 |
Пользователь
Регистрация: 12.09.2007
Сообщений: 34
|
OK спасибо. Так получилось. Буду думать над тем проектом. Еще вопрос рас на то пошло. Использовал код который писал тут. Дак при таком коде я могу загрузить вторую форму только один раз. Если убрать строчку
if form2=nil then begin то много раз. Но при этом сразу несколько штук. Нажал два раза две вторые формы открылись. Нужно чтобы этого небыло. Т.е. как сделать проверку: если окно открыто то не открывать копию этого окна.? |
14.09.2007, 12:08 | #10 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Sargon, убери Begin end, это тебе зря посоветовали.
Пусть будет так : if formproc=nil then form2:=Tform2.Create(self); form2.Show; В этом случае форма создастся только одна, но показать ее можно будет многократно. По поводу той ошибки там в скобочках вроде номер строки, на которой произошла ошибка, че там за оператор?
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
дизайнер форм | Witaliy | Общие вопросы Delphi | 1 | 27.04.2008 14:50 |
Обработка форм | igoist | Помощь студентам | 2 | 21.03.2008 22:23 |
несколько форм? | FAiver | Общие вопросы Delphi | 5 | 15.12.2007 22:58 |
Анимация форм | Volkogriz | Общие вопросы Delphi | 5 | 20.11.2007 00:32 |
Общение форм | Rapid | Общие вопросы Delphi | 9 | 17.11.2007 17:56 |