Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2007, 16:45   #1
Sargon
Пользователь
 
Аватар для Sargon
 
Регистрация: 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.
Sargon вне форума Ответить с цитированием
Старый 13.09.2007, 21:50   #2
rubi
Пользователь
 
Регистрация: 01.09.2007
Сообщений: 35
По умолчанию

а вот это:

var
sys: string;
begin
if sys='Proc_v' then
if formproc=nil then
form2:=Tform2.Create(self);
form2.Show;
end;

к какой процедуре относится?
rubi вне форума Ответить с цитированием
Старый 13.09.2007, 22:00   #3
Sargon
Пользователь
 
Аватар для Sargon
 
Регистрация: 12.09.2007
Сообщений: 34
По умолчанию

Ну к примеру нажатие на кнопку. В sys вводится значение текстового поля.
procedure TForm1.ImageOkClick(Sender: TObject);
begin
sys:=edit1.text;
дальше надо сделать проверку и открыть другую форму если уже не открыто.
end;
Sargon вне форума Ответить с цитированием
Старый 13.09.2007, 22:30   #4
rubi
Пользователь
 
Регистрация: 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;
rubi вне форума Ответить с цитированием
Старый 14.09.2007, 00:58   #5
Sargon
Пользователь
 
Аватар для Sargon
 
Регистрация: 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.
Sargon вне форума Ответить с цитированием
Старый 14.09.2007, 09:43   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Значит надо искать ошибки в OnShow или OnCreate второй формы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2007, 11:30   #7
Sargon
Пользователь
 
Аватар для Sargon
 
Регистрация: 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.
Sargon вне форума Ответить с цитированием
Старый 14.09.2007, 11:40   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Sargon, А може глюк не в формах а в компонентах а них? Создай пустой проект без компонентов, только с одной кнопкой на первой форме...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2007, 11:52   #9
Sargon
Пользователь
 
Аватар для Sargon
 
Регистрация: 12.09.2007
Сообщений: 34
По умолчанию

OK спасибо. Так получилось. Буду думать над тем проектом. Еще вопрос рас на то пошло. Использовал код который писал тут. Дак при таком коде я могу загрузить вторую форму только один раз. Если убрать строчку
if form2=nil then begin
то много раз. Но при этом сразу несколько штук. Нажал два раза две вторые формы открылись. Нужно чтобы этого небыло. Т.е. как сделать проверку: если окно открыто то не открывать копию этого окна.?
Sargon вне форума Ответить с цитированием
Старый 14.09.2007, 12:08   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Sargon, убери Begin end, это тебе зря посоветовали.
Пусть будет так :

if formproc=nil then form2:=Tform2.Create(self);
form2.Show;

В этом случае форма создастся только одна, но показать ее можно будет многократно.

По поводу той ошибки там в скобочках вроде номер строки, на которой произошла ошибка, че там за оператор?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дизайнер форм 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