Форум » GUI » TsBrowse в Минигуи (продолжение) » Ответить

TsBrowse в Минигуи (продолжение)

Vlad04: TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений К примеру [quote] DEFINE TBROWSE oBrw2 ; AT 60,450 ; ALIAS cAlias ; OF Form1 ; WIDTH 330 ; HEIGHT 340 ; FONT "Verdana" ; SIZE 9 ; ON DBLCLICK CopyRec(); ON GOTFOCUS fModelo_Hab(2) ; AUTOFILTER ; CELLED EDIT; VALUE nRec; GRID [/quote] Здесь я собрал параметры из разных tBrows Можно или нет и какие парметры заменить выражением ( и каким) ? oBrw2:.... oBrw2:....

Ответов - 181, стр: 1 2 3 4 5 6 7 8 9 10 All

SergKis: Andrey пишет Есть такой метод ? Берешь запускаешь hbedit.exe h_tbrowse.prg, делаешь Alt+L, в полученном списке набираешь что хочешь найти, к примеру, "draw" и смотришь содержимое найденных ф-й. Начни смотреть DrawHeaders() и другие. Потратишь несколько минут

Andrey: Пробовал в шапке/подвале разные картинки: bmp, png - очень некрасиво получаются: Если шапку/подвал делать белым или серым, без градиента, то более менее нормально. В нумераторе bmp красиво выглядит. Вопрос: можно ли как то сделать, чтобы картинки не делались цветом фона (убрать цвет фона), т.е. ключ какой то прикрутить, типа: [pre2]oBrw:lImgBackcolor := .T. / .F. [/pre2] Или это можно уже сейчас делать, а я и не знаю ?

Haz: Andrey пишет: Или это можно уже сейчас делать, а я и не знаю ? Можно , в си модуле поиграть с маской вывода.


Andrey: Haz пишет: Можно , в си модуле поиграть с маской вывода. Хоть напиши где этот модуль... А как протащить свой переключатель ?

Haz: Andrey пишет: Хоть напиши где этот модуль... единственный с мидуль в исходниках tsb, функция вроде tsdrawcell . в ней штук 5 вызовов вставки картинки , используется константа SCRAND . Можно поставить SCRCOPY и прозрачность фона и картинки уйдет . Вставь этот модуль на си целиком в свой проект через #pragma и меняй как хочешь. Ps.что означают эти константы в справке микрософт есть.

Haz: Andrey пишет: А как протащить свой переключатель ? править си и prg исходники. Сейчас не могу , перегруз

Andrey: Haz пишет: Вставь этот модуль на си целиком в свой проект через #pragma и меняй как хочешь. Для себя поставить один раз, да можно. Но хотелось бы нормального решения. [pre2] C:\borland\BCC55\Include\wingdi.h /* Ternary raster operations */ #define SRCCOPY (DWORD)0x00CC0020 /* dest = source */ #define SRCPAINT (DWORD)0x00EE0086 /* dest = source OR dest */ #define SRCAND (DWORD)0x008800C6 /* dest = source AND dest */ #define SRCINVERT (DWORD)0x00660046 /* dest = source XOR dest */ #define SRCERASE (DWORD)0x00440328 /* dest = source AND (NOT dest ) */ #define NOTSRCCOPY (DWORD)0x00330008 /* dest = (NOT source) */ #define NOTSRCERASE (DWORD)0x001100A6 /* dest = (NOT src) AND (NOT dest) */ #define MERGECOPY (DWORD)0x00C000CA /* dest = (source AND pattern) */ C:\MiniGUI\SOURCE\TsBrowse\c_TBrowse.c HB_FUNC( TSDRAWCELL ) { HWND hWnd = ( HWND ) HB_PARNL( 1 ); HDC hDC = ( HDC ) HB_PARNL( 2 ); int nRow = hb_parni( 3 ); int nColumn = hb_parni( 4 ); int nWidth = hb_parni( 5 ); .... DrawBitmap( hDC, hBitMap, nTop, nLeft, 0, 0, bSelec ? 0 : SRCAND ); [/pre2]

Andrey: Поставил целиком исправленный c_TBrowse.c в проект Вот что получилось: Спасибо БОЛЬШОЕ Haz

SergKis: Andrey пишет Поставил целиком исправленный c_TBrowse.c в проект Если не изменяет память, давно, в какой то версии, уже была замена с SRCCOPY на SRCAND

Andrey: А вот про это я тоже забыл. Некрасиво выглядит картинка в ячейках: Тогда нужно два переключателя, для шапки/подвала/суперхидера/номератора и для ячеек. [pre2]oBrw:lImgNoCellTransparency := .T. / .F. oBrw:lImgCellTransparency := .T. / .F. [/pre2]

Haz: SergKis пишет: Если не изменяет память, давно, в какой то версии, Да , несколько лет назад была именно по причине непрозрачного вывода. На тот момент замена немного сгладила вывод, потом появилась поддержка PNG с прозрачным фоном, может еще что то менялось. На моей памяти этот модуль менялся всего 2 раза, это изменение в скролле с целью убрать лишние прорисовку и эта маска с целью хоть как то получить прозрачность. В большинстве случаев отображение корректное, но бывает маску вывода нужно менять. Это единственное место где идет вывод графики в ячейку и параметр маски туда не передается. Если это требуется, просто включаю этот си модуль в проект и подбираю локально нужное значение. По хорошему эту маску нужно передавать параметром с установкой нужного значения по умолчанию, но подгрузить си модуль проще

Haz: Andrey пишет: Тогда нужно два переключателя, для шапки/подвала/суперхидера/номератора и для ячеек. oBrw:lImgNoCellTransparency := .T. / .F. oBrw:lImgCellTransparency := .T. / .F. Не нужны переключатели, нужно явное задание маски примерно так oCol:nCellBitmapMask := SCRAND и пр.

SergKis: Haz пишет нужно явное задание маски примерно так oCol:nCellBitmapMask := ... В HB_FUNC( TSDRAWCELL ) свободен 27 параметр или добавить 33-й[pre2] //HBRUSH wBrush = ( HBRUSH ) HB_PARNL( 27 ); BOOL b3DInv = ( HB_ISNIL( 28 ) ? FALSE : ! hb_parl( 28 ) ); BOOL b3D = ( HB_ISNIL( 28 ) ? FALSE : TRUE ); COLORREF nClr3DL = hb_parnl( 29 ); COLORREF nClr3DS = hb_parnl( 30 ); long lCursor = hb_parnl( 31 ); BOOL bSelec = ( HB_ISNIL( 32 ) ? FALSE : hb_parl( 32 ) ); [/pre2] а для колонок надо маску для каждого элемента определять oCol:nCellBmpMask oCol:nHeadBmpMask oCol:nFootBmpMask oCol:nSpcHdBmpMask AAdd( ::aSuperHead, { nFromCol, nToCol, uHead, nClrText, nClrBack, l3dLook, hFont, uBitMap, lAdjust, nLineStyle, ; nClrLine, nHAlign, nVAlign, lTransp, nSupHdBmpMask } ) //Super Header Вместо Bmp слово Image использовать в имени (Bmp короче) PS Есть еще void DrawMasked( HDC hDC, HBITMAP hbm, int wRow, int wCol ) с масками, с ней как ? PS2 Значение маски может задаваться блоком кода ?

Andrey: SergKis пишет: а для колонок надо маску для каждого элемента определять Отличная идея !

Haz: SergKis пишет: В HB_FUNC( TSDRAWCELL ) свободен 27 параметр или добавить 33-й думаю лучше добавить 33. Новая сущность , новый параметр

Haz: SergKis пишет: а для колонок надо маску для каждого элемента определять oCol:nCellBmpMask oCol:nHeadBmpMask oCol:nFootBmpMask oCol:nSpcHdBmpMask Вот поэтому мне проще было си модуль прицепить

SergKis: Вот поэтому мне проще было си модуль прицепить Понимаю, но вроде и описанные элементы, 33-ий параметр и немного добавить в методах :Draw...() для опр. 33-го параметра. В целом немного. Скажи что в С модуле менял, я туда не лазил

Haz: SergKis пишет: Скажи что в С модуле менял, я туда не лазил [pre2] else { if( bAdjBmp ) { DrawBitmap( hDC, hBitMap, rct.top, rct.left - 2, rct.right - rct.left + 3, rct.bottom - rct.top - 1, bSelec ? 0 : SRCAND ); hBitMap = 0; if( ! bOpaque ) MaskRegion( hDC, &rct, GetPixel( hDC, nLeft, nTop ), GetBkColor( hDC ) ); } else if( bOpaque ) DrawBitmap( hDC, hBitMap, nTop, nLeft, 0, 0, bSelec ? 0 : SRCAND ); // вот это отвечает за вывод uBmpCell в ячейке else DrawMasked( hDC, hBitMap, nTop, nLeft ); } } [/pre2]

SergKis: Игорь А это место (из текста выше) как ?[pre2] DrawBitmap( hDC, hBitMap, rct.top, rct.left - 2, rct.right - rct.left + 3, rct.bottom - rct.top - 1, bSelec ? 0 : SRCAND ); [/pre2]

Haz: SergKis пишет: А это место (из текста выше) как ? да просто ставил нужную маску вместо SRCAND и собирал проект. Если менять системно, то надо вводить 33 параметр в эту функцию int nMask = hb_parni( 33 ); и примерно DrawBitmap( hDC, hBitMap, rct.top, rct.left - 2, rct.right - rct.left + 3, rct.bottom - rct.top - 1, bSelec ? 0 : nMask ); В си тоже не особо силен, и по этой причине не стал делать тоже



полная версия страницы