Форум » 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: Haz пишет Ну как метод сделать можно, черновик попробовал , мелькает меньше ( только на DrawSelect ) На DrawSelect не должна моргать, там же ничего нет, после всех DrawLine одна строка поверх с др. атрибутами цвета ... и все "Дойдешь до кондиции" выложи на посмотреть

Haz: SergKis пишет: На DrawSelect не должна моргать Должна, сначала рисуются все строки drawline а потом drawselect и эта прорисовка со стандарта на селект видна на плохой сети. Но это решаемо алгоритмом

Haz: SergKis пишет: третий вариант" это событие 55 (выше Сделал контрольный, чуть косметики и выложу. Это не совсем событие 55, там у тебя Refresh без очистки. Это значит , что при установке фильтра и не полном заполнении окна бровса, строки из фильтра перерисуются, а остальные остаются мусором на экране. В данном случае нужна очистка, но ее видно мельканием, т.к. сначала полностью очищается окно, а потом все рисуем заново Чисто теоретически , при неполном заполнении окна бровса с очисткой работает быстрее ( меньше строк рисовать ) а с дорисовкой плавнее и плюс бонусом опционально сетка на незанятой область бровса ( любым цветом ). Я сделал пример не с очисткой , а с дорисовкой всего окна бровса


SergKis: Haz пишет Это значит , что при установке фильтра и не полном заполнении окна бровса, строки из фильтра перерисуются, а остальные остаются мусором на экране. Ты не понял, событие 55 может быть разным, простым, более сложным, Например такое :Event(55, {|ow,ky,ob| DoEvents(), ky := ow, ob:Refresh(ob:nLen < ob:nRowCount(), .T.), DoEvents() }) то, что было ранее это из примера, где фиксированное кол-во строк в тсб, который служит для установки\снятия галочек как в RedioGroup и вызывается в :bPostEdit, т.е. давая завершить работе методов :Edit... и прорисовкой тек. строки и только потом сработает 55 событие, которое перерисует все строки, для показа состояния галочек др. строк. PS И если откл. внутреннее исп. :Refresh() (в :UpStable или др. варанты), то 55 событие позволяет мне управлять когда перепоказывать окно тсб

Haz: SergKis пишет: Ты не понял, событие 55 может быть разным, простым, более сложным, Да понял я, вопрос в том что есть два варианта рефреш. Первый не чистит мусор, второй моргает. А так да , согласен на 55 можно понаписать свой h_tbrowse целиком

SergKis: Haz пишет вопрос в том что есть два варианта рефреш. Первый не чистит мусор, второй моргает Написанный выше дает только один вариант, на все случаи и :nLen ставит и чистит когда надо, по мне вопроса тут нет. То что моргает, так это уровень C, туда не лезем, т.к. DoubleBuffer не будет реализован. Т.е. что есть, то и используем

Andrey: Всем привет ! У меня есть иконки в ресурсах ехе-ника. Можно организовать показ этих иконок в ТСБ ? bmp как показывать знаю....

gfilatov2002: Andrey пишет: Можно организовать показ этих иконок в ТСБ ? Да, можно Выложил рабочий пример по адресу click here Он сделан на базе примера MiniGUI\SAMPLES\Advanced\Tsb_BitMaps

Andrey: gfilatov2002 пишет: Выложил рабочий пример по адресу Спасибо БОЛЬШОЕ ! И в своей библиотеке подправь этот пример. Будет тогда отлично !

Andrey: А иконку в контекстное меню можно сразу выводить ? Без всякой замены на лету ? А то приходилось делать в два этапа, вывести пустой ресурс, а потом менять его на иконку. Сложно это, давно перестал делать.

gfilatov2002: Andrey пишет: А иконку в контекстное меню можно сразу выводить ? Уже можно... Благодарю за запрос

alex_II: Столкнулся с несоответствием в описании структуры массива aColors. Использовал superheader и захотел поменять цвета через SetColor, в описании это 16 и 17 элементы массива, а на деле оказалось надо указывать 15 и 16 элемент. Глянул в TSBROWSE.CH. там тоже 16 и 17, непонятно Использую HMG Extended Edition version 22.12 (Update 2).

SergKis: alex_II пишет захотел поменять цвета через SetColor, в описании это 16 и 17 элементы массива Кусочек со старого примера (версии старше указанной), работает на 16 и 17 элементы[pre2] STATIC FUNCTION mySupHdTsb( oBrw, aSupHd ) LOCAL O := oBrw:Cargo // использовать из контейнера свои переменные ADD SUPER HEADER TO oBrw FROM 1 TO oBrw:nColCount() TITLE " "+aSupHd[1] HORZ DT_LEFT WITH OBJECT oBrw // задать цвета суперхидеру :SetColor( {16}, { O:nClr16 } ) // 16, фона :SetColor( {17}, { O:nClr17 } ) // 17, текста END WIDTH RETURN NIL [/pre2]

Andrey: Если я ставлю фильтр на базу oBrw:FilterData( cFilter ), то у меня при перемещении по базе на линии ВЕРТИКАЛЬНОГО скролинга бегунок неправильно отображается. Как починить его ?

