Форум » 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:....

Ответов - 301, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All

Andrey: SergKis пишет: придется делать log, что бы уличить их - работы будет не початый край Да ладно, лог-файл уже есть, сделаем дописку смены шрифта и цвета. Меня юзера достают, то шрифт им не тот , то цвет не тот. Компы то старые...

Andrey: Меняю фонт в TBROWSE: &cBrw:ChangeFont( aFont[ 1 ], , 1 ) &cBrw:ChangeFont( aFont[ 2 ], , 2 ) &cBrw:ChangeFont( aFont[ 3 ], 1 , 3 ) &cBrw:ChangeFont( aFont[ 4 ], , 4 ) Потом на кнопу "изменить фонты" делаю отдельную функцию смены фонтов. Как получить установленные фонты в виде массива имен и размеров ?

Haz: Andrey пишет: Как получить установленные фонты в виде массива имен и размеров ? Внимательно изучать примеры и тренировать память Здесь C:\MiniGUI\SAMPLES\Advanced\RichEditEx


Andrey: Haz пишет: Внимательно изучать примеры и тренировать память Здесь C:\MiniGUI\SAMPLES\Advanced\RichEditEx Спасибо за подсказку !

Andrey: Что-то не получается со шрифтами. До создания TBROWSE делаю определение фонтов: STATIC aFont := {} DEFINE FONT Font_1 FONTNAME "Times New Roman" SIZE 12 DEFINE FONT Font_2 FONTNAME "Times New Roman" SIZE 10 ITALIC DEFINE FONT Font_3 FONTNAME "Times New Roman" SIZE 10 BOLD DEFINE FONT Font_4 FONTNAME 'Arial' SIZE 12 ITALIC AAdd( aFont, GetFontHandle( "Font_1" ) ) AAdd( aFont, GetFontHandle( "Font_2" ) ) AAdd( aFont, GetFontHandle( "Font_3" ) ) AAdd( aFont, GetFontHandle( "Font_4" ) ) Меняю фонт в TBROWSE - см выше. Потом в другой функции пытаюсь определить заданные фонты TBROWSE: MsgFile("@Log.txt","aFont=",aFont) FOR nI := 1 TO 4 hFont := aFont[nI] aDim := GetFontRTF( hFont, 1 ) MsgFile("@Log.txt", nI,"hFont=",hFont,"aDim=",aDim ) NEXT ------------------------ Результат @Log.txt: "aFont=", {-2012603099, -1190518991, 1158290916, -989192754} 1, "hFont=", -2012603099, "aDim=", {"D", 65228, .F., .F., 1304580, .F., .F., 49} 2, "hFont=", -1190518991, "aDim=", {"D", 65228, .F., .F., 1304580, .F., .F., 49} 3, "hFont=", 1158290916, "aDim=", {"D", 223941, .F., .F., 1304580, .F., .F., 49} 4, "hFont=", -989192754, "aDim=", {"D", 223941, .F., .F., 1304580, .F., .F., 49} ------------------------ Т.е. не могу получить через функцию GetFontRTF( hFont, 1 ) установленный шрифт. Что забыл или не так делаю ?

Haz: Andrey пишет: Что забыл или не так делаю ? все не так там есть rr_getfonts() которая выдает список установленных в системе фонтов выбираешь нужное ИМЯ и РАЗМЕР _DefineFont ( "Font_x", "ИМЯ", РАЗМЕР, .F., .F., .F., .F.,, .F. ) далее как и с Font_1 - Font_4, когда Font_x больше не нужен или надо его переопределить используй _ReleaseFont("Font_x")

Andrey: Haz пишет: там есть rr_getfonts() которая выдает список установленных в системе фонтов выбираешь нужное ИМЯ и РАЗМЕР Эту менюшку я уже сделал ! Мне нужно передать в это меню ТЕКУЩИЕ ФОНТЫ и РАЗМЕР ФОНТА моего TBROWSE. Вот на этом я и споткнулся.

Haz: может проще запоминать где нить какие шрифты назначил для бровса, чем по хендлу ( который кстати ранее назначается именно именем и размером ) получить тоже имя и размер

Andrey: Haz пишет: может проще запоминать где нить какие шрифты назначил для бровса, чем по хендлу Ну этот вариант я не рассматривал, т.к. он самый простой... Хотел сделать по уму, как в других системах. Да и хотел понять, как делаются такие вещи в программах.

