Delphi проверка существования формы
Господа программисты! Подскажите.
Есть MDI приложение. При нажатии на кнопку создается форма с DBGrid. Вызывается метод Show. Как сделать, чтобы при повторном нажатии форма не создавалась еще раз, а просто показывалась. Т.е., как проверить, создана ли MDIChild форма.
← →
AngeL B. ( 2002-07-19 10:36 ) [1]
← →
sniknik ( 2002-07-19 10:42 ) [2]
по какому нибудь признаку формы Caption например.
Form1.MDIChildCount
Form1.MDIChildren
← →
fool ( 2002-07-19 10:56 ) [3]
С MDI будь внимательным: прога точно не знает что с чилдом (есть он или нет) поетому лучше всего делать так:
при «нажатии на кнопку «:
if FrmTTN = nil then FrmTTN := TFrmTTN.Create(self);
FrmTTN.WindowState := wsMaximized;
FrmTTN.Show;
procedure TFrmMDIChild.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := CaFree;
end;
procedure TFrmTTN.FormDestroy(Sender: TObject);
begin
FrmMDIChild := nil;
end;
← →
Sergey13 ( 2002-07-19 10:57 ) [4]
Я долго искал в свое время решение этого вопроса и вот к чему пришел
function ExistsForm(S:String):Boolean;
var i:integer;
begin
result:=False;
for i:=0 to screen.FormCount-1 do
if uppercase(screen.Forms[i].name)=uppercase(s) then result:=True;
end;
← →
sniknik ( 2002-07-19 11:31 ) [6]
зачем сложности? поиск по компонентам формам. нужно только чилды проверить. примерно как Sergey13 © (19.07.02 10:57) только используя DIChildCount у главной формы (количиство чилдов) и MDIChildren (масив из них). чего еще?
← →
Stecoff ( 2002-07-19 13:25 ) [7]
← →
Stecoff ( 2002-07-19 13:30 ) [8]
Извините господа. Все заработало. Спасибо огромное.
Проверка включённости форм.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Проверка на существования форм
Добрый день У меня на главной форме, меню программы с 7 вкладками, каждая вкладка ведет на.
Имеешь в виду видимость форм?
Если да, то после implementation каждой из Form2, Form4, Form7, Form8
добавь Uses Unit1; (если ты не менял название юнитов, а если менял, то прописывай свое название)
Просто в Uses Unit7 (form7) добавь Uses2, Uses4, Uses7, Uses8 соответственно
а в FormCreate форм (2, 4, 7, добавь
Имеешь в виду видимость форм?
Если да, то после implementation каждой из Form2, Form4, Form7, Form8
добавь Uses Unit1; (если ты не менял название юнитов, а если менял, то прописывай свое название)
Просто в Uses Unit7 (form7) добавь Uses2, Uses4, Uses7, Uses8 соответственно
а в FormCreate форм (2, 4, 7, добавь
Добавлено через 44 секунды
Я УЖЕ НАПИСАЛ, ЧТО АКТИВНОСТЬ МНЕ НЕ НУЖНА, УЖЕ КАКОЙ РАЗ И КТО ПРО НЕЁ ПИШЕТ, да и позорную ошибку в коде допустили вы.
Добавлено через 18 минут
Даже пробовал на каждой форме создать переменные opened, при onShow они true, при onHide они false, и ошибка, как при активности.
Я описал вопрос вполне нормально, до вас было чётко написано, что нужно, а вы ещё и написали if a:=1 then. гений кода.
Добавлено через 2 минуты
Проверка форм на заполнение
Вот скрипт с формой регистрации и со скриптом проверки на заполнение, но он почему то не работает.
Проверка Форм с помощью Velocity?
Не обходима создать проверку форм с помощью технологии Velocity и JSP Пробовал сделать как.
Проверка на заполненность полей обеих форм
Привет всем. Нужно сделать чтобы информация с формы записывалась,когда заполнены обе формы. На.
Delphi проверка существования формы
Всем добрый день.
Подскажите каким образом запретить создание несколькох одинаковый mdi-дочек. А еще как проверить создана ли вызываемая дочка и если создана, то показать на экране из свернутого состояния.
Спасибо.
← →
Erik1 © ( 2004-10-18 11:25 ) [1]
Проверка создания MDI ничем неотличаеться от проверки создания обычной формы. Конструктор либо отрабатывает либо нет, ты ловиш exception с помощю try except. Второе Show, Restore.
← →
AlexG © ( 2004-10-18 11:35 ) [2]
← →
Pentium133 © ( 2004-10-18 11:57 ) [3]
Использую такую функцию, в параметр кидай Имя формы:
Вызов
if CheckWin(«fTovar») then Exit;
fTovar:= TfTovar.Create(Self);
fTovar.Show
← →
1008 © ( 2004-10-18 12:33 ) [4]
Ещё один (не оптимальный) вариант:
в форме main завести переменную, которая будет говорить запущена ли дочерняя форма или нет. Если запущена, то вновь созданную закрыть.
//1008 © (18.10.04 12:33) [4]
Во-первых, уже я сказал
Во-вторых, неточность у тебя: нужно проверять до того, как создать объект.
← →
1008 © ( 2004-10-18 13:48 ) [6]
AlexG © (18.10.04 13:41) [5]
У меня, в отличие от вас, нет блока try. Я делаю проверку на этапе FormShow
← →
AlexG © ( 2004-10-18 14:06 ) [7]
A у меня там TRY? Читай внимательней И НИ КАКИХ TRY.
← →
Erik1 © ( 2004-10-18 14:16 ) [8]
← →
AlexG © ( 2004-10-18 14:24 ) [9]
//Erik1
Если они возникают. А если нет?
В моем подходе их не будет возникать
← →
AlexG © ( 2004-10-18 14:40 ) [11]
← →
Pentium133 © ( 2004-10-18 14:46 ) [12]
> Нет, он долгий.
8-0
Да даже при открытии сотни окон (конечно, такого никогда не будет) я не думаю что надо будет идти курить.
А мне нравится такое решение. Как говорится не через J»пу
← →
Erik1 © ( 2004-10-18 14:48 ) [13]
to AlexG
Это как небудут?! А если в констркторе ошибка, может быть сотня другая причин по которой возникнет exception.
to Pentium133
CheckWin оптимален, если проверть уже суцествующие окна.
← →
Pentium133 © ( 2004-10-18 14:51 ) [14]
> CheckWin оптимален, если проверть уже суцествующие
окна.
Т.е при проверке несуществующего окна функция работать не будет?
Как раз-то CheckWin нужен что бы проверить существует ли окно.
//Erik1 © (18.10.04 14:48) [13]
Мы здесь вобще-то обсуждаем как определить запущенно уже окно или нет. О других exception»ах разговаривают где-то в другой ветке.
//Pentium133 ©
Он оптимален в случае унифицирования класса, при большом количестве наследований и пр. такой бодяги. Когда используется один класс, что чаще, быстрее будет просто использовать флаг активности окна.
← →
Pentium133 © ( 2004-10-18 15:37 ) [16]
> Он оптимален в случае унифицирования класса, при
> большом количестве наследований и пр. такой бодяги.
> Когда используется один класс, что чаще, быстрее будет
> просто использовать флаг активности окна.
Может быть. У меня около десятка разных MDI-форм.
А когда используется только одна MDI-форма, причем на экране она должна быть только в одном экземпляре проще и логичнее перейти на SDI-интерфейс.
← →
AlexG © ( 2004-10-18 15:45 ) [17]
//Pentium133 © (18.10.04 15:37) [16]
Ну смотри. Еще такой вариант может быть: какие-то конкретные окна должны быть в одном экземпляре, а другие во множественном.
Так что, думаю, мы друг друга поняли
← →
Pentium133 © ( 2004-10-18 16:40 ) [18]
Считаю, без участия автора темы, дальнейшие обсуждение её бесмысленным.
← →
Silla © ( 2004-10-18 23:39 ) [19]
А такой вариант не устроит?
if not Assigned(FrmMyChild) then
Application.CreateForm(TFrmMyChild, FrmMyChild);
FrmMyChild.Show;
Всем спасибо! Извините, что не следил за темой, неожидал такой оживленной полемики :)) Вопрос разрешился в пользу Pentium133.
← →
Pentium133 © ( 2004-10-25 15:05 ) [21]
Delphi проверка существования формы
| Регистрация Как определить видна ли форма в данный момент. Мне просто напросто нужно Кнопка КлиК(Отправитель типа ТОбъект) Условие Если форма видна, не знаю какое запихнуть нашел если кому интересно это property(свойство) Visible property З.Ы. И про кнопку «Правка» не забывайте, а то. mihali4, если логически рассуждать, то это: Полный бред вы верно подметили, что на кнопку невидимой формы не нажать, значит можно просто написать: |