Автор | Сообщение |
|
| постоянный участник
|
Пост 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:....
|
|
|
Ответов - 148
, стр:
1
2
3
4
5
6
7
8
All
[только новые]
|
|
|
| |
Пост N: 4510
Зарегистрирован: 17.05.05
|
|
Отправлено: 18.02.15 11:51. Заголовок: Andrey Ну видать в ..
Andrey Ну видать в Минигуи такие шаблоны не реализованы
|
|
|
|
| |
Пост N: 461
Зарегистрирован: 20.02.11
|
|
Отправлено: 18.02.15 12:26. Заголовок: Dima пишет: Ну вида..
Dima пишет: цитата: | Ну видать в Минигуи такие шаблоны не реализованы |
| Дима , вопрос про TsBrowse и там ( и в MiniGui ) все реализовано более того там шаблоны можно задавать не только символьной строкой , но и блоком кода ( который оценивается во время выполнения и возвращает нужную строку) Andrey Задача решается как два пальца ... ... Если нужен шаблон на просмотр и редактирование то oBrw:aColumns[x]:cPicture := "какой то шаблон" ( или := { || какой-то блок который вернет нужный шаблон } ) Если нужен особый шаблон только редактирование то перед тем как это редактирование начнется (создастся Get и получит фокус ввода ) в Классе предусмотрен блок DATA bPrevEdit // Action to be performed before editing cell. в котором можно переопределять шаблон на нужный ( не забывая его потом восстанавливать на общий для показа в блоке bPostEdit или bEditEnd ). Короче выше тут описал алгоритм , и он займет всего две строки кода :bPrevEdit := {|| :cPicture := ....} :bPostEdit := {|| :cPicture := ....} Второй вопрос (тоже bPrevEdit) уже раз сто в ветке обсуждался
|
|
|
|
| постоянный участник
|
Пост N: 3961
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.02.15 12:41. Заголовок: Haz пишет: Задача р..
Haz пишет: цитата: | Задача решается как два пальца ... |
| Это для тебя как два пальца... А я еще не въеду в это (часть понял, часть не понял)... Из-за этого и маленький пример сделал, чтобы понять можно было бы. Если есть возможность, то большая просьба показать на этом примере как это делается. Заранее БОЛЬШОЕ СПАСИБО !
|
|
|
|
| |
Пост N: 462
Зарегистрирован: 20.02.11
|
|
Отправлено: 18.02.15 13:31. Заголовок: Andrey пишет: Если ..
Andrey пишет: цитата: | Если есть возможность, то большая просьба показать на этом примере как это делается. |
| подмена шаблона для редактирования ( примерно так ) oBrw_2:aColumns[3]:cPicture := Replicate("X", 80) oBrw_2:aColumns[3]:bPrevEdit := { || oBrw_2:aColumns[3]:cPicture := Alltrim((Alias())->PICTURE ), .T.} oBrw_2:aColumns[3]:bPostEdit := { || oBrw_2:aColumns[3]:cPicture := Replicate("X", 80))} и что тут такого невероятного Есть правда одно НО .. нужно определиться что храним в поле PICTURE - или шаблон в виде строки ? или вызываемую функцию соответственно будет или oBrw_2:aColumns[3]:bPrevEdit := { || oBrw_2:aColumns[3]:cPicture := Alltrim((Alias())->PICTURE ), .T.} или oBrw_2:aColumns[3]:bPrevEdit := { || oBrw_2:aColumns[3]:cPicture := Alltrim( Eval((Alias())->PICTURE )), .T.}
|
|
|
|
| постоянный участник
|
Пост N: 3962
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.02.15 15:08. Заголовок: Haz пишет: Есть пра..
Haz пишет: Вот и я о том же. Можно выкрутиться тогда с помощью функции без параметров - типа: MyFunc() и анализировать тогда строку на "()": oBrw_2:aColumns[3]:bPrevEdit := { || oBrw_2:aColumns[3]:cPicture := IIF(AT("()",(Alias())->PICTURE)>0, ; Alltrim(Eval((Alias())->PICTURE )),; Alltrim((Alias())->PICTURE ), .T.} Haz пишет: цитата: | и что тут такого невероятного |
| Для тебя просто, а я пока туплю, опыта нет... Спасибо БОЛЬШОЕ ! А можно скрыть показ в таблице aColumns[4] ? Т.е. типа виртуальный 4-столбец.
|
|
|
|
| постоянный участник
|
Пост N: 3963
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.02.15 15:28. Заголовок: Труба ! Не работает...
|
|
|
|
| |
Пост N: 463
Зарегистрирован: 20.02.11
|
|
Отправлено: 18.02.15 16:45. Заголовок: Andrey пишет: А мож..
Andrey пишет: цитата: | А можно скрыть показ в таблице aColumns[4] ? Т.е. типа виртуальный 4-столбец. |
| Что имеешь ввиду ? Есть же метод obrw:HideColumns()
|
|
|
|
| |
Пост N: 464
Зарегистрирован: 20.02.11
|
|
Отправлено: 18.02.15 16:55. Заголовок: Haz пишет: Труба ! ..
Haz пишет: цитата: | Труба ! Не работает.... Опять не работает... |
| Работает oBrw_2:aColumns[3]:cPicture := Replicate("X", 80) oBrw_2:aColumns[3]:bPrevEdit := { || oBrw_2:aColumns[ 4]:cPicture := Alltrim((Alias())->PICTURE ), .T.} oBrw_2:aColumns[3]:bPostEdit := { || oBrw_2:aColumns[ 4]:cPicture := Replicate("X", 80))} 1) в момент инициализации бровса это была колонка 3 , после появилась колонка SELECTOR и твое поле стало колонкой 4 2) Выше же писал что Replicate("X", 30) это НЕ шаблон. а ФУНКЦИЯ которую надо еще и вызвать. Правильный шаблон "XXXXXXXXXXXXXXXXXXXXXXXXXXXX" ЗЫ Вообще там этот селектор и обращение к массиву aColumns по номеру не очень дружат У себя определяю в классе TSCOLUMN новое поле данных DATA cName и присваиваю ему имя поля потом индекс колонки получаю косвенно через это имя . Криво ... зато таких сюрпризов нет
|
|
|
|
| постоянный участник
|
Пост N: 3964
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.02.15 18:57. Заголовок: Haz пишет: Работает..
Haz пишет: СПАСИБО ! 1) Понял, где пролетел. 2) Я в новой базе подправил (убрал эту функцию и поставил шаблон). Haz пишет: цитата: | Вообще там этот селектор и обращение к массиву aColumns по номеру не очень дружат У себя определяю в классе TSCOLUMN новое поле данных DATA cName и присваиваю ему имя поля потом индекс колонки получаю косвенно через это имя . Криво ... зато таких сюрпризов нет |
| А код для этого примера можешь привести ?
|
|
|
|
| |
Пост N: 465
Зарегистрирован: 20.02.11
|
|
Отправлено: 18.02.15 20:35. Заголовок: Andrey пишет: А код..
Andrey пишет: цитата: | А код для этого примера можешь привести ? |
| сначала FOR n := 1 TO Len(oBrw:aColumns) oCol := oBrw:aColumns[n] IF ! __objHasData(oCol, 'cName') __objAddData (oCol, 'cName' ) oCol:cName:= (oBrw:cAlias)->(Field(n)) END END потом вместо oBrw:aColumns[n] примерно так ... oBrw:aColumns[ aScan( oBrw:aColumns, {|e| е:cName == Field(n)} )) ]:cPicture := "XXX" PS писал по памяти , не проверял но смысл понятен
|
|
|
|
| постоянный участник
|
Пост N: 3965
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.02.15 22:34. Заголовок: Haz пишет: PS писал..
Haz пишет: цитата: | PS писал по памяти , не проверял но смысл понятен |
| Спасибо !
|
|
|
|
|
| постоянный участник
|
Пост N: 3966
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.02.15 23:34. Заголовок: Опять :sm183: Вро..
Haz пишет: цитата: | Задача решается как два пальца ... |
| Опять Вроде сделал, работает... Только после вызова внешней функции - вылет: Error BASE/1122 Неверный аргумент: TRANSFORM Called from TRANSFORM(0) Called from TSBROWSE:DRAWLINE(2862) Called from TSBROWSE:GOUP(6049) Called from TSBROWSE:KEYDOWN(6377) Called from TSBROWSE:HANDLEEVENT(7084) Called from EVENTS(75) Called from _DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1374) Called from HANDBOOKS(80) Called from (b)MAIN(43) С такой ошибкой точно не справлюсь ! Исправленный исходник 2DBF-2.7z здесь - https://cloud.mail.ru/public/5d315f972a72/MiniGui-Error Может вообще обработку сделать в отдельной функции ? Типа - oBrw_2:aColumns[3]:bPrevEdit := { || MyEditCol3() } Только как в этой функции задавать форматы на обработку - не представляю.... Вообще то задачка становиться не совсем простой....
|
|
|
|
| |
Пост N: 466
Зарегистрирован: 20.02.11
|
|
Отправлено: 19.02.15 09:48. Заголовок: Andrey пишет: Вообщ..
Andrey пишет: цитата: | Вообще то задачка становиться не совсем простой.... |
| задачка была и осталась примитивной : 1 перед редактированием присвоить переменной новое значение 2 после редактирования восстановить старое 3 при этом эти значения должны быть в ФОРМАТЕ ПРАВИЛЬНОГО ШАБЛОНА PICTURE ВСЕ! ошибка в программе связана с невыполнением п.3
|
|
|
|
| постоянный участник
|
Пост N: 3967
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.02.15 10:07. Заголовок: Haz пишет: ошибка в..
Haz пишет: цитата: | ошибка в программе связана с невыполнением п.3 |
| Понял. Спасибо !
|
|
|
|
| постоянный участник
|
Пост N: 3968
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.02.15 10:27. Заголовок: Сделал так - Работае..
Сделал так - Работает ! oBrw_2:aColumns[3]:cPicture := Replicate("X", 180) oBrw_2:aColumns[3]:bPrevEdit := { || MyEditCol3() } oBrw_2:aColumns[3]:bPostEdit := { || oBrw_2:aColumns[4]:cPicture := Replicate("X", 180) } .......... //////////////////////////////////////////////////////////// FUNCTION MyEditCol3() LOCAL lRet := .T. , cPicture IF (Alias())->KRUN == 1 EVAL( hb_macroBlock( Alltrim( (Alias())->PICTURE ) ) ) cPicture := Replicate("X", 180) lRet := .F. ELSE cPicture := Alltrim( (Alias())->PICTURE ) ENDIF oBrw_2:aColumns[4]:cPicture := cPicture RETURN lRet Спасибо БОЛЬШОЕ Haz !
|
|
|
|
| постоянный участник
|
Пост N: 3971
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.02.15 14:55. Заголовок: А как сделать в этом..
А как сделать в этом примере, чтобы формат сразу отображался ?
|
|
|
|
| постоянный участник
|
Пост N: 3972
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.02.15 14:56. Заголовок: А, просто оказываетс..
А, просто оказывается. oBrw_2:aColumns[3]:cPicture := { || Alltrim( (Alias())->PICTURE ) }
|
|
|
|
| постоянный участник
|
Пост N: 3973
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.02.15 15:49. Заголовок: Andrey пишет: А, пр..
Andrey пишет: Не фига, не просто. После первой правки - форматы ВСЕ слетают... Как быть ?
|
|
|
|
| |
Пост N: 467
Зарегистрирован: 20.02.11
|
|
Отправлено: 19.02.15 16:56. Заголовок: Andrey пишет: Как б..
Andrey пишет: Писать Григорию чтоб в TGetBox METHOD New вставил код if ValType( cPict ) == "B" cPict := Eval( cPict ) end ну или самому ручками т.к. TGetBox:New не понимает если пикча задана блоком, в то время как TsBrows при показе блоки глотает на ура
|
|
|
|
| moderator
|
Пост N: 723
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.02.15 17:45. Заголовок: Haz пишет: TGetBox:..
Haz пишет: цитата: | TGetBox:New не понимает если пикча задана блоком |
| Благодарю за наводку Поправил для следующей сборки...
|
|
|
Ответов - 148
, стр:
1
2
3
4
5
6
7
8
All
[только новые]
|
|