Автор | Сообщение |
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: 2478
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.04.19 13:24. Заголовок: Haz пишет Может обра..
Haz пишет цитата: | Может обработку bEditLog поднять перед этой подготовкой? |
| По мне, не стоит. Это в If ... else ... min 2 раза вставлять. Не пробовал, но если :nEditMove := 0, то :nCell и nCol должны быть равными. Достаточно, по мне, сохранить, установить и восстановить :nCell, как показал выше
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2479
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.04.19 13:36. Заголовок: PS Но если :nEditMod..
PS Но если :nEditMode будет с перескоком на другую строку тсб, то RecNo(), (:cAlias)->ID, ... будут неверными. И поэтому, Игорь, твое предложение будет, наверно, правильнее.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2480
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.04.19 13:56. Заголовок: Haz пишет Может обра..
Haz пишет цитата: | Может обработку bEditLog поднять перед этой подготовкой? |
| Поднял METHOD PostEdit( uTemp, nCol, bValid ) CLASS TSBrowse ... ( cAlias )->( DbSkip( 0 ) ) // refresh relations just in case that a relation field changes xNewEditValue := ::bDataEval( ::aColumns[ nCol ], , nCol ) //Igor Nazarov If hb_isBlock( ::bEditLog ) .and. ::aColumns[ nCol ]:xOldEditValue != xNewEditValue Eval( ::bEditLog, ::aColumns[ nCol ]:xOldEditValue, xNewEditValue, Self ) EndIf ::SetFocus() If nLastKey == VK_UP .and. ::lPostEditGo ... If lAppend .and. ::bChange != Nil Eval( ::bChange, Self, ::oWnd:nLastKey ) EndIf xNewEditValue := ::bDataEval( ::aColumns[ nCol ], , nCol ) //Igor Nazarov If hb_isBlock( ::bEditLog ) .and. ::aColumns[ nCol ]:xOldEditValue != xNewEditValue Eval( ::bEditLog, ::aColumns[ nCol ]:xOldEditValue, xNewEditValue, Self ) EndIf ::SetFocus() If nLastKey == VK_UP .and. ::lPostEditGo ... // xNewEditValue := ::bDataEval( ::aColumns[ nCol ], , nCol ) //Igor Nazarov // If hb_isBlock( ::bEditLog ) .and. ::aColumns[ nCol ]:xOldEditValue != xNewEditValue // Eval( ::bEditLog, ::aColumns[ nCol ]:xOldEditValue, xNewEditValue, Self ) // EndIf Return Nil ... Пример отработал нормально
|
|
|
Haz
|
| |
Пост N: 1498
Зарегистрирован: 20.02.11
|
|
Отправлено: 28.04.19 14:09. Заголовок: SergKis пишет: Прим..
SergKis пишет: цитата: | Пример отработал нормально |
| Сергей, спасибо за помощь.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6276
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.04.19 14:26. Заголовок: Наверное всё таки жу..
Наверное всё таки журнал правки лучше держать в виде базы ? А то за несколько лет текстовый лог разрастётся непомерно и поиск в нем будет идти долго.
|
|
|
Vlad04
|
| постоянный участник
|
Пост N: 828
Зарегистрирован: 13.10.05
|
|
Отправлено: 28.04.19 15:50. Заголовок: А то за несколько ле..
цитата: | А то за несколько лет текстовый лог разрастётся |
| Веди в разрезе года. Новый год, новый файл
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6325
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.07.19 18:22. Заголовок: Искал, искал и не на..
Искал, искал и не нашёл. Как убрать в таблице в колонках дата пустые даты - ". ." ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2623
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.07.19 20:05. Заголовок: Andrey пишет Как убр..
Andrey пишет цитата: | Как убрать в таблице в колонках дата пустые даты - ". ." ? |
| oCol:lEmptyValToChar := .T. нули тоже убирает
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6326
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.07.19 20:35. Заголовок: SergKis пишет: oCol..
SergKis пишет: цитата: | oCol:lEmptyValToChar := .T. нули тоже убирает |
| Не совсем понял... Это по колонкам нужно пробежаться ? А сразу на всю таблицу нет команды ? Как например oBrw:lPickerMode := .F. P.S. Да проверил, нужно самому пробежаться по колонкам. For nI := 1 To :nColCount() oCol := :aColumns[ nI ] // центровка подвала таблицы oCol:nFAlign := DT_CENTER If oCol:cName == 'Name_1' oCol:nAlign := DT_CENTER // центровка колонки 'Name_1' EndIf // фонты для строк таблицы oCol:hFont := {|nr,nc,ob| TsbFont(nr, nc, ob)} // убрать пустую дату и 0 в колонках oCol:lEmptyValToChar := .T. Next СПАСИБО БОЛЬШОЕ !
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2624
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.07.19 20:44. Заголовок: Andrey пишет Это по ..
Andrey пишет цитата: | Это по колонкам нужно пробежаться ? |
| Да. цитата: | А сразу на всю таблицу нет команды ? |
| AEval(oBrw:aColumns, {|oc| oc:lEmptyValToChar := .T. }) У меня в tscolumns.prg стоит DATA lEmptyValToChar AS LOGICAL INIT .T. // .F. True if show of empty string for empty values of D,N,T,L types
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6340
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.07.19 10:06. Заголовок: Очередная непонятка ..
Очередная непонятка с SetArrayTo() Создаю массив для него, создается 9 элементов. Когда считываю его размер oBrw:nLen, пишет что 8. Как такое может быть ? Что неправильно делаю ? Вот код: Скрытый текст
? "-----------------", cBrw , cForm ?v aArray aMassiv := aArray // переопределяем массив на сокращённый ? "LEN(aMassiv)=",LEN(aMassiv) oBrw:DeleteRow( .T. ) // Delete All oBrw:aArray := {} // очистить массив oBrw:reset() FOR nI := 1 TO LEN(aMassiv) // нужно сделать массив на +1 больше aRows := Array(1, 13) aRows[1][1] := 0 aRows[1][2] := 0 aRows[1][3] := CTOD("") aRows[1][4] := 0 aRows[1][5] := CTOD("") aRows[1][6] := SPACE(20) aRows[1][7] := 0 aRows[1][8] := 0 aRows[1][9] := CTOD("") aRows[1][10] := 0 aRows[1][11] := "" aRows[1][12] := "" aRows[1][13] := "" oBrw:AddItem( aRows[1] ) ? "-AddItem-", nI, HB_ValToExp(aRows[1]) NEXT oBrw:Reset() oBrw:Refresh(.T.) ? " oBrw:nLen=", oBrw:nLen, " LEN(aMassiv)=", LEN(LEN(aMassiv))
| Вот лог-файл: Скрытый текст
----------------- Set_Columns1 Form_AYC 1 {40.00, 0d20190331, 120.00, 0d20190130, ... } 2 {40.00, 0d20190331, 0.00, 0d20190131, ... } 3 {40.00, 0d20190331, 0.00, 0d20190228, ... } 4 {40.00, 0d20190331, 40.00, 0d20190322, ... } 5 {40.00, 0d20190331, 0.00, 0d20190331, ... } 6 {40.00, 0d20190831, 40.00, 0d20190416, ... } 7 {40.00, 0d20190831, 0.00, 0d20190430, ... } 8 {40.00, 0d20190831, 0.00, 0d20190531, ... } 9 {40.00, 0d20190831, 0.00, 0d20190630, ... } LEN(aMassiv)= 9 -AddItem-1 {0, 0, 0d00000000, 0, 0d00000000, "", ...} -AddItem-2 {0, 0, 0d00000000, 0, 0d00000000, "", ...} -AddItem-3 {0, 0, 0d00000000, 0, 0d00000000, "", ...} -AddItem-4 {0, 0, 0d00000000, 0, 0d00000000, "", ...} -AddItem-5 {0, 0, 0d00000000, 0, 0d00000000, "", ...} -AddItem-6 {0, 0, 0d00000000, 0, 0d00000000, "", ...} -AddItem-7 {0, 0, 0d00000000, 0, 0d00000000, "", ...} -AddItem-8 {0, 0, 0d00000000, 0, 0d00000000, "", ...} -AddItem-9 {0, 0, 0d00000000, 0, 0d00000000, "", ...} oBrw:nLen= 8 LEN(aMassiv)= 9
|
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2651
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.07.19 16:07. Заголовок: Andrey пишет Очередн..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6341
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.07.19 19:45. Заголовок: SergKis пишет: Что ..
SergKis пишет: цитата: | Что то ты мутишь с массивами. Вот пример Работает |
| Что то в коде у тебя не наблюдаю: oBrw:DeleteRow( .T. ) // Delete All И нет конструкции создания массива... У меня не пойдёт - oBrw:AddItem(aDim), нужно увеличить на 1 элемент массив.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2652
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.07.19 20:13. Заголовок: Andrey пишет Что то ..
Andrey пишет цитата: | Что то в коде у тебя не наблюдаю: oBrw:DeleteRow( .T. ) // Delete All |
| Как бы и не надо, заново массив создаем цитата: | У меня не пойдёт - oBrw:AddItem(aDim), нужно увеличить на 1 элемент массив. |
| 1. Можно иметь больше колонок и не нужным сделать oCol:Visible := .F. или :nWidth := 1 или 2 пикселя 2. Можно попробовать использовать вместо :AddItem(...) метод:SetArray( aArray, lAutoCols, aHead, aSizes )
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2653
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.07.19 10:19. Заголовок: Andrey пишет У меня ..
Andrey пишет цитата: | У меня не пойдёт - oBrw:AddItem(aDim), нужно увеличить на 1 элемент массив |
| Немного модифицировал пример https://TransFiles.ru/5zbz9 На кнопке All на 1 колонку больше, чем на др. кнопках Вместо :AddItem использовал :SetArray
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2654
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.07.19 13:01. Заголовок: Andrey Забыл про :H..
Andrey Забыл про :HideColumns(...). С ним еще проще и можно на несколько колонок распространить Скрытый текст
*-----------------------------------------------------------------------------* STATIC FUNC Report( oWnd, nEvent, aSelect ) *-----------------------------------------------------------------------------* LOCAL aDatos, aArray, aHead, aSize, oCol, nCol, nLen LOCAL cCapt := 'All' oWnd:Action := .F. oWnd:StatusBar:Say('W A I T') If aSelect[1] != Nil cCapt := hb_ntos(aSelect[1])+'-'+hb_ntos(aSelect[2]) EndIf This.E0.Caption := cCapt DO EVENTS aDatos := AgeSelect( aSelect[1], aSelect[2] ) aArray := aDatos[1] aHead := aDatos[2] aSize := aDatos[3] WITH OBJECT oWnd:GetObj('Report'):Tsb // oBrw :Hide() ; nCol := :nColumn('STREET') ; oCol := :GetColumn(nCol) AEval(:aColumns, {|oc,nc| oc:nWidth := aSize[ nc ], ; oc:cHeading := aHead[ nc ] }) :HideColumns( nCol, ! 'All' $ cCapt ) :Display() ; :AdjColumns() ; DO EVENTS :SetArray(aArray, .T.) :Reset() ; :GetColumn('AGE'):cFooting := hb_ntos(:nLen) :ResetVScroll( .T. ) ; :oHScroll:SetRange( 0, 0 ) :Show() ; DO EVENTS ; :SetFocus() END WITH oWnd:StatusBar:Say('') oWnd:Action := .T. RETURN Nil
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6344
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.07.19 19:36. Заголовок: SergKis пишет: 2. М..
SergKis пишет: цитата: | 2. Можно попробовать использовать вместо :AddItem(...) метод:SetArray( aArray, lAutoCols, aHead, aSizes ) |
| Дошли руки разбираться дальше. Не понял как в моём случае это поможет. Куда в мой код это вставить, что заменить и т.д. Код примера Tsb_ReportAge.7z трудно читаемый для меня. Пока у себя сделал просто (работает однако): FOR nI := 1 TO LEN(aMassiv) + 1 // нужно сделать массив на +1 больше aRows := Array(1, 13)
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6361
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.07.19 15:14. Заголовок: Всем привет ! Делаю ..
Всем привет ! Делаю новый пример на базе примера MiniGUI\SAMPLES\Advanced\Tsb_Basic\demo2.prg Поймал вот такой косяк с таймером (2 окна одной и той же программы): Т.е. таймер не пашет и Refresh по таймеру не происходит. Перезапустил, пропало. А частенько так таймер работает в МиниГуи ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2687
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.07.19 16:21. Заголовок: Andrey пишет Код при..
Andrey пишет цитата: | Код примера Tsb_ReportAge.7z трудно читаемый для меня. |
| Что конкретно (какое место) трудно читается ? Хочется знать, что бы пояснить. цитата: | Куда в мой код это вставить, что заменить и т.д. |
| Формируй тсб с max кол-вом колонок (чтобы не делать Insert\Add\Delete columns) и массивы в мах кол-ве колонок (нужны надписи Header, Footer для колонок) и лишние колонки делай :HideColumns(...) в примере см. AgeReport() ф-ю, там ... :SetArray(aArray, .T.) // замена предыдущего массива в тсб массивом aArray :Reset() :GetColumn('AGE'):cFooting := hb_ntos(:nLen) // последнюю колонку убираем :ResetVScroll( .T. ) :oHScroll:SetRange(0,0) ...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2688
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.07.19 16:47. Заголовок: PS Извини с HidColum..
PS Извини с HidColumns др. кусок кода nCol := :nCell AEval(:aColumns, {|oc,nc| oc:nWidth := aSize[ nc ] }) // восстанавливаем размеры колонок базовые :HideColumns( 'STREET', ! 'All' $ cCapt ) // убираем колонку не нужную // :cTextSupHdSet( 1, This.ToolBar_1.Caption + ' ' + cCapt ) :aSuperHead[1][3] := This.ToolBar_1.Caption + ' ' + cCapt // навание в superheader :Display() :AdjColumns() // растягиваем колонки до размеров тсб
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|