Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.015 c
15-1166110968
Eraser
2006-12-14 18:42
2007.01.14
Редактор ASCII графики


2-1166647004
КВАНТ
2006-12-20 23:36
2007.01.14
SpeedButton. Убрать "эффект нажатия".


15-1166470232
AntiUser
2006-12-18 22:30
2007.01.14
Почему люди не любят Microsoft? АРГУМЕНТИРОВАНО.


2-1167004641
Святослав
2006-12-25 02:57
2007.01.14
mdb файлы в Delphi


6-1155736414
цыц
2006-08-16 17:53
2007.01.14
TWSocket разбор принятых пакетов





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