Haz: Andrey пишет: Как починить его ? разбираться со значением :bLogicLen после вызова фильтра. Там устанавливается конкретное значение , отличное от изначального в :setdbf() Ошибка. bLogicLen. не учтена работа в шаред режиме при которой коллеги могут внести правки в базу , влияющие на фильтр , а так же удаление и добавление новых записей и то что фильтр можно поставить вне бровса. И при значении :bLogicLen == {|| 1000} после последнего вызова метода получим ерунду. А так же, не применимо для логики ads в целом , с его AOF фильтрами.

Andrey: Иконки рисуются красиво на светлых тонах. Но если выводить на тёмном фоне, на иконках появляются "зазубрины": Это можно как то исправить ? P.S. Пробовал ставить темные иконки - не проходит.... Хотя в меню такие иконки нормально выглядят...

Andrey: Собираю коллекцию показа ресурсов в ТСБ ! Не могу понять как можно загрузить bmp, png, jpg из внешней dll + с изменением размеров ? Т.е. картинки в dll могут быть любых размеров, а мне в ТСБ нужно выводить нужный размер, допустим 90х90. С иконками разобрался, их можно загружать в ТСБ любых размеров. Работа с ресурсами в ТСБ: [pre2]#include "minigui.ch" #define LOAD_LIBRARY_AS_DATAFILE 0x00000002 ////////////////////////////////////////////////////////// .... oBrw:GetColumn( "FLD1" ):aCheck := { LoadImage( ".\RES\check1.bmp" ), LoadImage( ".\RES\check0.bmp" ) } oBrw:GetColumn( "FLD2" ):aCheck := { GETICONFROMRES( ".\RES\Edit32.ico" ), NIL } // файл иконки 32x32 oBrw:GetColumn( "FLD3" ):aCheck := { GETICONFROMRES( "iFolder32" ) , NIL } // ресурс иконки в ехе-файле 32x32 oBrw:GetColumn( "FLD4" ):aCheck := { myLoadIconByName( "iSave128", 48 ), NIL } // 48x48 - ресурс иконки 128x128 в ехе-файле oBrw:GetColumn( "FLD5" ):aCheck := { myLoadIconByName( ".\RES\Edit32.ico", 64 ), NIL } // файл иконки 32x32 увеличим 64x64 oBrw:GetColumn( "FLD6" ):aCheck := { myLoadLibraryEx("Image.Dll", "iExit", 90 ), NIL } // ресурс иконки в dll-файле любые размеры oBrw:GetColumn( "FLD7" ):aCheck := { LoadImage( ".\RES\Save32.png" ), NIL } oBrw:GetColumn( "FLD8" ):aCheck := { LoadImage( ".\RES\Mail32.jpg" ), NIL } oBrw:GetColumn( "FLD9" ):aCheck := { myLoadImageDll( "Image.Dll", "png_Mail", 64 ), NIL } oBrw:GetColumn( "FLD6" ):lBitMap := .T. oBrw:GetColumn( "FLD6" ):aBitMaps := { LoadImage( ".\RES\edit_delete.bmp" ), ; LoadImage( ".\RES\edit_cancel.bmp" ), ....... } ..... FUNCTION myLoadIconByName( cIcon, nWH) LOCAL hIcon, hBmp hIcon := myLoadIconByName( cIcon, nWH, nWH ) hBmp := BmpFromIcon( hIcon ) DestroyIcon(hIcon) RETURN hBmp FUNCTION myLoadLibraryEx( cIconDll, cIcon, nWH ) LOCAL hIcon, hLib, hIconFromDll, hBmp := 0 If !File( cIconDll ) MsgStop("There is no resource file for the program!" + CRLF + cIconDll ) Return hBmp Endif hLib := LoadLibraryEx( cIconDll, 0, LOAD_LIBRARY_AS_DATAFILE ) if ! Empty( hLib ) hIconFromDll := LoadIconByName( cIcon, nWH, nWH, hLib ) if ! Empty( hIconFromDll ) hIcon := CopyIcon( hIconFromDll ) hBmp := BmpFromIcon( hIcon ) DestroyIcon( hIconFromDll ) DestroyIcon( hIcon ) endif FreeLibrary( hLib ) endif RETURN hBmp[/pre2] Замечания по коду приветствуются. Если хендл не получился, возвращаю 0, может и неправильно, но зато потом можно убить сразу все хендлы: [pre2] ON RELEASE {|| AEval(ahBmp, {|h| DestroyIcon( h ) }) }[/pre2] Как можно сделать функцию - myLoadImageDll( "Image.Dll", "png_Mail", 64 ) ? где "png_Mail" - имя ресурса, 64 - нужный размер показа

Andrey: В новой версии МиниГуи 23.09 (Update 2) сделать просмотр dbf-файла просто. Минимальный код для открытия базы: [pre2] #include "minigui.ch" REQUEST DBFCDX, DBFFPT FUNCTION Main() LOCAL cDbf := GetStartUpFolder() + '\test_Engl.dbf' RddSetDefault("DBFCDX") SET FONT TO "DejaVu Sans Mono", 13 USE (cDbf) NEW EXCLUSIVE TsbViewer() RETURN NIL // добавить при сборке библиотеку TsbViewer.lib[/pre2] Внешний вид окна:

Dima: Andrey пишет: В новой версии МиниГуи 23.09 (Update 2) сделать просмотр dbf-файла просто. Да мы в курсе , читаем ChangeLog.txt PS C:\MiniGUI\SAMPLES\Advanced\Tsb_Viewer\demo5.prg

Dima: Правда есть ньюанс при запуске



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