Форум » 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: Опять руки дошли до TBROWSE и снова вопрос по нему. Как получить ширину колонок в TBROWSE после их изменением юзером ? Т.е. сохранить эту ширину в файле-настроек, а потом восстановить (установить) при других запусках.

Haz: Andrey пишет: Как получить ширину колонок в TBROWSE проще всего заглянуть в исходник METHOD GetColSizes() INLINE If( ValType( ::aColSizes ) == "A", ::aColSizes, Eval( ::aColSizes ) ) PS. И соответственно получить ширину колонки n можно oBrw:GetColSizes()[n]

Andrey: Haz пишет: И соответственно получить ширину колонки n можно oBrw:GetColSizes()[n] Спасибо !!! При создании окна есть ON INIT. А где при создании (или после создания) TBROWSE можно также сделать ? Т.е. нужно восстановить все настройки допустим из ини-файла.


SergKis: Andrey пишет:А где при создании (или после создания) TBROWSE можно также сделать ? Т.е. нужно восстановить все настройки допустим из ини-файла. сам же ответил:При создании окна есть ON INIT. там читаешь ini делаешь SetColWidth(...), расчитывашь новые (или из ini) размеры TsBrowse ... или между END WINDOW и ACTIVATE WINDOW

SergKis: Andrey SetColSize(...), надо, а не SetColWidth(...)

Andrey: SergKis пишет: или между END WINDOW и ACTIVATE WINDOW Понял. Спасибо БОЛЬШОЕ ! Насколько я понял TBROWSE использует 5 настраиваемых шрифтов. // --------- TSCOLUMN.PRG ------------------------------- // DATA hFont // 1-cells font // DATA hFontHead // 2-header font // DATA hFontFoot // 3-footer font // DATA hFontSpcHd // 4-special header font // DATA hFontEdit // 5-edition font Как изменить их - нашел oBrw:ChangeFont( aFont[nI], , nI ), а как получить из уже настроенного TBROWSE этот список шрифтов (с размерами и т.д.) ?

gfilatov2002: Andrey пишет: а как получить из уже настроенного TBROWSE этот список шрифтов Используйте для этого функцию GetFontParam(FontHandle) Пример: [pre2] aFontPar := GetFontParam(hFont) FontName := aFontPar [1] FontSize := aFontPar [2] bold := aFontPar [3] italic := aFontPar [4] underline := aFontPar [5] strikeout := aFontPar [6] [/pre2]

Andrey: gfilatov2002 пишет: Используйте для этого функцию GetFontParam(FontHandle) Это я видел в h_tbrowse.prg Мне нужно получить сам список хендлов. hFont1 := oBrw:hFont hFont2 := oBrw:hFontHead и т.д. не работает.... или нужно типа так - hFont1 := oBrw:aColumns[ 1 ]:hFont ? Но тоже не работает...

Haz: Andrey пишет: А где при создании (или после создания) TBROWSE можно также сделать ? Т.е. нужно восстановить все настройки допустим из ини-файла. у TsBrowse объекта есть блок DATA bInit // code block to be evaluated on init может он ?

Andrey: Haz пишет: может он ? Скорее всего нет ! Нужно ручками записывать и восстанавливать все параметры TBROWSA. Вопрос предыдущий так и не смог решить. Мне нужно получить сам список хендлов. hFont1 := oBrw:hFont hFont2 := oBrw:hFontHead и т.д. не работает.... или нужно типа так - hFont1 := oBrw:aColumns[ 1 ]:hFont ? Но тоже не работает...

Haz: Andrey пишет: hFont1 := oBrw:aColumns[ 1 ]:hFont ? Но тоже не работает... что именно не работает ? Нормально возвращает хендл и GetFontParam() по нему дает правильные данные

Andrey: Haz пишет: что именно не работает ? hFont1 := oBrw:aColumns[ 1 ]:hFont // строка 297 If hFont1 != Nil aFontTmp := GetFontParam(hFont1) ENDIF Ошибка: Error BASE/1004 Метод не экспортирован: ACOLUMNS Called from ACOLUMNS(0) Called from TBRUPFONTS(297)

