On-line: Alex_Cher, гостей 2. Всего: 3 [подробнее..]
АвторСообщение
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 
Профиль
Новых ответов нет , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [см. все]


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




Пост N: 6362
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.07.19 17:07. Заголовок: SergKis пишет: Что ..


SergKis пишет:

 цитата:
Что конкретно (какое место) трудно читается ?
Хочется знать, что бы пояснить.



Не могу использовать его для своего случая.
Свой код привел выше.
Как его модифицировать ?

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




Пост N: 2689
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.07.19 17:38. Заголовок: Andrey пишет Не могу..


Andrey пишет
 цитата:
Не могу использовать его для своего случая


Ты даже не попробовал разобраться.

 цитата:
Как его модифицировать ?


Сделай 2а массива
1-ый используй при создании тсб
2-ой на замену (без изм. nWidth колонок), у меня он aArray в AgeReport

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




Пост N: 6419
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.09.19 23:23. Заголовок: Правлю свои таблицы...


Правлю свои таблицы. До этого сделал временно и оставил.
Как сделать авторасширение всех столбцов таблицы чтобы справа фантомного столбца не было видно ?
Что-то ранее видел, но не успел попробовать.
Читал про oBrw:lAdjColumn := .T. и oBrw:AdjColumns()
Не совсем понял как их применять ?

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




Пост N: 2807
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.09.19 23:40. Заголовок: Andrey С тек. верси..


Andrey
С тек. версии hmg стало 2а алгоритма по растягиванию колонок
- :AdjColumns() // если ширина всех колонок < ширины тсб,
- :lAdjColumn := .F.\.T. // если есть горизонтальный скролинг колонок, при .T. предпоследняя колонка растягивается до конца ширины тсб, если последняя не вмещается

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




Пост N: 6420
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.09.19 23:55. Заголовок: Спасибо ! :sm36: :..


Спасибо !
:AdjColumns() - отработал очень хорошо.
:lAdjColumn := .F.\.T. - никак не отработал, хотя версия 19.08 (Update 1)

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




Пост N: 6560
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.01.20 15:42. Заголовок: Всем привет ! Что т..


Всем привет !
Что то опять бровс чудит.
Вот такая ошибка:
Error BASE/1004 Message not found: NIL:GOTO 
--------------------------------- Stack Trace ---------------------------------
Called from __ERRRT_SBASE(0)
Called from NIL:ERROR(0)
Called from (b)HBOBJECT(0)
Called from NIL:MSGNOTFOUND(0)
Called from NIL:GOTO(0)
Called from LOADSITEPASSDIM(236) in module: Source\form_transferM1pass.prg
Called from MYINITM1SITEPASS(129) in module: Source\form_transferM1pass.prg

Куда копать ?

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




Пост N: 3008
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.01.20 19:30. Заголовок: Andrey пишет Error ..


Andrey пишет
 цитата:
Error BASE/1004 Message not found: NIL:GOTO


Ты потерял объект oBrw в переменной
NIL:GOTO

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




Пост N: 6577
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.02.20 00:00. Заголовок: Всем привет ! А мож..


Всем привет !

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

Типа такого:
 
TsbrowseSave( M->oBrw3, "fileBrw3.obrw" )
TsbrowseRestore( "fileBrw3.obrw", M->oBrw3 )


P.S. Можно и без цветов для начала.

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




Пост N: 3033
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.20 00:13. Заголовок: Andrey пишет Именно ..


Andrey пишет
 цитата:
Именно весь, с цветами, полями, значениями и т.д.


