Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.14;
Скачать: CL | DM;

Вниз

Как закрыть модальное окно?   Найти похожие ветки 

 
PZ   (2006-12-25 12:51) [0]

У меня модальная форма без заголовка:
BorderStyle = bsNone
KeyPreviw = True

Всю площадь формы закрывает компонент Bevel1, а его
полностью закрывает метка Label1
Пробую два варианта закрыть форму - не закрывается.
Как же её можно закрыть? Подскажите, пожалуйста.

procedure TForm1.FormDblClick(Sender: TObject);
begin
 Form1.Close;
end;

procedure TForm1.Label1DblClick(Sender: TObject);
begin
 Form1.Close;
end;


 
Anatoly Podgoretsky ©   (2006-12-25 13:06) [1]

> PZ  (25.12.2006 12:51:00)  [0]

А чей у тебя Form1 ?


 
novill ©   (2006-12-25 13:12) [2]

[0] PZ   (25.12.06 12:51)
второй вариант работает.


 
PZ   (2006-12-25 13:14) [3]

>  [1] Anatoly Podgoretsky ©   (25.12.06 13:06)

Form1 - это  та самая модальная форма, которую пытаюсь закрыть


 
Ega23 ©   (2006-12-25 13:16) [4]


> Form1 - это  та самая модальная форма, которую пытаюсь закрыть
>


МодалРезулт:=мрОК


 
PZ   (2006-12-25 13:21) [5]

> [2] novill ©   (25.12.06 13:12)

У меня почему-то не работает. Проверю еще раз.


 
Anatoly Podgoretsky ©   (2006-12-25 13:23) [6]

> PZ  (25.12.2006 13:14:03)  [3]

Чем докажешь?


 
PZ   (2006-12-25 13:34) [7]

Нет втрой вариант не работает

> [4] Ega23 ©   (25.12.06 13:16)

procedure TForm1.Label1DblClick(Sender: TObject);
begin
Form1.ModalResult := mpOk;  // Error Undeclared Identifier
Form1.Close;
end;


 
PZ   (2006-12-25 13:35) [8]

> [6] Anatoly Podgoretsky ©   (25.12.06 13:23)

У меня другой формы с тким именем нет


 
Германн ©   (2006-12-25 13:43) [9]


> Form1.ModalResult := mpOk;  // Error Undeclared Identifier

mrOK
И Close после этого не нужен


 
novill ©   (2006-12-25 13:43) [10]

> [7] PZ   (25.12.06 13:34)

а у меня все равно работает


 
Anatoly Podgoretsky ©   (2006-12-25 13:43) [11]

> PZ  (25.12.2006 13:35:08)  [8]

Не верю. При том я не про форму спрашивал, а про переменную.


 
novill ©   (2006-12-25 13:46) [12]

> Form1.ModalResult := mpOk;  // Error Undeclared Identifier

это наверное от того что правильно писать mrOk


 
Anatoly Podgoretsky ©   (2006-12-25 13:59) [13]


> а у меня все равно работает

У тебя наверно правильный Form1
Только нафиг он совсем нужен?


 
PZ   (2006-12-25 14:21) [14]

Исправил mpOk -> mrOK

> [11] Anatoly Podgoretsky ©   (25.12.06 13:43)
> [1] Anatoly Podgoretsky ©   (25.12.06 13:06)
> А чей у тебя Form1 ?

Не понял, о какой переменной идет речь?
А Form1 - действительно модальная форма, которую мне надо закрыть, но она не включена в проект, а создается динамически в главной форме,  по таймеру:

     If {некоторое условие} then
         Try
           Form1 := TForm1.Create(Owner);
           ......
           Form1.ShowModal;
         Finally
           FreeAndNil(Form1);
         End;


 
PZ   (2006-12-25 14:23) [15]

Может быть таймер не дает закрывать эту форму?


 
alex_*** ©   (2006-12-25 14:25) [16]

а нажатие на крестик в верх. правом углу не закрывает форму? (таймер не влияет на закрытие)


 
PZ   (2006-12-25 14:28) [17]

> [16] alex_*** ©   (25.12.06 14:25)

Вы не внимательно прочитали мой вопрос: форма без заголовка


 
alex_*** ©   (2006-12-25 14:30) [18]

тогда dblclick по лабелу решит проблему


 
PZ   (2006-12-25 14:37) [19]

> [18] alex_*** ©   (25.12.06 14:30)

Я тоже так думаю, но не решает ...


 
Anatoly Podgoretsky ©   (2006-12-25 14:38) [20]

> PZ  (25.12.2006 14:21:14)  [14]

О переменной с именем Form1
Нормальный код ты категорически отказываешься приводить, а гадать уже я не хочу.


 
alex_*** ©   (2006-12-25 14:52) [21]


> Я тоже так думаю, но не решает ...

ты туда попадаешь вообще?


 
PZ   (2006-12-25 14:55) [22]

> [20] Anatoly Podgoretsky ©   (25.12.06 14:38)

Я, честное слово, не понимаю. что от меня требуется. Весь код проекта - он довольно большой, приводить нет возможности. А все, что касается моего вопроса я, кажется, сообщил.


 
Anatoly Podgoretsky ©   (2006-12-25 14:56) [23]

