On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
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:....



Спасибо: 0 
Профиль
Ответов - 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 пишет
 цитата:
т.е. достаточно сменить шапку и остальное не трогать, где то смысл есть в этом.


Имел ввиду, что поля не вошедшие в таблицу отображаются рядом в вертикальной развертке (режим "карточка") и кликами можно переключать с табличного на "карточный" режим

Спасибо: 0 
Профиль
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. ) перестаёт работать ...

Спасибо: 0 
Профиль
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

Надеюсь, что вопросы по очистке массива отпадут

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




Пост N: 1684
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.12.17 13:20. Заголовок: gfilatov2002 пишет П..


gfilatov2002 пишет
 цитата:
По итогу обсуждения добавил такие строки


наверно надо добавить в :DelColumn и удаление элементов из ::aJustify и ::aDefValue

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 1221
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.12.17 13:50. Заголовок: SergKis пишет: надо..


SergKis пишет:

 цитата:
надо добавить в :DelColumn


Благодарю за помощь
Добавил эти массивы и убрал лишние проверки, как предложил ранее Петр...

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




Пост N: 5665
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.12.17 13:55. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Надеюсь, что вопросы по очистке массива отпадут


Точно, не хватало oBrw1:aArray:={} !!!

Это называется - нужно учить матчасть...


Спасибо: 0 
Профиль
ММК
постоянный участник


Пост N: 309
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 26.12.17 14:25. Заголовок: Haz пишет: Так это ..


Haz пишет:

 цитата:
Так это я к тому, если бы я прятал колонки, то сколько мне их нужно было заранее держать в бровсе



Извините , виноват . Мне надо было сразу написать, что это пример на FW. А там это просто опция бровса ( встроенная ), как поиск, фильтр, экспорт в эксель.... ну и много еще что :)) Выложил просто в виде подсказки ( как вариант) , как в будущем можно будет доработать ( или переписать ) бровс
Думаю Сергей прав - удобнее работать с столбцами на уровне шапки.

Спасибо: 0 
Профиль
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()

Что не так делаю ?

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6666
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.12.17 22:28. Заголовок: Andrey пишет: Что н..


Andrey пишет:

 цитата:
Что не так делаю ?


Спишь мало
Проспись и все получится !

Спасибо: 0 
Профиль
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.



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




Пост N: 1686
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.12.17 10:56. Заголовок: Andrey пишет Отключа..


Andrey пишет
 цитата:
Отключаю показ горизонтального скролинга, а он всё равно отображается:


При первом отображении тсб, у него нет HScroll, после переформирования array, он проявляется и не убирается,
потому получается дырка. Т.к. колонок больше экрана, то смысла убирать HScroll нет. Если поставить
oBrw1:lNoVScroll := .F. // TRUE
oBrw1:lNoHScroll := .F. // нет показа горизонтального скролинга
то дырки не будет. В данном случае логично работать с HScroll.



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




Пост N: 1687
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.12.17 12:11. Заголовок: PS oBrw1:oHScroll :=..


PS
oBrw1:oHScroll := Nil
не помогает, HScroll проявляется

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




Пост N: 5669
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.12.17 12:45. Заголовок: Всем привет ! Сделал..


Всем привет !
Сделал менюшку показа адреса через COMBOBOX. Выбор города, улицы, номер дома - отлично показывается.
А список квартир бывает большой, листать юзеру неудобно будет.
Решил переделать через SetArrayTo()
Можно ли убрать показ заголовка таблицы и как ?

Спасибо: 0 
Профиль
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 в пару пикселей, если они цветные , будут полоски.

Спасибо: 0 
Профиль
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
Вот что получается:


Спасибо: 0 
Профиль
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. также словами напиши\расшифруй "шахматная доска"

Получишь ответ, как сделать

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




Пост N: 5679
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.01.18 14:37. Заголовок: SergKis пишет: 2. т..


SergKis пишет:

 цитата:
2. также словами напиши\расшифруй "шахматная доска"


Выбор по ячейки - четная/не четная.
Не знаю как вместо nAt указать ячейку.
Пробовал ставить oBrw1:nCell - не получается.

Спасибо: 0 
Профиль
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 ) } } )


Андрей, а сможешь объяснить выделенное красным в твоем коде ?
Возможно когда сможешь ,то и шахматка получится

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




Пост N: 5680
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.01.18 17:42. Заголовок: Haz пишет: Андрей, ..


Haz пишет:

 цитата:
Андрей, а сможешь объяснить выделенное красным в твоем коде ?


Это делалось для того, чтобы компиляция проходила. Без этого ехе-ник не собирается.
Я использую ключи при компиляции: -prgflag=-w2 -es2
Сделал ранее так и забыл... Понял в какую сторону нужно глядеть. Спасибо !



Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1155
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 07.01.18 17:52. Заголовок: Andrey пишет: Это д..


Andrey пишет:

 цитата:
Это делалось для того, чтобы компиляция проходила.


Тогда тебе повезло, что бровс не реагирует на присвоение значения в ::nAt, кстати ты не так давно огорчался по этому поводу


Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 35
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет