On-line: Andrey, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник


Пост 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:....



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 148 , стр: 1 2 3 4 5 6 7 8 All [только новые]


администратор




Пост N: 4510
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.02.15 11:51. Заголовок: Andrey Ну видать в ..


Andrey
Ну видать в Минигуи такие шаблоны не реализованы

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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) уже раз сто в ветке обсуждался


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3961
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.02.15 12:41. Заголовок: Haz пишет: Задача р..


Haz пишет:

 цитата:
Задача решается как два пальца ...


Это для тебя как два пальца... А я еще не въеду в это (часть понял, часть не понял)...
Из-за этого и маленький пример сделал, чтобы понять можно было бы.
Если есть возможность, то большая просьба показать на этом примере как это делается.
Заранее БОЛЬШОЕ СПАСИБО !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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.}


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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-столбец.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3963
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.02.15 15:28. Заголовок: Труба ! Не работает...


Труба ! Не работает.... Опять не работает...
Исправленный файл программы 2DBF.7z здесь - https://cloud.mail.ru/public/5d315f972a72/MiniGui-Error


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 463
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 18.02.15 16:45. Заголовок: Andrey пишет: А мож..


Andrey пишет:

 цитата:
А можно скрыть показ в таблице aColumns[4] ?
Т.е. типа виртуальный 4-столбец.



Что имеешь ввиду ? Есть же метод obrw:HideColumns()

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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 и присваиваю ему имя поля потом индекс колонки получаю косвенно через это имя . Криво ... зато таких сюрпризов нет

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3964
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.02.15 18:57. Заголовок: Haz пишет: Работает..


Haz пишет:

 цитата:
Работает


СПАСИБО !
1) Понял, где пролетел.
2) Я в новой базе подправил (убрал эту функцию и поставил шаблон).

Haz пишет:

 цитата:
Вообще там этот селектор и обращение к массиву aColumns по номеру не очень дружат
У себя определяю в классе TSCOLUMN новое поле данных DATA cName и присваиваю ему имя поля потом индекс колонки получаю косвенно через это имя . Криво ... зато таких сюрпризов нет


А код для этого примера можешь привести ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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 писал по памяти , не проверял но смысл понятен




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3965
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.02.15 22:34. Заголовок: Haz пишет: PS писал..


Haz пишет:

 цитата:
PS писал по памяти , не проверял но смысл понятен


Спасибо !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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() }
Только как в этой функции задавать форматы на обработку - не представляю....
Вообще то задачка становиться не совсем простой....


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 466
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 19.02.15 09:48. Заголовок: Andrey пишет: Вообщ..


Andrey пишет:

 цитата:
Вообще то задачка становиться не совсем простой....



задачка была и осталась примитивной :
1 перед редактированием присвоить переменной новое значение
2 после редактирования восстановить старое
3 при этом эти значения должны быть в ФОРМАТЕ ПРАВИЛЬНОГО ШАБЛОНА PICTURE

ВСЕ!
ошибка в программе связана с невыполнением п.3


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3967
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.02.15 10:07. Заголовок: Haz пишет: ошибка в..


Haz пишет:

 цитата:
ошибка в программе связана с невыполнением п.3



Понял. Спасибо !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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 !


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3971
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.02.15 14:55. Заголовок: А как сделать в этом..


А как сделать в этом примере, чтобы формат сразу отображался ?


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3972
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.02.15 14:56. Заголовок: А, просто оказываетс..


А, просто оказывается.
oBrw_2:aColumns[3]:cPicture := { || Alltrim( (Alias())->PICTURE ) }


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 3973
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.02.15 15:49. Заголовок: Andrey пишет: А, пр..


Andrey пишет:

 цитата:
А, просто оказывается.


Не фига, не просто. После первой правки - форматы ВСЕ слетают...
Как быть ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост 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 при показе блоки глотает на ура

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 723
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.02.15 17:45. Заголовок: Haz пишет: TGetBox:..


Haz пишет:

 цитата:
TGetBox:New не понимает если пикча задана блоком


Благодарю за наводку
Поправил для следующей сборки...

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 148 , стр: 1 2 3 4 5 6 7 8 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 8
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет