Автор | Сообщение |
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
[только новые]
|
|
SergKis
|
| постоянный участник
|
Пост N: 1683
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.12.17 20:42. Заголовок: MMK пишет Правый кли..
MMK пишет цитата: | Правый клик по шапке и в меню. Убрал птичку -нет столбца. Поставил птичку - есть столбец ... |
| избегаю такие режимы давать пользователю, предпочитаю дать ему возможность поставить галочки в вертикальном списке шапок и отметить нужные шапки, расположив в нужной последовательности, при необходимости сохранить как отчет с названиями и ... В дальнейшем работа это выбор отчета из списка. SergKis пишет цитата: | т.е. достаточно сменить шапку и остальное не трогать, где то смысл есть в этом. |
| Имел ввиду, что поля не вошедшие в таблицу отображаются рядом в вертикальной развертке (режим "карточка") и кликами можно переключать с табличного на "карточный" режим
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5664
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.12.17 00:18. Заголовок: Хрень получается при..
Хрень получается при очистке таблицы. Один раз чистит от записей, второй нет. Или я опять что то не то делаю. Команда oBrw1:DeleteRow( .T. ) делает полную очистку таблицы для SetArrayTo() ? Ещё что-то нужно делать для очистки таблицы ? Вывожу таблицу (функция допустим TsbView(aDim,.F.) ) первый раз с условиями (допустим код колонки 7 < 11) . На чекбокс делаю показ этой же самой функции в зависимости от чекбокса TsbView(aDim,lFilter). Если чекбокс равет .T. то показываю записи - код колонки 7 == 11. При повторном показе записей в таблице остаются записи от первого показа + новые. Если ещё раз кликнуть чекбоксом, записи в таблице прибавляются... Почему ? Я же делаю для SetArrayTo() : oBrw1:DeleteRow( .T. ) // Delete All oBrw1:Reset() и только потом делаю добавление построчно: oBrw1:AddItem( aRows[1] ) ---- P.S. И первый раз не чистит. Кажись если колонки удалили - оператор oBrw1:DeleteRow( .T. ) перестаёт работать ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1220
Зарегистрирован: 11.02.10
|
|
Отправлено: 26.12.17 12:55. Заголовок: Andrey пишет: что-т..
Andrey пишет: цитата: | что-то нужно делать для очистки таблицы ? |
| Посмотри рабочий пример ниже #include "minigui.ch" #include "tsbrowse.ch" Procedure Main () Public oBrw1 Public aDatos_origen DEFINE WINDOW Form1 ; AT 0,0 ; WIDTH 640 ; HEIGHT 480 ; TITLE "TsBrowse Array Test" ; MAIN ; FONT 'Tahoma' SIZE 9; ON INIT Sample1() END WINDOW ACTIVATE WINDOW Form1 RETURN *-------------------------------------------------------------- Function Sample1() Local bColor := { || If( Val(oBrw1:aArray[oBrw1:nAt,4]) < 200, CLR_RED, CLR_WHITE ) } aDatos_origen := {} AADD( aDatos_origen, {"Ena ", "Art01", "Mod01", "200"} ) AADD( aDatos_origen, {"Dyo ", "Art02", "Mod01", "200"} ) AADD( aDatos_origen, {"Tria ", "Art03", "Mod01", "200"} ) AADD( aDatos_origen, {"Tessera ", "Art04", "Mod01", "200"} ) AADD( aDatos_origen, {"Pente ", "Art05", "Mod01", "200"} ) AADD( aDatos_origen, {"Exi ", "Art06", "Mod01", "200"} ) AADD( aDatos_origen, {"Epta ", "Art07", "Mod01", "200"} ) AADD( aDatos_origen, {"Okto ", "Art08", "Mod01", "200"} ) AADD( aDatos_origen, {"Ennea ", "Art09", "Mod01", "100"} ) AADD( aDatos_origen, {"Deka ", "Art10", "Mod02", "200"} ) AADD( aDatos_origen, {"Enteka ", "Art11", "Mod02", "200"} ) AADD( aDatos_origen, {"Dodeka ", "Art12", "Mod02", "200"} ) AADD( aDatos_origen, {"Dekatria ", "Art13", "Mod02", "200"} ) AADD( aDatos_origen, {"Dekatessera ", "Art14", "Mod02", "200"} ) AADD( aDatos_origen, {"Dekapente ", "Art15", "Mod02", "200"} ) AADD( aDatos_origen, {"Dekaexi ", "Art16", "Mod02", "200"} ) AADD( aDatos_origen, {"Dekaepta ", "Art17", "Mod02", "200"} ) AADD( aDatos_origen, {"Dekaokto ", "Art18", "Mod02", "200"} ) DEFINE TBROWSE oBrw1 ; AT 60,10 ; OF Form1 ; WIDTH 330 ; HEIGHT 340 ; FONT "Verdana" ; SIZE 9 ; GRID oBrw1:SetArray( aDatos_origen ) ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 1; TITLE "Rubro" SIZE 120 ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 2; TITLE "Articulo" SIZE 80 ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 3; TITLE "Marca" SIZE 80 ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 4; TITLE "M" SIZE 30 ; COLORS CLR_BLACK, bColor oBrw1:lNoVScroll := .t. End TBROWSE oBrw1:Refresh(.T.) @ 110,355 BUTTON Button_1 OF Form1; CAPTION "Change"; ACTION Change() ; WIDTH 80; HEIGHT 28 ; FONT "Arial" SIZE 9 RETURN Nil Function Change() Local aArray := {}, n AADD( aArray, {"Ena ", "Art01", "Mod01", "200"} ) AADD( aArray, {"Dyo ", "Art02", "Mod01", "200"} ) AADD( aArray, {"Tria ", "Art03", "Mod01", "200"} ) AADD( aArray, {"Tessera ", "Art04", "Mod01", "200"} ) AADD( aArray, {"Pente ", "Art05", "Mod01", "200"} ) AADD( aArray, {"Exi ", "Art06", "Mod01", "200"} ) AADD( aArray, {"Epta ", "Art07", "Mod01", "200"} ) AADD( aArray, {"Okto ", "Art08", "Mod01", "200"} ) AADD( aArray, {"Ennea ", "Art09", "Mod01", "100"} ) AADD( aArray, {"Deka ", "Art10", "Mod02", "200"} ) oBrw1:aArray:={} for n:=1 to len(aArray) ADD ITEM aArray[n] TO oBrw1 OF Form1 next oBrw1:Refresh(.T.) Return Nil Надеюсь, что вопросы по очистке массива отпадут
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1684
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.12.17 13:20. Заголовок: gfilatov2002 пишет П..
gfilatov2002 пишет цитата: | По итогу обсуждения добавил такие строки |
| наверно надо добавить в :DelColumn и удаление элементов из ::aJustify и ::aDefValue
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1221
Зарегистрирован: 11.02.10
|
|
Отправлено: 26.12.17 13:50. Заголовок: SergKis пишет: надо..
SergKis пишет: цитата: | надо добавить в :DelColumn |
| Благодарю за помощь Добавил эти массивы и убрал лишние проверки, как предложил ранее Петр...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5665
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.12.17 13:55. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Надеюсь, что вопросы по очистке массива отпадут |
| Точно, не хватало oBrw1:aArray:={} !!! Это называется - нужно учить матчасть...
|
|
|
ММК
|
| постоянный участник
|
Пост N: 309
Зарегистрирован: 29.05.10
|
|
Отправлено: 26.12.17 14:25. Заголовок: Haz пишет: Так это ..
Haz пишет: цитата: | Так это я к тому, если бы я прятал колонки, то сколько мне их нужно было заранее держать в бровсе |
| Извините , виноват . Мне надо было сразу написать, что это пример на FW. А там это просто опция бровса ( встроенная ), как поиск, фильтр, экспорт в эксель.... ну и много еще что :)) Выложил просто в виде подсказки ( как вариант) , как в будущем можно будет доработать ( или переписать ) бровс Думаю Сергей прав - удобнее работать с столбцами на уровне шапки.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5667
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.12.17 21:16. Заголовок: Осталась мелочёвка п..
Осталась мелочёвка по SetArrayTo(): 1) Пропадает нижняя стрелка в строке скролинга: 2) Отключаю показ горизонтального скролинга, а он всё равно отображается: 3) Не убирается дырка внизу таблицы (один раз срабатывает, второй нет). Может быть из за показа горизонтального скролинга ? 4) В конце функции делаю фокус на таблицу. Не срабатывает ! Вот код в конце функции, которая выводит SetArrayTo(): oBrw1:HideColumns( {6,7,8} ,.t.) // скрыть колонки oBrw1:Reset() oBrw1:SetNoHoles(2) oBrw1:lNoHScroll := .T. // нет показа горизонтального скролинга oBrw1:Display() oBrw1:Refresh(.T.) // перечитывает данные в таблице oBrw1:GoPos(1,4) // передвинуть МАРКЕР на Х строку и Х колонку ItogoNN(oBrw1) oBrw1:SetFocus() Что не так делаю ?
|
|
|
Dima
|
| |
Пост N: 6666
Зарегистрирован: 17.05.05
|
|
Отправлено: 27.12.17 22:28. Заголовок: Andrey пишет: Что н..
Andrey пишет: Спишь мало Проспись и все получится !
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1685
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.12.17 00:36. Заголовок: Dima пишет Проспись ..
Dima пишет цитата: | Проспись и все получится ! |
| Возможно ты уже поборол такую ситуевину ? У меня получилось так DEFINE TBROWSE &cBrw ; AT 1 + iif( IsVistaOrLater(), GetBorderWidth()/2, 0 ), ; 1 + iif( IsVistaOrLater(), GetBorderHeight()/2, 0 ) ; OF &cForm ; WIDTH ThisWindow.WIDTH - 2 * GetBorderWidth() ; HEIGHT ThisWindow.HEIGHT - GetTitleHeight() - ; This.StatusBar.Height - 2 * GetBorderHeight() ; // ENUMERATOR ; FONT cFontName SIZE nFontSize ; GRID // EDIT oBrw := _HMG_aControlIds [ GetControlIndex(cBrw, cForm) ] oBrw:Hide() aFontHF := aFont[2] // bold Header, Footer oBrw := SetArrayTo( cBrw, cForm, aArray, aFontHF, aHead, aSize, aFoot, aPict, aAlign, aName ) WITH OBJECT oBrw :aColumns[1]:nAlign := DT_CENTER :aColumns[2]:nAlign := DT_CENTER :aColumns[3]:nWidth += 20 // колонку даты расширили :aColumns[4]:nAlign := DT_RIGHT AEval(:aColumns, {|oc| oc:lEmptyValToChar := .T. }) :lNoHScroll := .T. :nWheelLines := 1 :nClrLine := COLOR_GRID :nHeightCell += 5 :nHeightHead += 5 IF ! Empty( aFoot ) :nHeightFoot += 5 ENDIF IF :lEnum :nHeightSpecHd := :nHeightCell ENDIF END WITH MyTsbColor( oBrw ) END TBROWSE oBrw:SetNoHoles() oBrw:Show() oBrw:SetFocus() _PushKey(VK_PRIOR) или отказаться от :lNoHScroll := .T.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1686
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.12.17 10:56. Заголовок: Andrey пишет Отключа..
Andrey пишет цитата: | Отключаю показ горизонтального скролинга, а он всё равно отображается: |
| При первом отображении тсб, у него нет HScroll, после переформирования array, он проявляется и не убирается, потому получается дырка. Т.к. колонок больше экрана, то смысла убирать HScroll нет. Если поставить oBrw1:lNoVScroll := .F. // TRUE oBrw1:lNoHScroll := .F. // нет показа горизонтального скролинга то дырки не будет. В данном случае логично работать с HScroll.
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1687
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.12.17 12:11. Заголовок: PS oBrw1:oHScroll :=..
PS oBrw1:oHScroll := Nil не помогает, HScroll проявляется
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5669
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.12.17 12:45. Заголовок: Всем привет ! Сделал..
Всем привет ! Сделал менюшку показа адреса через COMBOBOX. Выбор города, улицы, номер дома - отлично показывается. А список квартир бывает большой, листать юзеру неудобно будет. Решил переделать через SetArrayTo() Можно ли убрать показ заголовка таблицы и как ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1688
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.12.17 16:53. Заголовок: Andrey пишет Можно л..
Andrey пишет цитата: | Можно ли убрать показ заголовка таблицы и как ? |
| 1. DATA lDrawHeaders AS LOGICAL INIT .T. // condition for headers drawing DATA lDrawFooters // condition for footers drawing 2. сделать высоту header, footer в пару пикселей, если они цветные , будут полоски.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5678
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.01.18 23:21. Заголовок: Сделал менюшку показ..
Сделал менюшку показа списка квартир через SetArrayTo(). Вроде красивенько получилось. А как можно закрасить Tsbrowse в "шашечку" ? Ну чтобы была как шахматная доска. Это не для показа юзеру, просто для себя. У себя раскраску делаю так: // ---- cтавим по всем колонкам ----( oCol:nClrBack = oBrw:SetColor( {2} ...) ---- AEval(oBrw1:aColumns, {|oCol| oCol:nClrBack := { |a,b,o| a:=b, MyColorTsb( o:nAt ) } } ) ........... //////////////////////////////////////////////////////////// STATIC FUNCTION MyColorTsb(nAt) LOCAL nColor IF nAt % 2 == 0 nColor := CLR_HGRAY ELSE nColor := CLR_WHITE ENDIF RETURN nColor Вот что получается:
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1693
Зарегистрирован: 17.02.12
|
|
Отправлено: 07.01.18 11:50. Заголовок: Andrey пишет А как м..
Andrey пишет цитата: | А как можно закрасить Tsbrowse в "шашечку" ? Ну чтобы была как шахматная доска |
| 1. переведи на русский (словами) из функции IF nAt % 2 == 0 nColor := CLR_HGRAY ELSE nColor := CLR_WHITE ENDIF 2. также словами напиши\расшифруй "шахматная доска" Получишь ответ, как сделать
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5679
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.01.18 14:37. Заголовок: SergKis пишет: 2. т..
SergKis пишет: цитата: | 2. также словами напиши\расшифруй "шахматная доска" |
| Выбор по ячейки - четная/не четная. Не знаю как вместо nAt указать ячейку. Пробовал ставить oBrw1:nCell - не получается.
|
|
|
Haz
|
| |
Пост N: 1154
Зарегистрирован: 20.02.11
|
|
Отправлено: 07.01.18 16:41. Заголовок: Andrey пишет: У себ..
Andrey пишет: цитата: | У себя раскраску делаю так: // ---- cтавим по всем колонкам ----( oCol:nClrBack = oBrw:SetColor( {2} ...) ---- AEval(oBrw1:aColumns, {|oCol| oCol:nClrBack := { |a,b,o| a:=b, MyColorTsb( o:nAt ) } } ) |
| Андрей, а сможешь объяснить выделенное красным в твоем коде ? Возможно когда сможешь ,то и шахматка получится
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5680
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.01.18 17:42. Заголовок: Haz пишет: Андрей, ..
Haz пишет: цитата: | Андрей, а сможешь объяснить выделенное красным в твоем коде ? |
| Это делалось для того, чтобы компиляция проходила. Без этого ехе-ник не собирается. Я использую ключи при компиляции: -prgflag=-w2 -es2 Сделал ранее так и забыл... Понял в какую сторону нужно глядеть. Спасибо !
|
|
|
Haz
|
| |
Пост N: 1155
Зарегистрирован: 20.02.11
|
|
Отправлено: 07.01.18 17:52. Заголовок: Andrey пишет: Это д..
Andrey пишет: цитата: | Это делалось для того, чтобы компиляция проходила. |
| Тогда тебе повезло, что бровс не реагирует на присвоение значения в ::nAt, кстати ты не так давно огорчался по этому поводу
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|