Не понимаешь и ладно, а понимаешь ли ты то, что указано ранее, что переменная Form1 не нужна?


 
novill ©   (2006-12-25 14:57) [24]

> [22] PZ   (25.12.06 14:55)

создай новый проект с двумя формами - одна будет основная с кнопкой модального вызова второй, а вторая без границ с бевелом и лейблом, назначь соотв. методы. и пробуй!


 
PZ   (2006-12-25 15:00) [25]

> [21] alex_*** ©   (25.12.06 14:52)

Label растянут по всей форме allClient. Ну как не попасть?


 
alex_*** ©   (2006-12-25 15:07) [26]

ну так скажи, попадаешь или нет? до брейк поинта доходишь?


 
alex_*** ©   (2006-12-25 15:10) [27]

Да, кстати обрати внимание на [23] - убери указание Form1 для методов и никогда так не делай. (замени на self, если так хочется класс указать)


 
Anatoly Podgoretsky ©   (2006-12-25 15:18) [28]

> alex_***  (25.12.2006 15:10:27)  [27]

self тоже лишнее


 
PZ   (2006-12-25 15:32) [29]

> [23] Anatoly Podgoretsky ©   (25.12.06 14:56)
> [27] alex_*** ©   (25.12.06 15:10)

Form1 я убрал. Может это не прилично то, что я пишу Form1, но работе-то это не мешает.

> [26] alex_*** ©   (25.12.06 15:07)

ну так скажи, попадаешь или нет? до брейк поинта доходишь?

Нет, не дохожу.

Давайте приостановим обсуждение. Я уже получил от вас много рекомендаций. В спокойной обстановке поэксперименитую, возможно найду решение.
Спасибо всем, принявшим участие в этом трудном диалоге.
С уважением, PZ


 
evvcom ©   (2006-12-26 09:06) [30]

> [29] PZ   (25.12.06 15:32)
> Может это не прилично то, что я пишу Form1, но работе-то
> это не мешает

Судя по тому, что ты здесь, видимо, мешает.


 
PZ   (2006-12-26 12:50) [31]

> [30] evvcom ©   (26.12.06 09:06)

Возможно мешает. Я больше так не пишу.

Итак, что я выяснил. У меня есть процедура, чтобы можно было перемещать окно при нажатой левой кнопке мыши:

procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
 inherited;
 if M.Result = htClient then M.Result := htCaption;
end;

Так вот, если закомментировать эту процедуру, то окошко закрывется по следующему обработчику, иначе нет:

procedure TForm1.Label1DblClick(Sender: TObject);
begin
 ModalResult := mrOk;
end;

Теперь я в полном тупике. Не знаю, как сохранить возможность перемещать окно и закрывать его по ненадобности.
Если кто-то может, пожалуйста помогите.


 
Anatoly Podgoretsky ©   (2006-12-26 12:53) [32]

> PZ  (26.12.2006 12:50:31)  [31]

А чего ты хочешь, сам же навесил на кнопку две взаимоисключающие вещи.


 
novill ©   (2006-12-26 12:54) [33]

повесь свою процедуру только на wm_mousemove


 
novill ©   (2006-12-26 13:00) [34]

> [33] novill ©   (26.12.06 12:54)

не, не пойдет


 
palva ©   (2006-12-26 13:03) [35]

Alt-F4 разве не срабатывает?


 
PZ   (2006-12-26 13:06) [36]

> [35] palva ©   (26.12.06 13:03)

Не пробовал


 
PZ   (2006-12-26 13:09) [37]

> [36] PZ   (26.12.06 13:06)

Попробовал - срабатывает. Но я этми кнопками никогда не пользуюсь, не люблю.
В крайнем случае придется...


 
novill ©   (2006-12-26 13:10) [38]

как насчет того чтобы перенести закрытие в обработчик WM_LBUTTONDBLCLK


 
PZ   (2006-12-26 13:20) [39]

> [38] novill ©   (26.12.06 13:10)

Я, к сожалению, с собщениями Windows не очень в дружбе.
Может быть Вы напишите примером.

Я попробовал  PostMessage(Handle, WM_SYSCOMMAND, SC_CLOSE, 0), тоже никакой реакции.


 
novill ©   (2006-12-26 13:47) [40]

> [39] PZ   (26.12.06 13:20)

как пробовал? кинь код. я не знаю, где и что ты еще успел перехватить



Страницы: 1 2 вся ветка

Текущий архив: 2007.01.14;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.046 c
2-1167137066
Mishenka
2006-12-26 15:44
2007.01.14
Как отследить завершение работы Windows ?


2-1166891136
AlexanderMS
2006-12-23 19:25
2007.01.14
Почему принтер не печатает, хотя...


15-1166688449
Slider007
2006-12-21 11:07
2007.01.14
С днем рождения ! 21 декабря


11-1142992833
Rusya
2006-03-22 05:00
2007.01.14
Куда пропало свойство Hint?


2-1166622346
dreamse
2006-12-20 16:45
2007.01.14
Непонятное что то с поддежкой ICO