Haz: Andrey пишет: Error BASE/1004 Метод не экспортирован: ACOLUMNS это в каком куске кода происходит ??? Похоже имеет место попытка получить шрифты с еще не инициализированного бровса. PS. как oBrw передается в функцию ? если никак то объявлен ли oBrw к примеру как PUBLIC oBrw перед созданием ?

Andrey: Haz пишет: это в каком куске кода происходит ??? Похоже имеет место попытка получить шрифты с еще не инициализированного бровса. Точно. Ж.. с ручкой - передача oBrw: между функциями неправильная !

Andrey: Как лучше менять шрифты в TBROWSе ? оBrw:ChangeFont( aFont[ 1 ], , 1 ) cBrw:ChangeFont( aFont[ 2 ], , 2 ) cBrw:ChangeFont( aFont[ 3 ], 1 , 3 ) cBrw:ChangeFont( aFont[ 4 ], , 4 ) или через oBrw:hFont := _SetFont (ControlHandle,FontName,FontSize,bold,italic,underline,strikeout) ...............

Haz: Andrey пишет: Как лучше менять шрифты в TBROWSе через оBrw:ChangeFont( aFont[ 1 ], , 1 ) , т.к. aFont[] может быть кодовым блоком и соответственно шрифт в колонке может меняться от условий. К примеру - обслуженная заявка может отображаться перечеркнутым шрифтом, а черновик - курсивом

Andrey: А как тогда из выбранного списка шрифтов (из меню) сделать переназначение шрифтов. Допустим есть массив: aFonts := {} AADD( aFonts, {"Times New Roman",11,lBold,lItalic} ) AADD( aFonts, {"Arial" ,12,lBold,lItalic} ) AADD( aFonts, {"Tahoma" ,14,lBold,lItalic} ) AADD( aFonts, {"Courier New" ,16,lBold,lItalic} ) AADD( aFonts, {"Courier New" ,12,lBold,lItalic} ) ---> через оBrw:ChangeFont( aFont[ 1 ], , 1 ) и т.д. Т.е. как из массива aFonts[1] получить хендл этого шрифта (размер,болд,италик) ? Достаточно сделать GetFontHandle( aFonts[1] ) или нет ?

Haz: Andrey пишет: Достаточно сделать GetFontHandle( aFonts[1] ) достаточно НО если это не блок кода Не понял конечную цель , чего именно хотим ? -если из меню шрифт назначить - тогда это передать параметры в define font и получив хендл назначенного шрифта через GetFontHandle() еспользовать его - если по хендлу параметры шрифта получить , так пару сообщений назад Григорий все расписал -если из объекта aColumns хендл получить - то сначала проверить его надо на тип данных через IF Valtype(::hFont) == "B" hFontHandle := eval(::hFont) END В итоге - цель то какая ?

Andrey: Haz пишет: достаточно НО если это не блок кода Что-то не работает. Сделал по другому - работает, но может я неправ ? ///////////////////////////////////////////////////////////////////////////////////////// FUNCTION TbrUpFonts(oBrw,aFonts) // перечитать шрифты TBROWSE LOCAL nI, hFont, aF, ControlHandle := oBrw:hWnd IF LEN(aFonts) > 0 FOR nI := 1 TO 5 aF := aFonts[nI] hFont := _SetFont(ControlHandle,aF[1],aF[2],aF[3],aF[4]) oBrw:ChangeFont( hFont, , nI ) NEXT ENDIF ..............

Haz: Andrey пишет: Что-то не работает. не обратил внимания у меня aFont из хендлов а твой массив параметров шрифта . тогда НЕ ДОСТАТОЧНО тогда пример richEditEx в помощь ( уже вроде говорили про него в этом контексте месяца три назад ) там как раз показано как использовать _SetFont(), и правильно что туда заглянул



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