Как да се затвори модален прозорец

Как да се затвори модален прозорец?

Имам форма модален, без заглавие:
BorderStyle = bsNone
KeyPreviw = True

Всички форми Bevel1 площ затваря компонент и неговото
напълно покрива етикета Label1
Опитайте две възможности за затваряне на формата - не е затворен.
Как може да може да се затвори? Кажи ми, моля те.

процедура TForm1.FormDblClick (Sender: TObject);
започвам
# XA0; Form1.Close;
приключи;

процедура TForm1.Label1DblClick (Sender: TObject);
започвам
# XA0; Form1.Close;
приключи;

Чия ли Form1?

[0] PZ # XA0; (25.12.06 12:51)
втората опция работи.

Form1 - е # XA0 е една и съща модална форма, когато се опитвате да затворите


> Form1 - е # XA0 е една и съща модална форма, когато се опитвате да затворите
>

Имам по някаква причина не работи. Да проверя отново.

Не се утрои опция не работи

процедура TForm1.Label1DblClick (Sender: TObject);
започвам
Form1.ModalResult: = mpOk; # XA0; // Грешка Недекларираният идентификатор
Form1.Close;
приключи;

Имам различна форма без име IMT


> Form1.ModalResult: = mpOk; # XA0; // Грешка Недекларираният идентификатор

mrOK
Затваряне и след това не е необходимо

> [7] PZ # XA0; (25.12.06 13:34)

и аз все още работи

Аз не мога да повярвам. Макар че аз не искам да кажа форма пита за променлива.

> Form1.ModalResult: = mpOk; # XA0; // Грешка Недекларираният идентификатор

това е може би от факта, че правото да се напише mrOk


> Но аз все още работят

Трябва да имате правилна форма 1
Само той nafig е необходимо?

Фиксирана mpOk -> mrOK

Не мога да разбера какъв вид променлива в въпрос?
И Form1 - наистина е форма модален, че трябва да се затвори, но тя не е включена в проекта, и е динамично създаден на основната форма, # XA0; Таймер:

# XA0; # XA0; # XA0; Ако след това
# XA0; # XA0; # XA0; # XA0; # XA0; Опитайте
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; Form1: = TForm1.Create (собственика);
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0.
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; Form1.ShowModal;
# XA0; # XA0; # XA0; # XA0; # XA0; накрая
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; FreeAndNil (Form1);
# XA0; # XA0; # XA0; # XA0; # XA0; End;

Може би таймер не се затваря тази форма?

и кликнете върху X в горния край. десен ъгъл не затваря формата? (Таймер не засяга затварянето)

Ти не прочете внимателно въпроса ми: форма, без заглавие

След това dblclick на Лабел решаване на проблема

Мисля, че това е така важно, но това не решава.


> Аз така мисля, но това не решава.

стигнете до там изобщо?

Аз честно казано не разбирам. Аз трябва да направя. Цялата програмка за проект - това е доста голяма, защото няма начин. И всичко, което се отнася до моя въпрос, мисля, че казах.

Ти не разбираш, добре, но мога да ви разбера какво се заяви по-рано, че не е необходима променлива Form1?

> [22] PZ # XA0; (25.12.06 14:55)

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

Етикет опъната форма allClient. За да не се стигнем до там?

Е, кажи ми, се окажете, или не? Break Point на доходи?

О, и да обърне внимание на [23] - Премахване на Form1 да се уточни методи и никога не го направи. (Заменя със себе си, така че ако искате да определите клас)

самостоятелно твърде излишно

Аз се отстраняват Form1. Може би това не е прилично да се пише на Form1, но работата на нещо, което не спира.

Е, кажи ми, се окажете, или не? Break Point на доходи?

Нека да спре нашата дискусия. Аз вече са получили от вас много препоръки. На тихо poeksperimenituyu среда може да се намери решение.
Благодаря на всички, които участваха в този труден диалог.
С уважение, PZ

> [29] PZ # XA0; (25.12.06 15:32)
> Може би това не е прилично да се пише на Form1, но работата на
> Това не пречи

Ако се съди по факта, че сте тук, очевидно се намесва.

Възможно намесва. Аз затова не пиша.

Така че, това, което разбрах. Имам процедура, която може да се движи през прозореца, като задържите левия бутон на мишката:

процедура TForm1.Label1DblClick (Sender: TObject);
започвам
# XA0; ModalResult: = mrOk;
приключи;

Сега съм напълно объркани. Аз не знам как да се запази възможността за преместване на прозореца и затвори безполезност му.
Ако някой може да помогне моля.

И това, което искате, се обеси на бутона две взаимно изключващи се неща.

мотае вашата процедура само wm_mousemove

Alt + F4 не работи?

> [36] PZ # XA0; (26.12.06 13:06)

Аз опитах - творби. Но аз etmi бутони никога не го използвам, не ми харесва.
В краен случай, че е необходимо.

Какво ще кажете за да донесе закриване на манипулатора WM_LBUTTONDBLCLK

Аз, за ​​съжаление, на Windows Съобщението не в приятелство.
Може би ще напиша един пример.

опитах # XA0; PostMessage (дръжка, WM_SYSCOMMAND, SC_CLOSE, 0). Също така няма реакция.

> [39] PZ # XA0; (26.12.06 13:20)

както се опита? хвърли код. Аз не знам къде и какво ли още успя да пресече

процедура TForm1.Label1DblClick (Sender: TObject);
започвам
# XA0; PostMessage (дръжка, WM_SYSCOMMAND, SC_CLOSE, 0);
приключи;

. Това е, аз сега имам две obrabotchikka:

процедура TForm1.WMNCHitTest (Var М: TWMNCHitTest);
започвам
наследява;
ако M.Result = htClient след M.Result: = htCaption;
приключи;

процедура TForm1.Label1DblClick (Sender: TObject);
започвам
PostMessage (дръжка, WM_SYSCOMMAND, SC_CLOSE, 0);
приключи;

като се има предвид
> Аз, за ​​съжаление, на Windows Съобщението не в приятелство.

Аз препоръчвам да използвате традиционните събития vozmite например в съседна Delfivorld:

Draging - за определяне на периода от време, когато потребителят премести мишката, докато държите бутона на мишката,
X0 и Y0 - координати на точката, върху които е поставен бутон на мишката
Следва описание на събитията формират OnMouseDown, OnMouseMove и OnMouseUp:

процедура TForm1.FormMouseDown (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: цяло число);
започвам
# XA0; Draging: = вярно;
# XA0; Х0: = х;
# XA0; Y0: = Y;
приключи;

процедура TForm1.FormMouseUp (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: цяло число);
започвам
# XA0; Draging: = фалшива;
приключи;

процедура TForm1.FormMouseMove (Sender: TObject; Shift: TShiftState; X,
Y: цяло число);
започвам
# XA0; ако Draging = вярно, тогава
# XA0; започне
# XA0; # XA0; Form1.Left: = Form1.Left + X - Х0;
# XA0; # XA0; Form1.top: = Form1.top + Y - Y0;
# XA0; край;
приключи;

тогава няма да бъде излишно perehvatyvatsya

estesstvenno събития висят на събития, отколкото по форма и етикет.

Както обикновено, всички гений е прост!
Обикновено тя работи.
Това ме обърка Орлик тази процедура, за да преместите прозорец без заглавие. Някак си мислех, че без него нищо повече от невъзможно да отстъпи на прозореца.

Благодаря ви, novill, още веднъж благодаря на всички, на всички, които взеха участие в дискусията.
С уважение, ЗЗ.

Честита Нова Година!

Да, разбира се. Направих го,