Поиграйся ф-ями объкта ( А.Кресин http://www.kresin.ru/hrbfaq_3.html#Doc3 )
Далее следует список функций для манипуляции классами и объектами:
смотрим и пробуем
+ ф-ии сохранения\восстановления блоков кода (забыл названия в ночи, но тема была где то)
или организовывать их строковое представление для сохранения\восстановления

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




Пост N: 6578
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.02.20 00:26. Заголовок: SergKis пишет: смот..


SergKis пишет:

 цитата:
смотрим и пробуем


Я до сих пор так и не пользуюсь классами...
Раньше считал что не особо нужно, потом уже мозги не те, не понимаю как ими пользоваться.
Начинал с твоей помощью, так и забросил.

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




Пост N: 3034
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.02.20 00:28. Заголовок: PS При исп. :SetArra..


PS
При исп. :SetArrayTo(...) сохраняй\восстанавливай массивы - уже практичечки все готово, делай
В примере о курсах валют от ЦБ РФ (во флайме) у меня сделано
 
DEFINE TBROWSE oBrw AT nY, nX ALIAS cAlias WIDTH nW HEIGHT nH GRID ;
FONT { "Normal", "Header", "Footer" } ;
COLORS { CLR_BLACK, CLR_BLUE } ;
HEADERS { "Char;Code", "Num;Code", "Name" , "Nominal", "Value" } ;
COLSIZES { 40 , 40 , 250 , 50 , 50 } ;
PICTURE { , , "@R "+Repl('X',50), , } ;
JUSTIFY { DT_CENTER , DT_CENTER , DT_LEFT , DT_CENTER, DT_CENTER } ;
COLUMNS { "CHARCODE" , "NUMCODE" , "NAME" , "NOMINAL", "VALUE" } ;
COLNAMES { "CHAR" , "NUM" , "NAME" , "NOM" , "VAL" } ;
FOOTERS { "Char;Code", "Num;Code", "Name" , "Nominal", "Value" } ;

BRUSH { 255, 255, 240 } ;
LOADFIELDS FIXED
:InsColumn( 1, oColsData( cAlias ):Get('OrdKeyNo') ) // колонку # добавили
:GetColumn( 1 ):nWidth := 30
:nCell := 2
:nFreeze := 1
:lLockFreeze := .T.
:nHeightFoot := :nHeightCell
:nHeightCell += 4
:nClrLine := RGB(180,180,180) // COLOR_GRID
// :SetColor( { 11 }, { { || RGB( 255, 255, 255 ) } } )
:SetColor( { 11 }, { { || RGB(0,0,0) } } )
:SetColor( { 2 }, { { || RGB(255,255,240) } } )
:SetColor( { 5 }, { { || RGB(0,0,0) } } )
:SetColor( { 6 }, { { |a,b,c| iif( c:nCell == b, -CLR_HRED , -RGB(128,225,225) ) } } )
:SetColor( { 12 }, { { |a,b,c| iif( c:nCell == b, -RGB(128,225,225), -RGB(128,225,225) ) } } )
:AdjColumns()
END TBROWSE

Тоже практически все готово для save\restore (кроме блоков кода цветов)
Цветом выделена строка (как пример), которая есть в ch файле, но нет в программе из флайма

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




Пост N: 6620
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.04.20 22:14. Заголовок: Дали задачку, создат..


Дали задачку, создать таблицу и экспортировать его в Эксель.
Вопрос возник, как делать ?
Писать в Dbf-файл, а потом показывать в бровсе или сразу делать через массив с помощью SetArrayTo().
Что будет быстрей по скорости для Экспорта ?
База небольшая, 2500-3000 записей, кол-во столбцов примерно 50 штук.

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




Пост N: 1541
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 23.04.20 17:23. Заголовок: Andrey пишет: Что б..


Andrey пишет:

 цитата:
Что будет быстрей по скорости


Само собой чтение массива быстрее чем чтение файла dbf. Но это ничтожная разница по сравнению с самим экспортом.

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




Пост N: 6621
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.04.20 19:01. Заголовок: Спасибо ! А какая ра..


Спасибо !
А какая разница будет по времени по экспорту из DBF и SetArrayTo() ?
Всё равно данные уже в бровсе.
Я думаю что в SetArrayTo() быстрей будет строится (так всегда делаю).
Но интересно знать бы насколько быстрей...

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




Пост N: 6622
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.04.20 19:13. Заголовок: А как отсортировать ..


А как отсортировать SetArrayTo() по колонке дата только в обратном порядке ?
В обычном знаю:
 
// --------- функции сортировки колонок ---------
oBrw:nColOrder := oBrw:nColumn("FDATE")


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




Пост N: 3138
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.04.20 21:22. Заголовок: Andrey Добавь или п..


Andrey
Добавь или поправь (Advanced\Tsb_array_2\demo.prg)
 
...
oBrw:lNoChangeOrd := .F.

END TBROWSE

Делай двойной click на заголовке колонки, сортировка будет тудой-сюдой

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




Пост N: 6623
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.04.20 21:28. Заголовок: SergKis пишет: Дела..


SergKis пишет:

 цитата:
Делай двойной click на заголовке колонки, сортировка будет тудой-сюдой


Нельзя, нужно сразу юзеру таблицу предоставить отсортированной по дате в обратном порядке.
Спасибо !

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




Пост N: 6624
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.04.20 22:50. Заголовок: А как в SetArrayTo()..


А как в SetArrayTo() удалять строки в таблице.
На отдельную кнопку повесил функцию удаления TsbDeleteMemo() , не работает.
      IF MG_YesNo( cMsg, , "Удаление записи" ) 
oStatBrw:DeleteRow( ) // Delete selected row
oStatBrw:Reset()
oStatBrw:SetOrder(3, , .T. ) // сортировка по столбцу
ItogoNN(oStatBrw) // GetColumn("NN")
oStatBrw:Refresh(.T.)
ENDIF

Если подключить следующий код:
 
// --------- блок удаления записи ---------
bDelete := { | nAt, oBrw | nAt:=nil, ItogoNN(oBrw) } // отрабатыват после DEL !!!
oBrw:SetDeleteMode( .T., .F., bDelete ) // так включаем клавишу DEL !!!

То удаление работает, но у меня отдельные проверки в TsbDeleteMemo(), при некоторых условиях удалять запись НЕЛЬЗЯ !
Как запретить удаление по клавише DEL и оставить отдельную кнопку удаления ?

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




Пост N: 3139
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.04.20 23:01. Заголовок: Andrey пишет Как зап..


Andrey пишет
 цитата:
Как запретить удаление по клавише DEL и оставить отдельную кнопку удаления ?


Делай массив (строка) на несколько элементов больше (по потребности). К примеру 2 доп. элемента
1 .T.\.F. - можно ли удалять
2 RecNo() в таблице dbf из которой создавался массив (для внесения изменений из массива в dbf)
Тогда в массиве Head пишешь только нужные колонки без 2х последних
На кнопку и в bDelete пишешь ф-ю, которая контролирует можно ли удалять (предпоследний элемент строки\записи массива) и
далее удаляешь или нет

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




Пост N: 6625
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.04.20 23:06. Заголовок: SergKis пишет: 2 Re..


SergKis пишет:

 цитата:
2 RecNo() в таблице dbf из которой создавался массив (для внесения изменений из массива в dbf)
Тогда в массиве Head пишешь только нужные колонки без 2х последних
На кнопку и в bDelete пишешь ф-ю, которая контролирует можно ли удалять (предпоследний элемент строки\записи массива) и
далее удаляешь или нет


Нет вообще DBF, чистый массив из мемо-поля.

Допустим написал отдельную функцию проверки - CheckDel(), возвращает T.\.F. - можно ли удалять
Как её использовать в коде ?
 
// --------- блок удаления записи ---------
bDelete := { | nAt, oBrw | nAt:=nil, ItogoNN(oBrw) } // отрабатыват после DEL !!!
oBrw:SetDeleteMode( .T., .F., bDelete ) // так включаем клавишу DEL !!!


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