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


Andrey
постоянный участник




Пост N: 5964
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.07.18 15:28. Заголовок: Всем привет ! Обнару..


Всем привет !
Обнаружил в методе ExcelOle() баг. Удаляет часть данных из Второй колонке в конце таблицы.
Версия МиниГуи последняя. Пробовал в нескольких задачах.
Вот так это выглядит, 0-к съедает в последней ячейке 2-ой колонки:


Если стоит 001, то удаляет два нолика.
Как бы исправить это ?
В Tsb4xlsOle.prg экспорт отрабатывает на отлично.

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




Пост N: 5965
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.07.18 16:14. Заголовок: Ещё обнаружил в мето..


Ещё обнаружил в методе ExcelOle() баг.
Если буквы при экспорте в эксель больше Z, т.е. колонок больше 26 - то ломается экспорт.
Попробую сделать свою функцию для названия колонок и заменить везде CHR(64 +....

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


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




Пост N: 5966
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.07.18 16:59. Заголовок: SergKis пишет: Паша..


SergKis пишет:

 цитата:
Паша тебе дал хорошие функции, зачем велосипед гонять



Да забыл про них. А где давал уже и не помню !

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




Пост N: 6872
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.07.18 17:20. Заголовок: Andrey пишет: А гд..


Andrey пишет:

 цитата:
А где давал уже и не помню


тут )) http://clipper.borda.ru/?1-1-0-00000531-000-0-0-1531592334

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




Пост N: 5967
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.07.18 13:45. Заголовок: Григорий, я исправил..


Григорий, я исправил h_tbrowse.prg
У меня заработал экспорт с большим количеством колонок.
Исправленный h_tbrowse.prg - оправил к тебе на почту.

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




Пост N: 1328
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.07.18 14:53. Заголовок: Andrey пишет: зараб..


Andrey пишет:

 цитата:
заработал экспорт с большим количеством колонок


Проверил на базе с 28 полями - экспорт работает нормально.
Благодарю за помощь

Andrey пишет:

 цитата:
Исправленный h_tbrowse.prg


Обрати внимание, что у тебя старая версия этого файла

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




Пост N: 5968
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.07.18 17:44. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Обрати внимание, что у тебя старая версия этого файла


Да, я брал из предыдущей версии.
Буду ждать новую версию МиниГуи.

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

Не совсем понятно зачем это нужно.
Можно пояснить ?

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




Пост N: 1985
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.08.18 15:30. Заголовок: Andrey пишет Можно п..


Andrey пишет
 цитата:
Можно пояснить ?


см. http://clipper.borda.ru/?1-1-0-00000532-000-80-0-1535705309 пост 1960 и далее
Можно применить для др. действий, к примеру своя шифровка\расшифровка символьных полей

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




Пост N: 1986
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.08.18 15:32. Заголовок: PS Обрати внимание н..


PS
Обрати внимание на пример поста 1962

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




Пост N: 1987
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.08.18 15:46. Заголовок: PS Описание примера ..


PS
Описание примера - пост 1940, тема та же

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




Пост N: 6020
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.08.18 23:56. Заголовок: SergKis пишет: Можн..


SergKis пишет:
Можно применить для др. действий, к примеру своя шифровка\расшифровка символьных полей
Давно об этом мечтал. Пример будет на эту тему ?

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


Спасибо: 0 
Профиль
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) Как сделать заново полное считывание базы для этой программы ?
можно обойтись без удаления объекта, а просто заново считать базу в готовый объект ?

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


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




Пост N: 2000
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 08:27. Заголовок: PS и SET DELETED ON..


PS
и
SET DELETED ON
поставить конечно

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

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




Пост N: 6031
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.09.18 08:39. Заголовок: SergKis пишет: Для ..


SergKis пишет:

 цитата:
Для этого определись с режимом работы SET DELETED ON\OFF


Спасибо большое за разъяснения !

А как быть с :
2) Как сделать заново полное считывание базы для этой программы ?
можно обойтись без удаления объекта, а просто заново считать базу в готовый объект ?

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


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