Автор | Сообщение |
|
| |
Пост N: 45
Зарегистрирован: 23.06.08
|
|
Отправлено: 11.11.09 17:08. Заголовок: Глюки при прорисовке формы...
Здравствуйте ! У меня возникла проблема при растягивании формы. Появляются графические баги: Скрытый текст Функция, растягивающая форму (Процедура ON SIZE ): FUNCTION Form_OnSize() LOCAL nI CD7000.Tab_1.Width := CD7000.Width / 1.04 CD7000.Image_1.Width := CD7000.Width / 0.98 CD7000.TBrowse_1.Width := CD7000.Tab_1.Width / 1.09 CD7000.Image_1.Height := CD7000.Height / 2.95 CD7000.Tab_1.Row := CD7000.Height / 2.85 CD7000.Tab_1.Height := CD7000.Height / 1.88 CD7000.TBrowse_1.Height := CD7000.Tab_1.Height / 1.18 // TBrowse_1:HideColumns({1,2,3,4,5,6},.T.) RETURN( Nil ) В чём проблема ? Почему форма не перерисовывается ?
| |
|
Новых ответов нет
[см. все]
|
|
|
| модератор
|
Пост N: 1089
Зарегистрирован: 25.05.05
|
|
Отправлено: 11.11.09 17:36. Заголовок: SkyNET пишет: В чём..
SkyNET пишет: Проблема в том, что окну надо подсказать о необходимости перерисовки Для этого можно использовать в конце функции Form_OnSize() InvalidateRect(GetFormHandle("CD7000"), 1 ) UpdateWindow( GetFormHandle("CD7000") )
| |
|
|
| |
Пост N: 46
Зарегистрирован: 23.06.08
|
|
Отправлено: 11.11.09 18:39. Заголовок: :sm15: Спасибо боль..
Спасибо большое, все работает... А ак определить, что окно перестали растягивать (отпустили кнопку мышки) ? События отпускания мыши я к сожалению не нашел
| |
|
|
| модератор
|
Пост N: 1091
Зарегистрирован: 25.05.05
|
|
Отправлено: 11.11.09 19:06. Заголовок: SkyNET пишет: Событ..
SkyNET пишет: Можно проверить статус кнопок мыши, который хранится в глобальной переменной _HMG_MouseState Значение _HMG_MouseState = 0 соответствует отжатой левой кнопке.
| |
|
|
| |
Пост N: 48
Зарегистрирован: 23.06.08
|
|
Отправлено: 11.11.09 23:11. Заголовок: IF _HMG_MouseState =..
IF _HMG_MouseState = 0 InvalidateRect(GetFormHandle("CD7000"), 1 ) UpdateWindow( GetFormHandle("CD7000") ) ENDIF Я вас правильно понял ? Но это событие работает почему-то всегда и другие состояния _HMG_MouseState в ON SIZE не имеют... Или как можно избавиться от белых полосок (некоторые размеров с квадрат) по всей форме ?
| |
|
|
| |
Пост N: 50
Зарегистрирован: 23.06.08
|
|
Отправлено: 13.11.09 01:10. Заголовок: Я понял, проблема фо..
Я понял, проблема форма не успевает перерисоваться, поэтому полоска... А как отключить визуальный эффект растягивания ? Ну как в Windows с отключенными графическими эффектами, только рамка...
| |
|
|
| постоянный участник
|
Пост N: 750
Зарегистрирован: 09.10.06
|
|
Отправлено: 13.11.09 11:54. Заголовок: MiniGUI в стандартно..
MiniGUI в стандартной поставке умеет обрабатывать WM_SIZE. Попросите Григория добавить обработку WM_ENTERSIZEMOVE, WM_EXITSIZEMOVE или используйте свой собственный обработчик событий и будет вам счастье
| |
|
|
| |
Пост N: 51
Зарегистрирован: 23.06.08
|
|
Отправлено: 13.11.09 22:32. Заголовок: Спасибо. Я нашёл тем..
Спасибо. Я нашёл тему, как это сделать. Всё сделал, только с библиотекой i_window.ch какие-то проблемы. Пример из темы, выдаёт следующую ошибку: Error BASE/1066 Argument error: conditional Called from _DEFINEWINDOW(233) Called from MAIN(12) Обычные приложения нормально компилируются. Вот то, что получилось у меня: Скрытый текст #xcommand DEFINE WINDOW <w> ; [ AT <row>,<col> ] ; [ ROW <row> ] ; [ COL <col> ] ; WIDTH <wi> ; HEIGHT <h> ; [ MINWIDTH <minWidth> ] ; [ MINHEIGHT <minHeight> ] ; [ MAXWIDTH <maxWidth> ] ; [ MAXHEIGHT <maxHeight> ] ; [ VIRTUAL WIDTH <vWidth> ] ; [ VIRTUAL HEIGHT <vHeight> ] ; [ TITLE <title> ] ; [ ICON <icon> ] ; [ <main: MAIN> ] ; [ <mdi: MDI> ] ; [ <child: CHILD> ] ; [ <main: WINDOWTYPE MAIN> ] ; [ <child: WINDOWTYPE CHILD> ] ; [ WINDOWTYPE STANDARD ] ; [ <noshow: NOSHOW> ] ; [ <topmost: TOPMOST> ] ; [ <palette: PALETTE> ] ; [ <noautorelease: NOAUTORELEASE> ] ; [ <nominimize: NOMINIMIZE> ] ; [ <nomaximize: NOMAXIMIZE> ] ; [ <nosize: NOSIZE> ] ; [ <nosysmenu: NOSYSMENU> ] ; [ <nocaption: NOCAPTION> ] ; [ CURSOR <cursor> ] ; [ ON INIT <InitProcedure> ] ; [ ON RELEASE <ReleaseProcedure> ] ; [ ON INTERACTIVECLOSE <interactivecloseprocedure> ] ; [ ON MOUSECLICK <ClickProcedure> ] ; [ ON MOUSEDRAG <MouseDragProcedure> ] ; [ ON MOUSEMOVE <MouseMoveProcedure> ] ; [ ON ENTERSIZEMOVE <EnterSizeMoveProcedure> ] ; [ ON MOVE <MoveProcedure> ] ; [ ON SIZE <SizeProcedure> ] ; [ ON EXITSIZEMOVE <ExitSizeMoveProcedure> ] ; [ ON MAXIMIZE <MaximizeProcedure> ] ; [ ON MINIMIZE <MinimizeProcedure> ] ; [ ON RESTORE <RestoreProcedure> ] ; [ ON PAINT <PaintProcedure> ] ; [ ON DROPFILES <DropProcedure> ] ; [ BACKCOLOR <backcolor> ] ; [ FONT <FontName> SIZE <FontSize> ] ; [ NOTIFYICON <NotifyIcon> ] ; [ NOTIFYTOOLTIP <NotifyIconTooltip> ] ; [ ON NOTIFYCLICK <NotifyLeftClick> ] ; [ ON NOTIFYDBLCLICK <NotifyDblClick> ] ; [ ON GOTFOCUS <GotFocusProcedure> ] ; [ ON LOSTFOCUS <LostFocusProcedure> ] ; [ ON SCROLLUP <scrollup> ] ; [ ON SCROLLDOWN <scrolldown> ] ; [ ON SCROLLLEFT <scrollleft> ] ; [ ON SCROLLRIGHT <scrollright> ] ; [ ON HSCROLLBOX <hScrollBox> ] ; [ ON VSCROLLBOX <vScrollBox> ] ; [ <helpbutton: HELPBUTTON> ] ; =>; DECLARE WINDOW <w> ;; DECLARE CUSTOM COMPONENTS <w> ;; _DefineWindow ( <"w">, <title>, <col>, <row>, <wi>, <h>, <.nominimize.>, <.nomaximize.>, <.nosize.>, <.nosysmenu.>, <.nocaption.>,.F., '',<{InitProcedure}>, <{ReleaseProcedure}> , <{MouseDragProcedure}>, <{SizeProcedure}> , <{ClickProcedure}> , <{MouseMoveProcedure}>, [<backcolor>] , <{PaintProcedure}> , <.noshow.> , <.topmost.> , <.main.> , <icon> , <.child.> , <FontName> , <FontSize>, <NotifyIcon> , <NotifyIconTooltip> , <{NotifyLeftClick}> , <{GotFocusProcedure}>, <{LostFocusProcedure}> , <vHeight> , <vWidth> , <{scrollleft}> , <{scrollright}> , <{scrollup}> , <{scrolldown}> , <{hScrollBox}> , <{vScrollBox}> , <.helpbutton.> , <{MaximizeProcedure}> , <{MinimizeProcedure}> , <cursor> , <.noautorelease.> , <{interactivecloseprocedure}> , <{RestoreProcedure}> , <{MoveProcedure}> , <.mdi.>, <{EnterSizeMoveProcedure}>, <{ExitSizeMoveProcedure}> )
| Я не понимаю, библиотека поменялась, появилось новое действие и поменялись местами Declare и Define: =>; DECLARE WINDOW <w> ;; DECLARE CUSTOM COMPONENTS <w> ;; _DefineWindow ( <"w">, <title>, <col>, <row>, <wi>, <h>, <.nominimize.>, <.nomaximize.>, <.nosize.>, <.nosysmenu.>, <.nocaption.>,.F., '',<{InitProcedure}>, <{ReleaseProcedure}> , <{MouseDragProcedure}>, <{SizeProcedure}> , <{ClickProcedure}> , <{MouseMoveProcedure}>, [<backcolor>] , <{PaintProcedure}> , <.noshow.> , <.topmost.> , <.main.> , <icon> , <.child.> , <FontName> , <FontSize>, <NotifyIcon> , <NotifyIconTooltip> , <{NotifyLeftClick}> , <{GotFocusProcedure}>, <{LostFocusProcedure}> , <vHeight> , <vWidth> , <{scrollleft}> , <{scrollright}> , <{scrollup}> , <{scrolldown}> , <{hScrollBox}> , <{vScrollBox}> , <.helpbutton.> , <{MaximizeProcedure}> , <{MinimizeProcedure}> , <cursor> , <.noautorelease.> , <{interactivecloseprocedure}> , <{RestoreProcedure}> , <{MoveProcedure}> , <.mdi.>, <{EnterSizeMoveProcedure}>, <{ExitSizeMoveProcedure}> ) Петр пишет: цитата: | =>; _DefineWindow ( <"w">, <title>, <col>, <row>, <wi>, <h>, <.nominimize.>, <.nomaximize.>, <.nosize.>, <.nosysmenu.>, <.nocaption.>,.F., '',<{InitProcedure}>, <{ReleaseProcedure}> , <{MouseDragProcedure}>, <{SizeProcedure}> , <{ClickProcedure}> , <{MouseMoveProcedure}>, [<backcolor>] , <{PaintProcedure}> , <.noshow.> , <.topmost.> , <.main.> , <icon> , <.child.> , <FontName> , <FontSize>, <NotifyIcon> , <NotifyIconTooltip> , <{NotifyLeftClick}> , <{GotFocusProcedure}>, <{LostFocusProcedure}> , <vHeight> , <vWidth> , <{scrollleft}> , <{scrollright}> , <{scrollup}> , <{scrolldown}> , <{hScrollBox}> , <{vScrollBox}> , <.helpbutton.> , <{MaximizeProcedure}> , <{MinimizeProcedure}> , <cursor> , <.noautorelease.> , <{interactivecloseprocedure}> , <{RestoreProcedure}> , <{MoveProcedure}> , <.mdi.>, <{EnterSizeMoveProcedure}>, <{ExitSizeMoveProcedure}> ) ;; DECLARE WINDOW <w> |
| Пробовал переставлять, всё равно не работает... Редактированные файлы
| |
|
|
|