On-line: NickSam, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
администратор




Пост N: 1949
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.01.11 15:51. Заголовок: Тормозок


Имеем Бровс , создаем какой нибудь диалог (или окно) и таскаем его по бровсу. Двигается он с заметными
тормозами. Это особенность FW ? Как то лечится ?
Ни чего подобного не видел в любых других программах под Windows , где так же юзаются таблицы.


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 97 , стр: 1 2 3 4 5 All [только новые]


администратор




Пост N: 1961
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.01.11 17:11. Заголовок: Счас картинку выложу..


Счас картинку выложу ;)

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1962
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.01.11 17:17. Заголовок: До нажатия правой кн..


До нажатия правой кнопки мышки


После нажатия , курсор уехал на 253 код


Закрываем диалог и все так как на первой картинке

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1771
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.01.11 18:32. Заголовок: Ух ты ! Вкусно ! Дум..


Ух ты ! Вкусно !
Думаем. На нажатие rclick что у нас ? Вызывается диалог с картинкой. При этом бровс теряет фокус, и на пайнт вызывается прорисовка экрана, то, что было сохранено на коде 253 Столичная. Почему так - непонятно
Может быть, перед вызовом этого диалога отключить фокус с прорисовкой сохраненного экрана ? Т.е, добавить в класс lPaint, перед выводом диалога сбрасывать его, а потом восстанавливать ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1772
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.01.11 18:37. Заголовок: Ага, имеем дело с ра..


Ага, имеем дело с рассинхровкой. Когда у бровса был фокус, был товар 253, и на нем сохранился экран. Мышкой кликнули на кровянке, при этом пайнт не вызвался. Брорвс потерял фокус, вызвался пайнт, и восстановилась столичная
Надо добавлять lPaint, адназначна

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1963
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.01.11 18:45. Заголовок: Pasha пишет: Надо д..


Pasha пишет:

 цитата:
Надо добавлять lPaint, адназначна


Понял. Спасибо !

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1773
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 07.01.11 18:46. Заголовок: Нет, при этом теряет..


Нет, при этом теряется смысл всей затеи. Ведь этот тот самый диалог. Лучше перед вызовом диалога вызвать refresh у бровса, чтобы он выдал paint, при этом сохранится нужный экран
Или, еще лучше, напрямую вызвать

DeleteObject( oBwr:hSaveScr )
oBwr:hSaveScr := WndBitMap( oBrw:hWnd )

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1964
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.01.11 19:05. Заголовок: Pasha Да refresh не..


Pasha
Да refresh не помог. Напрямую сработало.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1965
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 08.01.11 12:01. Заголовок: Dima пишет: Или, ещ..


Pasha пишет:

 цитата:
Или, еще лучше, напрямую вызвать

DeleteObject( oBwr:hSaveScr )
oBwr:hSaveScr := WndBitMap( oBrw:hWnd )



Поигрался. Пришел к выводу что этот вызов проще будет прописать в blostfocus бровса

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 67
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 09.01.11 13:14. Заголовок: Приспособил сию штук..


Приспособил сию штуку под TSBROWSE. Все, в общем, нормально. Т.к. у меня одновременная работа нескольких взаимоконтекстных бровсов на немодальных окнах, то blostfocus делать не стал, а просто активизирую глобальный флаг перед вызовом любого диалога

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1617
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.01.11 14:45. Заголовок: fil пишет: Приспосо..


fil пишет:

 цитата:
Приспособил сию штуку под TSBROWSE.



А картинку показать можно ? Как это выглядит ?


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1779
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.01.11 15:41. Заголовок: fil пишет: blostfoc..


fil пишет:

 цитата:
blostfocus делать не стал, а просто активизирую глобальный флаг перед вызовом любого диалога



Но по бровсу может ездить не только свой диалог, но и чужой, поэтому отслеживать фокус было бы правильнее

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 1780
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.01.11 15:44. Заголовок: Pasha пишет: А карт..


Pasha пишет:

 цитата:
А картинку показать можно ? Как это выглядит ?



Слушай, зачем картинка, да ? Включаем абстрактное мышление. Видим любой бровс/грид. По нему зачем-то ездит диалог. При этом бровс под диалогом медленно перерисовывается.
Применяем предложенный трюк. Диалог так же ездит, но бровс перерисовывается мгновенно.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 68
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 09.01.11 16:03. Заголовок: Увы, колбасу я не уч..


Увы, колбасу я не учитываю

http://pics.qip.ru/002oAm-201nmrK/<\/u><\/a>

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 1618
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.01.11 19:44. Заголовок: Pasha пишет: Слуша..


Pasha пишет:

 цитата:

Слушай, зачем картинка, да ? Включаем абстрактное мышление.



Нужно переходить с терминалки ! А куда, пока не знаю. Вот и хочется посмотреть что люди делают !

fil пишет:

 цитата:
Увы, колбасу я не учитываю



Красиво тоже ! А при переключение на вкладки "Оплата", "Подрядчик" и др. - что происходит ?


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 73
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 09.01.11 19:59. Заголовок: Это прога некоего до..


Это прога некоего документооборота. Основной бровс содержит документы. Бровс ниже контекстно показывает те или иные дополнительные реквизиты текущего документа. Соответственно, выбор вкладок "Оплата", "Подрядчик" и др. - позволяет выбрать тот или иной контекст

Спасибо: 1 
ПрофильЦитата Ответить
Администратор




Пост N: 1782
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.01.11 22:32. Заголовок: Andrey пишет: Нужно..


Andrey пишет:

 цитата:
Нужно переходить с терминалки ! А куда, пока не знаю. Вот и хочется посмотреть что люди делают !



Картинки - это конечно хорошо, но боюсь, что картинки мало о чем скажут. Чтообы определиться в своих предпочтениях, надо самому что-нибудь сделать на обоих продуктах. Оценить трудоемкость одного и другого

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 1976
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 09.01.11 22:39. Заголовок: Pasha пишет: Чтообы..


Pasha пишет:

 цитата:
Чтообы определиться в своих предпочтениях, надо самому что-нибудь сделать на обоих продуктах


+1

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 76
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 12.01.11 12:07. Заголовок: Наверное моно сохран..


Наверное моно сохранить экран с бровсом как картинку. Делать бровс Hide, а вместо него светить эту картинку - вроде есть примерчики по прозрачности

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост 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 ) второй параметр можно усиливать или уменьшать эффект


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 97 , стр: 1 2 3 4 5 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 270
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет