Автор | Сообщение |
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
[только новые]
|
|
Andrey
|
| постоянный участник
|
Пост N: 5964
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.07.18 15:28. Заголовок: Всем привет ! Обнару..
Всем привет ! Обнаружил в методе ExcelOle() баг. Удаляет часть данных из Второй колонке в конце таблицы. Версия МиниГуи последняя. Пробовал в нескольких задачах. Вот так это выглядит, 0-к съедает в последней ячейке 2-ой колонки: Если стоит 001, то удаляет два нолика. Как бы исправить это ? В Tsb4xlsOle.prg экспорт отрабатывает на отлично.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5965
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.07.18 16:14. Заголовок: Ещё обнаружил в мето..
Ещё обнаружил в методе ExcelOle() баг. Если буквы при экспорте в эксель больше Z, т.е. колонок больше 26 - то ломается экспорт. Попробую сделать свою функцию для названия колонок и заменить везде CHR(64 +....
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1936
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.07.18 16:46. Заголовок: Andrey пишет Попробу..
Andrey пишет цитата: | Попробую сделать свою функцию для названия колонок и заменить везде CHR(64 +.... |
| Паша тебе дал хорошие функции, зачем велосипед гонять Function ExcelAdr(nRow, nCol) Return if(nCol>26,Chr(Int((nCol-1)/26)+64),'')+Chr((nCol-1)%26+65) + LTrim(Str(Int(nRow))) и до кучи еще одну функцию (для адреса диапазона ячеек): Function ExcelAdr2(nRow1, nCol1, nRow2, nCol2) Return ExcelAdr(nRow1, nCol1) + ':' + ExcelAdr(nRow2, nCol2) Под них скорее надо method ExcelOle заточить, вместо aCol := { 26, 52, 78, 104, 130, 156 }, ; aLet := { "", "A", "B", "C", "D", "E" }, ; ... cLet := aLet[ AScan( aCol, {|e| Len( If( aColSel != Nil, aColSel, ::aColumns ) ) <= e } ) ] If ! Empty( cLet ) nCol := AScan( aLet, cLet ) - 1 cLet += Chr( 64 + Len( If( aColSel != Nil, aColSel, ::aColumns ) ) - aCol[ Max( 1, nCol ) ] ) Else cLet := Chr( 64 + Len( If( aColSel != Nil, aColSel, ::aColumns ) ) ) EndIf ...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5966
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.07.18 16:59. Заголовок: SergKis пишет: Паша..
SergKis пишет: цитата: | Паша тебе дал хорошие функции, зачем велосипед гонять |
| Да забыл про них. А где давал уже и не помню !
|
|
|
Dima
|
| |
Пост N: 6872
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.07.18 17:20. Заголовок: Andrey пишет: А гд..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5967
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.07.18 13:45. Заголовок: Григорий, я исправил..
Григорий, я исправил h_tbrowse.prg У меня заработал экспорт с большим количеством колонок. Исправленный h_tbrowse.prg - оправил к тебе на почту.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1328
Зарегистрирован: 11.02.10
|
|
Отправлено: 17.07.18 14:53. Заголовок: Andrey пишет: зараб..
Andrey пишет: цитата: | заработал экспорт с большим количеством колонок |
| Проверил на базе с 28 полями - экспорт работает нормально. Благодарю за помощь Andrey пишет: цитата: | Исправленный h_tbrowse.prg |
| Обрати внимание, что у тебя старая версия этого файла
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5968
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.07.18 17:44. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Обрати внимание, что у тебя старая версия этого файла |
| Да, я брал из предыдущей версии. Буду ждать новую версию МиниГуи.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6019
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.08.18 14:30. Заголовок: SergKis пишет: И ещ..
SergKis пишет: И еще, если добавить в TsColumn DATA bDecode // Charset decode or other DATA bEncode // Charset encode or other Не совсем понятно зачем это нужно. Можно пояснить ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1985
Зарегистрирован: 17.02.12
|
|
Отправлено: 31.08.18 15:30. Заголовок: Andrey пишет Можно п..
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1986
Зарегистрирован: 17.02.12
|
|
Отправлено: 31.08.18 15:32. Заголовок: PS Обрати внимание н..
PS Обрати внимание на пример поста 1962
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1987
Зарегистрирован: 17.02.12
|
|
Отправлено: 31.08.18 15:46. Заголовок: PS Описание примера ..
PS Описание примера - пост 1940, тема та же
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6020
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.08.18 23:56. Заголовок: SergKis пишет: Можн..
SergKis пишет: Можно применить для др. действий, к примеру своя шифровка\расшифровка символьных полей Давно об этом мечтал. Пример будет на эту тему ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1988
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.09.18 01:03. Заголовок: Andrey пишет Пример..
Andrey пишет цитата: | Пример будет на эту тему ? |
| 1. :lEdit := .T. :bData := FieldWBlock('NAME', select(cAlias)) :bDecode := {|cv| sx_Decrypt(cv, 'MyPassword') } :bEncode := {|cv| sx_Encrypt(cv, 'MyPassword') } 2. oKey := oKeyData() oKey:Set(1, 'Name 1') oKey:Set(2, 'Name 2') oKey:Set(3, 'Name 3') ... oKey:Set(9, 'Name 9') :lEdit := .F. :bData := FieldWBlock('NUMKEY', select(cAlias)) :bDecode := {|nk| oKey:Get(nk, '????????') }
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6030
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.09.18 00:32. Заголовок: Всем привет ! Пытаюс..
Всем привет ! Пытаюсь понять метод oBrw:DeleteRow() для DBF. Что-то не работает... Модифицировал пример Tsb_linedrag для вставки/удаления записей. Вставка работает, удаление нет. Что не так делаю ? Проект вот - https://cloud.mail.ru/public/4kmS/Ad1Xf9Sy2 И ещё пара вопросов: 1) Не отрабатывает вставка вертикального скролинга - oBrw:ResetVScroll(). Почему ? 2) Как сделать заново полное считывание базы для этой программы ? можно обойтись без удаления объекта, а просто заново считать базу в готовый объект ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1999
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.09.18 08:26. Заголовок: Andrey пишет Пытаюсь..
Andrey пишет цитата: | Пытаюсь понять метод oBrw:DeleteRow() для DBF |
| Для этого определись с режимом работы SET DELETED ON\OFF Если OFF, то записи удаленные так же на экране, только помечаются deleted, :DeleteRow() тогда делает recall для удаленной, для разделения при показе вкл. цвета для удаленных. Если ON и без индекса, то сам управляй переменной :nLen, т.е. уст. блок :bLogicLen для "правильного" счета записей в просмотре. Если с индексом, то делай его FOR ! deleted() - тогда тсб кое что сделает сама, это кое что иногда нужно менять. В этом примере для исчезновения строк при удалении сделать GO TOP INDEX ON RecNo() TAG ID FOR ! Deleted() GO TOP DEFINE WINDOW Form_0 ; ... STATIC FUNCTION RecnoInsert(oBrw) ... // IF INDEXORD() == 0 oBrw:GoToRec( nRecno ) // ENDIF // oBrw:Refresh( .T. ) // перечитать записи таблицы ? "Insert=", nRecno ENDIF oBrw:SetFocus() ... STATIC FUNCTION RecnoDelete(oBrw) LOCAL nRow := oBrw:nRowPos ... lDelete := oBrw:DeleteRow() ? "Delete=",nRecno, lDelete If nRow == oBrw:nRowCount() oBrw:PostMsg( WM_KEYDOWN, VK_END, 0 ) EndIf oBrw:SetFocus() ...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2000
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.09.18 08:27. Заголовок: PS и SET DELETED ON..
PS и SET DELETED ON поставить конечно
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2001
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.09.18 08:31. Заголовок: PPS оговорюсь сразу,..
PPS оговорюсь сразу, что If nRow == oBrw:nRowCount() oBrw:PostMsg( WM_KEYDOWN, VK_END, 0 ) EndIf не решает всех проблем, это только пример варианта, т.к. есть еще значение :nLen его тоже учитывать надо.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6031
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.09.18 08:39. Заголовок: SergKis пишет: Для ..
SergKis пишет: цитата: | Для этого определись с режимом работы SET DELETED ON\OFF |
| Спасибо большое за разъяснения ! А как быть с : 2) Как сделать заново полное считывание базы для этой программы ? можно обойтись без удаления объекта, а просто заново считать базу в готовый объект ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2002
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.09.18 08:49. Заголовок: Andrey пишет Не отра..
Andrey пишет цитата: | Не отрабатывает вставка вертикального скролинга - oBrw:ResetVScroll() |
| FUNCTION CreateBrowse() ... // oBrw:ResetVScroll() // показ вертикального скролинга можно не ставить если ставить, то лучше парой строк // oBrw:ResetVScroll() // показ вертикального скролинга // oBrw:oHScroll:SetRange( 0, 0 ) VScroll появляется при :nLen > :nRowCount() и потом остается. При задании ширины тсб это надо учитывать. Если VScroll не нужен в твоем примере, то делаем oBrw:lNoVScroll := .T. // у тебя он уже так стоит и STATIC FUNCTION RecnoInsert(oBrw) ... If oBrw:lNoVScroll oBrw:oVScroll := Nil EndIf oBrw:GoToRec( nRecno ) ... STATIC FUNCTION RecnoDelete(oBrw) ... lDelete := oBrw:DeleteRow() ? "Delete=",nRecno, lDelete If oBrw:lNoVScroll oBrw:oVScroll := Nil EndIf If nRow == oBrw:nRowCount() ...
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|