Haz: Andrey пишет: Хотел сделать по уму ага, а потом будет вопрос как из TSb получить хендл шрифта по уму это когда максимально просто

Andrey: Haz пишет: ага, а потом будет вопрос как из TSb получить хендл шрифта Так этот вопрос я и задавал вверху ! Что-то не получается со шрифтами. До создания TBROWSE делаю определение фонтов: STATIC aFont := {} DEFINE FONT Font_1 FONTNAME "Times New Roman" SIZE 12 DEFINE FONT Font_2 FONTNAME "Times New Roman" SIZE 10 ITALIC DEFINE FONT Font_3 FONTNAME "Times New Roman" SIZE 10 BOLD DEFINE FONT Font_4 FONTNAME 'Arial' SIZE 12 ITALIC AAdd( aFont, GetFontHandle( "Font_1" ) ) AAdd( aFont, GetFontHandle( "Font_2" ) ) AAdd( aFont, GetFontHandle( "Font_3" ) ) AAdd( aFont, GetFontHandle( "Font_4" ) ) Меняю фонт в TBROWSE - см выше. Потом в другой функции пытаюсь определить заданные фонты TBROWSE: MsgFile("@Log.txt","aFont=",aFont) FOR nI := 1 TO 4 hFont := aFont[nI] aDim := GetFontRTF( hFont, 1 ) MsgFile("@Log.txt", nI,"hFont=",hFont,"aDim=",aDim ) NEXT ------------------------ Результат @Log.txt: "aFont=", {-2012603099, -1190518991, 1158290916, -989192754} 1, "hFont=", -2012603099, "aDim=", {"D", 65228, .F., .F., 1304580, .F., .F., 49} 2, "hFont=", -1190518991, "aDim=", {"D", 65228, .F., .F., 1304580, .F., .F., 49} 3, "hFont=", 1158290916, "aDim=", {"D", 223941, .F., .F., 1304580, .F., .F., 49} 4, "hFont=", -989192754, "aDim=", {"D", 223941, .F., .F., 1304580, .F., .F., 49} ------------------------ Т.е. не могу получить через функцию GetFontRTF( hFont, 1 ) установленный шрифт. Что забыл или не так делаю ?

Haz: Andrey пишет: Так этот вопрос я и задавал вверху ! и это все сложности ? можно дернуть хендл из obrw:aColumns[n]:hFont или любой из определенных в исходнике TSCOLUMN.PRG ( нужно только в него заглянуть ) DATA hFont // cells font DATA hFontEdit // edition font DATA hFontHead // header font DATA hFontFoot // footer font DATA hFontSpcHd // special header font примерно так hFontHandle := oBrw:aColumns[n]:hFont

Andrey: Haz пишет: нужно только в него заглянуть Спасибо БОЛЬШОЕ за подсказку !!! Только мне нужны ТОЛЬКО 4 фонта: // nLevel 1 = Cells - Фонт ячеек в таблице // nLevel 2 = Headers - Фонт заголовков таблицы // nLevel 3 = Footers - Фонт нижнего колонтитула таблицы // nLevel 4 = SuperHeaders - Фонт составного заголовка таблицы Или я опять что-то не догоняю.... DATA hFontEdit // edition font - это фонт для редактирования в ячейке ? А почему он не задается в h_tbrowse.prg ? Эх, значит нужно менюшку другую делать...

Haz: nLevel - это не фонт а то куда его применить . Посмотри в исходнике :ChangeFont() если упрощенно то там это: Case nLevel == 1 // nLevel 1 = Cells ::aColumns[ nEle ]:hFont := hFont Case nLevel == 2 .and. ::lDrawHeaders // nLevel 2 = Headers ::aColumns[ nEle ]:hFontHead := hFont Case nLevel == 3 .and. ::lFooting .and. lDrawFooters // nLevel 3 = Footers ::aColumns[ nEle ]:hFontFoot := hFont Case nLevel == 4 .and. ::lDrawSuperHd // nLevel 4 = SuperHeaders ::aSuperHead[ nEle, 7 ] := hFont другими словами в зависимости от левела запоминаем хендл передаваемого фонта в нужное место. и соответственно его можно прочитать из этого места PS там же есть и такой код if ( FontHandle := GetFontHandle( FontName ) ) != 0 aFont := GetFontParam(FontHandle) FontName := aFont[1] FontSize := aFont[2] bold := aFont[3] italic := aFont[4] underline := aFont[5] strikeout := aFont[6] endif т.е. по хендлу получить параметры ( не проверял)

