Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
в девятом фоксе появляются "прилепляемые" (docked) окна.

прекрасно, что теперь можно "прилепить" дочернее окно к краю его родительского окна или еще куда.

беда в том, что юзер всегда может мышью "отлепить" прилепленное окно попросту перетащив его за заголовок (Form::Titlebar = .F. не срабатывает). или он может закрыть это окно, нажав на крестик (установка Form::ControlBox = .F. не работает в этом случае)

как "прилепить" окно "навсегда", чтобы пользователь не смог его "отлепить", а мог бы только изменять его размер, перемещая сплиттер ?
21 фев 06, 04:42    [2376345]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
alex11100
Guest
moovable=.f.
21 фев 06, 10:08    [2376775]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
21 фев 06, 10:37    [2376895]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
alex11100
Guest
closable=.f.
21 фев 06, 10:39    [2376903]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
не работает мувабл=.Ф.
и клозабл=.Ф. тоже не работает
21 фев 06, 11:06    [2377025]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
Hel!Riser
Member

Откуда: Нижний Новгород
Сообщений: 972
в tlb.MouseDown() пробей NODEFAULT
21 фев 06, 11:21    [2377097]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
alex11100
Guest


К сообщению приложен файл (5.ZIP - 1Kb) cкачать
21 фев 06, 11:23    [2377110]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
Hel!Riser
в tlb.MouseDown() пробей NODEFAULT
а че такое tlb ?

ебтеть!

да я же говорю про ОКНА а не про ТУЛБАРЫ !

тулбары оно хрен с ними, и в восьмом можно такое делать.

а в девятом появились "прилипающие" (docked) ФОРМЫ (типа комманд виндоу)
21 фев 06, 13:30    [2377943]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
alex11100
Guest
--Eugene--
зачем ругаешся грязно???

вот видишь, люди не понимают, предпоследний день работаем

на вот
расчехлил свой бубен
немного постучал

самое тяжелое ему капшин убрать
21 фев 06, 14:24    [2378297]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
alex11100
Guest
блин
все нужно отдыхать
совсем плохой стал

К сообщению приложен файл (5.ZIP - 2Kb) cкачать
21 фев 06, 14:25    [2378303]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
alex11100
блин
все нужно отдыхать
хе хе, пасиба, канешна, за внимание, но если у меня еще есть "прилепленные" окна, например, слева или справа, то когда я их ресайзю, та форма (которая без кэпшана) - она не ресайзится. такое ощущение, что она просто притянута за ушик тому месту.

я вот до чего допер:
прилепляю форму к стороне окна
thisform.dock(...)
перехватываю WM_NCHITTEST
BINDEVENT(thisform.hWnd, WM_NCHITTEST, thisform, "nchittest")
а в той процедуре:
PROCEDURE thisform::nchittest
LPARAMETERS ;
	hwnd as Long, ;
	uMsg as Long, ;
	wParam as Long, ;
	lParam as Long

IF uMsg = WM_NCHITTEST
	PRIVATE ht
	ht = DefWindowProc(hwnd, uMsg, wParam, lParam)
	IF ht = HTCAPTION
		RETURN HTNOWHERE
	ENDIF
	RETURN ht
ENDIF
RETURN DefWindowProc(hwnd, uMsg, wParam, lParam)
ENDPROC
все вроде хорошо, только меня смущает кнопка [x] в правом верхнем углу формы. как бы ее убрать..
21 фев 06, 14:42    [2378393]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
alex11100
Guest
никак
пока будет бордер не уберешь

нужно без бордера
я думаю туда нужно положить шейп-сплиттер
и по маусдоун на него засвечивать иконку ресайза и тянуть размеры
21 фев 06, 14:48    [2378423]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
alex11100
я думаю туда нужно положить шейп-сплиттер
и по маусдоун на него засвечивать иконку ресайза и тянуть размеры
фиг. это уже вне клиентской области формы. :(
21 фев 06, 14:55    [2378469]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
alex11100
Guest
переведи про клиентскую часть

это чего тако
21 фев 06, 14:56    [2378480]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
alex11100
Guest
вот пример
окошка с ресайзом

все бубен положил на полку
костер затушил

К сообщению приложен файл (wind.ZIP - 2Kb) cкачать
21 фев 06, 16:29    [2378988]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
alex11100
вот пример
окошка с ресайзом
нет. так не пойдет. нужно использовать встроенный механизм липких форм. а он ацтойный. значит пошел он в сам знаешь куда

ну че такое ? сколько это будет продолжаться ?
MSFT порой делает реально хорошие вещи. но С НИМИ РАБОТАТЬ НЕВОЗМОЖНО !

мать перемать !

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

вот куда ни ткнись - везде косячность препятствует использованию технологии в полной мере

вот например в девятке появился новый косяк:
BINDEVENT(thisform.commandbutton1, "Click", thisform, "Release")
форма не релизится, хотя ее метод (thisform::Release()) отрабатывает.
22 фев 06, 03:56    [2380419]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
alex11100
Guest
а что не пойдет-то
какой еще механизм нужен-то??

окошко прилепилось - фиг отлепишь
ресайз есть чего нужно-то???
22 фев 06, 10:57    [2381065]     Ответить | Цитировать Сообщить модератору
 Re: Как сделать так, чтобы пользователь НЕ СМОГ мышью "отлепить" docked window ?  [new]
alex11100
Guest
--Eugene--, ты хочешь чтобы
базовый класс работал как нужно???
как тебе хочется и нравится???

так в лисе не бывает
без шаманства
не переучить докнутую форму
22 фев 06, 12:17    [2381581]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить