Автор | Сообщение |
|
| |
Пост N: 1949
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.01.11 15:51. Заголовок: Тормозок
Имеем Бровс , создаем какой нибудь диалог (или окно) и таскаем его по бровсу. Двигается он с заметными тормозами. Это особенность FW ? Как то лечится ? Ни чего подобного не видел в любых других программах под Windows , где так же юзаются таблицы.
|
|
|
Ответов - 97
, стр:
1
2
3
4
5
All
[только новые]
|
|
|
| |
Пост N: 1961
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.01.11 17:11. Заголовок: Счас картинку выложу..
Счас картинку выложу ;)
|
|
|
|
| |
Пост N: 1962
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.01.11 17:17. Заголовок: До нажатия правой кн..
До нажатия правой кнопки мышки После нажатия , курсор уехал на 253 код Закрываем диалог и все так как на первой картинке
|
|
|
|
| Администратор
|
Пост N: 1771
Зарегистрирован: 23.05.05
|
|
Отправлено: 07.01.11 18:32. Заголовок: Ух ты ! Вкусно ! Дум..
Ух ты ! Вкусно ! Думаем. На нажатие rclick что у нас ? Вызывается диалог с картинкой. При этом бровс теряет фокус, и на пайнт вызывается прорисовка экрана, то, что было сохранено на коде 253 Столичная. Почему так - непонятно Может быть, перед вызовом этого диалога отключить фокус с прорисовкой сохраненного экрана ? Т.е, добавить в класс lPaint, перед выводом диалога сбрасывать его, а потом восстанавливать ?
|
|
|
|
| Администратор
|
Пост N: 1772
Зарегистрирован: 23.05.05
|
|
Отправлено: 07.01.11 18:37. Заголовок: Ага, имеем дело с ра..
Ага, имеем дело с рассинхровкой. Когда у бровса был фокус, был товар 253, и на нем сохранился экран. Мышкой кликнули на кровянке, при этом пайнт не вызвался. Брорвс потерял фокус, вызвался пайнт, и восстановилась столичная Надо добавлять lPaint, адназначна
|
|
|
|
| |
Пост N: 1963
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.01.11 18:45. Заголовок: Pasha пишет: Надо д..
Pasha пишет: цитата: | Надо добавлять lPaint, адназначна |
| Понял. Спасибо !
|
|
|
|
| Администратор
|
Пост N: 1773
Зарегистрирован: 23.05.05
|
|
Отправлено: 07.01.11 18:46. Заголовок: Нет, при этом теряет..
Нет, при этом теряется смысл всей затеи. Ведь этот тот самый диалог. Лучше перед вызовом диалога вызвать refresh у бровса, чтобы он выдал paint, при этом сохранится нужный экран Или, еще лучше, напрямую вызвать DeleteObject( oBwr:hSaveScr ) oBwr:hSaveScr := WndBitMap( oBrw:hWnd )
|
|
|
|
| |
Пост N: 1964
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.01.11 19:05. Заголовок: Pasha Да refresh не..
Pasha Да refresh не помог. Напрямую сработало.
|
|
|
|
| |
Пост N: 1965
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.01.11 12:01. Заголовок: Dima пишет: Или, ещ..
Pasha пишет: цитата: | Или, еще лучше, напрямую вызвать DeleteObject( oBwr:hSaveScr ) oBwr:hSaveScr := WndBitMap( oBrw:hWnd ) |
| Поигрался. Пришел к выводу что этот вызов проще будет прописать в blostfocus бровса
|
|
|
|
| |
Пост N: 67
Зарегистрирован: 17.06.10
|
|
Отправлено: 09.01.11 13:14. Заголовок: Приспособил сию штук..
Приспособил сию штуку под TSBROWSE. Все, в общем, нормально. Т.к. у меня одновременная работа нескольких взаимоконтекстных бровсов на немодальных окнах, то blostfocus делать не стал, а просто активизирую глобальный флаг перед вызовом любого диалога
|
|
|
|
| постоянный участник
|
Пост N: 1617
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.01.11 14:45. Заголовок: fil пишет: Приспосо..
fil пишет: цитата: | Приспособил сию штуку под TSBROWSE. |
| А картинку показать можно ? Как это выглядит ?
|
|
|
|
| Администратор
|
Пост N: 1779
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.01.11 15:41. Заголовок: fil пишет: blostfoc..
fil пишет: цитата: | blostfocus делать не стал, а просто активизирую глобальный флаг перед вызовом любого диалога |
| Но по бровсу может ездить не только свой диалог, но и чужой, поэтому отслеживать фокус было бы правильнее
|
|
|
|
|
| Администратор
|
Пост N: 1780
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.01.11 15:44. Заголовок: Pasha пишет: А карт..
Pasha пишет: цитата: | А картинку показать можно ? Как это выглядит ? |
| Слушай, зачем картинка, да ? Включаем абстрактное мышление. Видим любой бровс/грид. По нему зачем-то ездит диалог. При этом бровс под диалогом медленно перерисовывается. Применяем предложенный трюк. Диалог так же ездит, но бровс перерисовывается мгновенно.
|
|
|
|
| |
Пост N: 68
Зарегистрирован: 17.06.10
|
|
Отправлено: 09.01.11 16:03. Заголовок: Увы, колбасу я не уч..
|
|
|
|
| постоянный участник
|
Пост N: 1618
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.01.11 19:44. Заголовок: Pasha пишет: Слуша..
Pasha пишет: цитата: | Слушай, зачем картинка, да ? Включаем абстрактное мышление. |
| Нужно переходить с терминалки ! А куда, пока не знаю. Вот и хочется посмотреть что люди делают ! fil пишет: цитата: | Увы, колбасу я не учитываю |
| Красиво тоже ! А при переключение на вкладки "Оплата", "Подрядчик" и др. - что происходит ?
|
|
|
|
| |
Пост N: 73
Зарегистрирован: 17.06.10
|
|
Отправлено: 09.01.11 19:59. Заголовок: Это прога некоего до..
Это прога некоего документооборота. Основной бровс содержит документы. Бровс ниже контекстно показывает те или иные дополнительные реквизиты текущего документа. Соответственно, выбор вкладок "Оплата", "Подрядчик" и др. - позволяет выбрать тот или иной контекст
|
|
|
|
| Администратор
|
Пост N: 1782
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.01.11 22:32. Заголовок: Andrey пишет: Нужно..
Andrey пишет: цитата: | Нужно переходить с терминалки ! А куда, пока не знаю. Вот и хочется посмотреть что люди делают ! |
| Картинки - это конечно хорошо, но боюсь, что картинки мало о чем скажут. Чтообы определиться в своих предпочтениях, надо самому что-нибудь сделать на обоих продуктах. Оценить трудоемкость одного и другого
|
|
|
|
| |
Пост N: 1976
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.01.11 22:39. Заголовок: Pasha пишет: Чтообы..
Pasha пишет: цитата: | Чтообы определиться в своих предпочтениях, надо самому что-нибудь сделать на обоих продуктах |
| +1
|
|
|
|
| |
Пост N: 1979
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.01.11 11:35. Заголовок: Снова засада :) Тако..
Снова засада :) Такой ход работает нормально obrw:blostfocus:={||DeleteObject( oBrw:hSaveScr ),oBrw:hSaveScr := WndBitMap( oBrw:hWnd )} Но вот захотелось при открытии какого либо диалога , основное окно с бровсом делать полупрозрачным В диалоге вызываю SETTRANSPARENT(ownd:hWnd,220) Все в норме только бровс весь черный , как ночь (при повторном вызове диалога все нормально). Куда копать ? Исходник #include "FiveWin.ch" #define _WIN32_IE 0x0500 #define HB_OS_WIN_32_USED #define _WIN32_WINNT 0x0400 #define WS_EX_LAYERED 0x80000 #define LWA_ALPHA 0x02 #define GWL_EXSTYLE (-20) #define LWA_COLORKEY 1 FUNCTION SetColorTransparency( hWnd, nColor ) LOCAL nRet, lRet := .F. SetWindowLong( hWnd, GWL_EXSTYLE, C_OR( GetWindowLong( hWnd, GWL_EXSTYLE ), WS_EX_LAYERED ) ) nRet := SetLayeredWindowAttributes( hWnd, nColor, 0, LWA_COLORKEY ) IF VALTYPE(nRet) == 'N' lRet := ( nRet > 0 ) ENDIF RETURN( lRet ) DLL32 Function SetLayeredWindowAttributes(hwnd as LONG, crkey as LONG,bAlpha as LONG ,dwFlags as DWORD) AS LONG ; PASCAL FROM "SetLayeredWindowAttributes" Lib "user32.dll" #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" #include<stdio.h> #include<string.h> #include<shellapi.h> HB_FUNC( SETTRANSPARENT) { typedef BOOL (__stdcall *PFN_SETLAYEREDWINDOWATTRIBUTES)(HWND,COLORREF,BYTE,DWORD); PFN_SETLAYEREDWINDOWATTRIBUTES pfnSetLayeredWindowAttributes = NULL; HINSTANCE hLib = LoadLibrary("user32.dll"); if (hLib != NULL) { pfnSetLayeredWindowAttributes = (PFN_SETLAYEREDWINDOWATTRIBUTES)GetProcAddress(hLib,"SetLayeredWindowAttributes"); } if (pfnSetLayeredWindowAttributes) { SetWindowLong((HWND) hb_parnl (1),GWL_EXSTYLE,GetWindowLong((HWND) hb_parnl (1),GWL_EXSTYLE) | WS_EX_LAYERED); pfnSetLayeredWindowAttributes((HWND) hb_parnl (1), 0, hb_parni (2), LWA_ALPHA); } if (!hLib) { FreeLibrary(hLib); } } #define HB_OS_WIN_32_USED /*#define _WIN32_WINNT 0x0400 */ #include <windows.h> #include "hbapi.h" #include "hbapiitm.h" HB_FUNC ( SETWINDOWLONG ) { hb_retnl( SetWindowLong( (HWND) hb_parnl(1), hb_parni(2), hb_parnl(3) ) ); } HB_FUNC( C_AND ) { hb_retnl( hb_parnl(1) & hb_parnl(2) ) ; } HB_FUNC( C_OR ) { hb_retnl( hb_parnl(1) | hb_parnl(2) ) ; } HB_FUNC( C_NOT ) { hb_retnl( ~hb_parnl(1) ) ; } #pragma ENDDUMP
|
|
|
|
| |
Пост N: 76
Зарегистрирован: 17.06.10
|
|
Отправлено: 12.01.11 12:07. Заголовок: Наверное моно сохран..
Наверное моно сохранить экран с бровсом как картинку. Делать бровс Hide, а вместо него светить эту картинку - вроде есть примерчики по прозрачности
|
|
|
|
| постоянный участник
|
Пост N: 38
Зарегистрирован: 29.05.10
|
|
Отправлено: 12.01.11 14:27. Заголовок: fil пишет: Наверное..
fil пишет: цитата: | Наверное моно сохранить экран с бровсом как картинку. Делать бровс Hide, а вместо него светить |
| Можно :) А вообще зачем это делать? Для себя я нашел только одно объяснение , т.к. ни на полупразрачном бровсе особо не поймешь что есть , то видимо это для того что бы подчеркнуть ( выделить) важность того что есть на диалоге. Если так то огород годить , а потом бороться с "следами" "жетами" смысла нет - можно использовать стандартный код: #include 'fivewin.ch' #include 'ord.ch' #include 'xbrowse.ch' REQUEST DBFCDX static cBmpPath := 'c:\FWH\bitmaps\backgrnd\' function Main() local oWnd, oBar, oBrw USE CUSTOMER DEFINE WINDOW oWnd TITLE 'Проба' @ 0, 0 XBROWSE oBrw OF oWnd ; ALIAS 'CUSTOMER' AUTOCOLS ; CELL LINES ; COLOR CLR_WHITE, CLR_BLUE DEFINE BUTTONBAR oBar OF oWnd SIZE 100,32 2007 DEFINE BUTTON OF oBar PROMPT 'TESTIK'; ACTION BlurEffect( oBrw ) SET MESSAGE OF oWnd TO FWVERSION 2007 oBrw:SetBackGround( cBmpPath + 'water3.bmp' ) oBrw:CreateFromCode() oWnd:oClient := oBrw ACTIVATE WINDOW oWnd MAXIMIZED return nil Function BlurEffect( oBrw ) local hBmp local hBlur oBrw:GetDC() hBmp := MakeBkBmp( oBrw:hWnd, oBrw:hDC ) hBlur := Blur( hBmp, 3 ) PalBmpDraw( oBrw:hDC, 0, 0, hBlur ) MsgStop( "Увлечение компом портит глаза!" ) DeleteObject( hBmp ) DeleteObject( hBlur ) oBrw:ReleaseDC() return nil Меняя в Blur( hBmp, 3 ) второй параметр можно усиливать или уменьшать эффект
|
|
|
Ответов - 97
, стр:
1
2
3
4
5
All
[только новые]
|
|