Автор | Сообщение |
Vlad04
|
| постоянный участник
|
Пост N: 420
Зарегистрирован: 13.10.05
|
|
Отправлено: 19.12.13 18:16. Заголовок: TsBrowse в Минигуи (продолжение)
TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений К примеру цитата: | 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 |
| Здесь я собрал параметры из разных tBrows Можно или нет и какие парметры заменить выражением ( и каким) ? oBrw2:.... oBrw2:....
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
Andrey
|
| постоянный участник
|
Пост N: 4584
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.11.15 17:32. Заголовок: Понял... Спасибо ! ..
Понял... Спасибо ! Кстати насчёт Tsb_config. Можно исправить ( класс oBrw:Excel2(...) h_tbrowse.prg) вывод чисел ? Если использовать для вывода в таблице формат "999" или "@Z 999", то в Экселе колонка с числами - пустая. В Tsb_config пришлось ставить: IF aPole[nI,6] <> "N" // не использовать шаблон для числовых полей, т.к. // при печати в Excel поле будет пустое !!! oBrw:aColumns[nJ]:cPicture := aPole[nI,4] // шаблон колонки ENDIF Сейчас такая же беда в рабочих программах....
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4590
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.12.15 13:38. Заголовок: Ещё вопрос созрел по..
Ещё вопрос созрел по Tsbrowse. Как можно запретить юзеру смену колонок местами, но оставить возможность юзеру изменить размеры колонок ? Нашёл флаги: oBrw:lNoMoveCols := TRUE oBrw:lMChange := .F. Но они запрещают и изменение размеров колонок...
|
|
|
Haz
|
| |
Пост N: 705
Зарегистрирован: 20.02.11
|
|
Отправлено: 03.12.15 14:15. Заголовок: Andrey пишет: Как м..
Andrey пишет: цитата: | Как можно запретить юзеру смену колонок местами |
| Простого способа похоже нет -или менять исходник , вводя и контролируя новые флаги -или на ON DRAW повесить процедуру, которая будет проверять нужный порядок колонок и приводить его в норму если юзер там чего поменял Посмотрел исходник и нашел один костыль ... Если у колонки есть суперхидер то размеры менять можно , а двигать нельзя. Сделай один суперхидер на все колонки с высотой 0 и будет тебе счастье ( правда супрхид будет не нулевой высоты )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4591
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.12.15 15:27. Заголовок: Haz пишет: Если у к..
Haz пишет: цитата: | Если у колонки есть суперхидер |
| У меня есть он в программе. Haz пишет: Какой он и как его использовать ?
|
|
|
Haz
|
| |
Пост N: 706
Зарегистрирован: 20.02.11
|
|
Отправлено: 03.12.15 15:48. Заголовок: Andrey пишет: Какой..
Andrey пишет: цитата: | Какой он и как его использовать ? |
| читай по слогам цитата: | Если у колонки есть суперхидер то размеры менять можно , а двигать нельзя. Сделай один суперхидер на все колонки с высотой 0 и будет тебе счастье |
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4592
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.12.15 16:10. Заголовок: Суперхидер в таблице..
Суперхидер в таблице есть с 1 по 13 колонки высотой 38. Колонки местами меняются. Ставлю запрет на обмен колонками oBrw:lNoMoveCols := TRUE или oBrw:lMChange := .F. Колонки местами не меняются и нельзя уже изменить размер колонок !
|
|
|
Haz
|
| |
Пост N: 707
Зарегистрирован: 20.02.11
|
|
Отправлено: 03.12.15 16:20. Заголовок: Andrey пишет: Супер..
Andrey пишет: цитата: | Суперхидер в таблице есть. |
| Убери его , и добавь только такой ( для колонки 1 ) oBrw:AddSuperHead( 1 , 1 , '' ) После этого все колонки перестанут меняться местами PS. Говорю же , это "костыль" На счет всех, я не прав, не проверял а на одну работает! Советую лучше сюда смотреть -или менять исходник , вводя и контролируя новые флаги -или на ON DRAW повесить процедуру, которая будет проверять нужный порядок колонок и приводить его в норму если юзер там чего поменял
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4593
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.12.15 17:21. Заголовок: Понял ! Спасибо БОЛЬ..
Понял ! Спасибо БОЛЬШОЕ ! Haz пишет: цитата: | Советую лучше сюда смотреть -или менять исходник , вводя и контролируя новые флаги -или на ON DRAW повесить процедуру, которая будет проверять нужный порядок колонок и приводить его в норму если юзер там чего поменял |
| Боюсь пока не осилить данное предложение. Опыта пока маловато...
|
|
|
Haz
|
| |
Пост N: 708
Зарегистрирован: 20.02.11
|
|
Отправлено: 04.12.15 11:11. Заголовок: Andrey пишет: Боюсь..
Andrey пишет: цитата: | Боюсь пока не осилить данное предложение. Опыта пока маловато. |
| какой тут опыт нужен ? Используется имя колонки, если оно не присвоено - работать не будет // Сохранения порядка колонок по их именам Func SaveColPos( oBrw ) Local aSave := {} aEval( oBrw:aColumns, { |oCol| AADD( aSave, oCol:cName ) } ) Return aSave // Восстановление порядка колонок по их именам Func RestColPos( oBrw, aSave ) aEval( aSave, { |cName| oBrw:MoveColumn( oBrw:nColumn(cName), Ascan( aSave, cName)) } ) Return nil При первой прорисовке бровса запоминаешь порядок в массив Проверку на соответствие текущего порядка и сохраненного в массиве уверен сделаешь. И если порядок нарушен по ON DRAW восстанавливаешь как oBrw:bOnDraw := {|| IF( ЕслиНарушен(), RestColPos( oBrw, aSave), NIL ) } Пользователь после этого может таскать колонки куда хочет, но при этом быстро устает т.к. они сразу возвращаются на место. PS. НЕ ПРОВЕРЯЛ , просто описал идею. Должна работать PPS проверку нужно в том же он драу поводить )))
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4600
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.12.15 14:57. Заголовок: Всем привет. Как зам..
Всем привет. Как заменить ОДНУ картинку в уже созданной таблице ? Допустим есть LOCAL ahBmpPlus := { LoadImage( "bFolder48.bmp" ) } LOCAL ahBmpMinus:= { LoadImage( "bFolder48x2.bmp" ) } ..... // создать первую колонку с картинкой ADD COLUMN TO oBrwP HEADER "" ; DATA { || ahBmpPlus } ; SIZE 50 BITMAP ; ..... EDITABLE oBrwP:aColumns[1]:bPrevEdit := {|| MenuPlusMinus(ahBmpPlus,ahBmpMinus), FALSE } ............... Function MenuPlusMinus(ahBmpPlus,ahBmpMinus) ..... // вот здесь заменить одну картинку на другую. Как написать ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4605
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.12.15 14:01. Заголовок: Всем привет ! Пытаюс..
Всем привет ! Пытаюсь для отладки добавить в свой проект h_tbrowse.prg Не собирается проект: Error: Unresolved external '_HB_FUN_GETSYSMETRICS' referenced from W:\HB_PROJECT\ Откуда взять эту функцию GETSYSMETRICS ? Раньше собиралось всё нормально.
|
|
|
|
Dima
|
| |
Пост N: 5404
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.12.15 15:21. Заголовок: Andrey пишет: Откуд..
Andrey пишет: цитата: | Откуда взять эту функцию GETSYSMETRICS ? |
| в TSBROWSE.CH он заявлен
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4606
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.12.15 15:35. Заголовок: Dima пишет: в TSBRO..
Dima пишет: Положил этот файл в свой проект. Всё равно пишет, нет такой функции... P.S. Удалил все obj - проект собрался !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4607
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.12.15 15:55. Заголовок: Отлавливаю ошибку дл..
Отлавливаю ошибку для SetArrayTo(). Вот такая ошибка: Error BASE/1122 Неверный аргумент: TRANSFORM Called from TRANSFORM(0) Called from TSBROWSE:DRAWLINE(2925) Called from TSBROWSE:PAINT(8713) Called from TSBROWSE:DISPLAY(2306) Called from _ENDTBROWSE(367) Called from CREATEBROWSEUSE(430) Лезу в исходник и хочу там установить просмотр. Как это сделать, чтобы ручками не считать какую строку ProcName(5) смотреть ? IF UPPER(ProcName( 5 )) == "CREATEBROWSEUSE" MsgDebug(uData, VALTYPE(uData), cPicture) ENDIF uData := If( uData == NIL, "", Transform( uData, cPicture ) )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4608
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.12.15 16:21. Заголовок: Странно, отладка раб..
Странно, отладка работает ОДНУ строку из массива, а потом прога сваливается: Called from TRANSFORM(0) Called from TSBROWSE:DRAWLINE(2928) Called from TSBROWSE:PAINT(8701) Called from TSBROWSE:DISPLAY(2306) Called from _ENDTBROWSE(367) Called from CREATEBROWSEUSE(430) Called from FORM_USEDBF(220) ..... Else IF UPPER(ProcName( 5 )) == "CREATEBROWSEUSE" MsgDebug(uData, VALTYPE(uData), cPicture) ENDIF uData := If( uData == NIL, "", Transform( uData, cPicture ) ) // строка 2928 EndIf Как поймать ошибку ?
|
|
|
Dima
|
| |
Пост N: 5405
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.12.15 16:53. Заголовок: Andrey Сунь массив ..
Andrey Сунь массив в MsgDebug и позырь что в нем живет.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4609
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.12.15 17:01. Заголовок: Dima пишет: Сунь ма..
Dima пишет: цитата: | Сунь массив в MsgDebug и позырь что в нем живет. |
| Позырил... До этого смотрел, не увидел. Один элемент вместо строки - массив.... И как такие ошибки в будущем отлавливать ? Может проверку какую сделать в самом исходнике ? Function SetArrayTo( ControlName, ParentForm, Arr, uFontHF, aHead, aSizes, uFooter, aPicture, aAlign, aName ) Local ix, oBrw ix := GetControlIndex (ControlName,ParentForm) oBrw:= _HMG_aControlIds [ix] oBrw:SetArrayTo(Arr, uFontHF, aHead, aSizes, uFooter, aPicture, aAlign, aName) Return oBrw
|
|
|
Dima
|
| |
Пост N: 5406
Зарегистрирован: 17.05.05
|
|
Отправлено: 14.12.15 17:03. Заголовок: Andrey пишет: И как..
Andrey пишет: цитата: | И как такие ошибки в будущем отлавливать ? |
| Чрезмерно не косячить при написании
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4668
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.01.16 12:18. Заголовок: Привет всем... Делаю..
Привет всем... Делаю новую таблицу на Tsbrowse. Ширину таблицы меняю в зависимости от окна, как Tsb_config. Скрытый текст DEFINE WINDOW Form_0 AT 0,0 WIDTH nDesktopWidth HEIGHT nDesktopHeight ; MINWIDTH 780 MINHEIGHT 500 ; .......... WINDOWTYPE STANDARD TOPMOST ; ........ ON SIZE { || ResizeTable() } ; ON MAXIMIZE { || ResizeTable() } ; ////////////////////////////////////////////////////////////////// FUNCTION ResizeTable() LOCAL cForm := _HMG_ThisFormName LOCAL hWnd := GetFormHandle(cForm) // По методу Move() запускается ReSize() - описание параметров см. ???, // который запускает в конце работы кодовый блок bResized - в нем можно что-то еще подвигать oBrw:Move( oBrw:nLeft ,oBrw:nTop , GetClientWidth(hWnd), ; GetClientHeight(hWnd) - oBrw:nTop, .t.) //oBrw:Display() oBrw:Paint() // Иначе не перерисовываются вертикальные разделители MyToolBarTable(,,.T.) // перепостроить кнопки на форме Return Nil
| При изменения размера окна мышкой, какие то артефакты вылазят: Как исправить ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4669
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.01.16 15:51. Заголовок: Добился такого же эф..
Добился такого же эффекта (расползания подвала таблицы) в примере MiniGUI\SAMPLES\Advanced\Tsb_config Разница небольшая: 1) Окно WINDOWTYPE STANDARD TOPMOST ; При первом запуске "расползание подвала" нет. Если мышкой перейти в ячейки, а потом попробовать изменить размер экрана, то начинается "расползание подвала" : Вот исправленный проект с демонстрацией - https://cloud.mail.ru/public/FBzx/BzqAUUxZz Вопрос остается таким же: как исправить (убрать расползание подвала таблицы ) ?
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|