Andrey: Haz пишет: т.е. по хендлу получить параметры ( не проверял) Проверил у себя в TBROWSE: MsgFile("@Log.txt","aFont=",aFont) FOR nI := 1 TO 4 hFont := aFont[nI] aDim := GetFontParam( hFont ) MsgFile("@Log.txt", nI,"hFont=",hFont,"aDim=",aDim ) NEXT ------------------------ Результат @Log.txt: "aFont=", {587863100, 34214973, 1326059819, -1140188169} 1, "hFont=", 587863100, "aDim=", {"Arial", 9, .F., .F., .F., .F., 0} 2, "hFont=", 34214973, "aDim=", {"Arial", 9, .F., .F., .F., .F., 0} 3, "hFont=", 1326059819, "aDim=", {"Arial", 9, .F., .F., .F., .F., 0} 4, "hFont=", -1140188169, "aDim=", {"Arial", 9, .F., .F., .F., .F., 0} ------------------------ Что-то странное...

Haz: Andrey пишет: Что-то странное... а что именно странно - везде стоит дефолтом ариэль 9 попробуй так FontHandle := GetFontHandle( "Font_1") ) aFont := GetFontParam(FontHandle) Вот исходник из h_font.prg видно что ищет по хендлам определенным в программе FUNCTION GetFontParam( FontHandle ) LOCAL aFontAttr LOCAL i := AScan( _HMG_aControlHandles, FontHandle ) aFontAttr := { _HMG_DefaultFontName, _HMG_DefaultFontSize, .F. , .F. , .F. , .F. , 0 } IF i > 0 .AND. _HMG_aControlType == "FONT" aFontAttr := { _HMG_aControlFontName , ; _HMG_aControlFontSize , ; _HMG_aControlFontAttributes [i, FONT_ATTR_BOLD], ; _HMG_aControlFontAttributes [i, FONT_ATTR_ITALIC], ; _HMG_aControlFontAttributes [i, FONT_ATTR_UNDERLINE], ; _HMG_aControlFontAttributes [i, FONT_ATTR_STRIKEOUT], ; iif( Len( _HMG_aControlFontAttributes ) == 5, _HMG_aControlFontAttributes [i, FONT_ATTR_ANGLE], 0 ) } ENDIF RETURN aFontAttr

Andrey: Haz пишет: а что именно странно - везде стоит дефолтом ариэль 9 Вот это и странно !!! Я же делаю - До создания TBROWSE определение фонтов: STATIC aFont := {} DEFINE FONT Font_1 FONTNAME "Times New Roman" SIZE 12 DEFINE FONT Font_2 FONTNAME "Times New Roman" SIZE 10 ITALIC DEFINE FONT Font_3 FONTNAME "Times New Roman" SIZE 10 BOLD DEFINE FONT Font_4 FONTNAME 'Arial' SIZE 12 ITALIC AAdd( aFont, GetFontHandle( "Font_1" ) ) AAdd( aFont, GetFontHandle( "Font_2" ) ) AAdd( aFont, GetFontHandle( "Font_3" ) ) AAdd( aFont, GetFontHandle( "Font_4" ) )

Haz: гдето глюк i := AScan( _HMG_aControlHandles, FontHandle ) не находит хендл

Andrey: Haz пишет: гдето глюк Глюк у меня... Опять поторопился. Исправил переменную, вот получилось нормально: "aFont=", {1326062803, 336207122, 235543787, -1895163474} 1, "hFont=", 1326062803, "aDim=", {"Times New Roman", 12, .F., .F., .F., .F., 0} 2, "hFont=", 336207122, "aDim=", {"Times New Roman", 10, .F., .T., .F., .F., 0} 3, "hFont=", 235543787, "aDim=", {"Times New Roman", 10, .T., .F., .F., .F., 0} 4, "hFont=", -1895163474, "aDim=", {"Arial", 12, .F., .T., .F., .F., 0} Спасибо БОЛЬШОЕ !!! Теперь можно получать фонты.

Andrey: Вопрос по ширине колонок в TBROWSE. Кто как их определяет ? Можно вручную задавать ширину колонки через переменные, а можно же сделать расчет ширины колонки (шрифт*на длину поля) ? Или можно для функции LoadFields( cBrw, ParentForm, lEdit, aPoleField) ничего не заполнять, а она сама заполнит ? Поделитесь опытом...



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