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: 3140
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.04.20 23:22. Заголовок: Andrey смотри METHO..


Andrey
смотри
METHOD DeleteRow( lAll ) CLASS TSBrowse
там для dbf, array удаление, как работает :bDelete

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


2е колонки я давал для примера, добавляй одну для .T.\.F. и читай ее в bDelete,
если .T., к примеру, удалять можно,
если .F., то нельзя. Т.е. возвращай это значение из блока bDelete

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




Пост N: 6626
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.04.20 00:11. Заголовок: SergKis пишет: если..


SergKis пишет:

 цитата:
если .F., то нельзя. Т.е. возвращай это значение из блока bDelete



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


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




Пост N: 6627
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.04.20 08:42. Заголовок: Всем доброго утра ! ..


Всем доброго утра !
Сделал рабочий код для SetArrayTo():
   oBrw:aColumns[2]:bPostEdit := {|xVal | xVal := oBrw:aArray[oBrw:nAt][oBrw:nCell] ,; 
xVal := CharRepl( "|\", xVal, " " ) ,;
oBrw:aArray[oBrw:nAt][oBrw:nCell] := xVal }

А по другому написать можно это действие ?
И как сделать такое же действие для Dbf

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




Пост N: 3141
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.04.20 11:30. Заголовок: Andrey пишет А по др..


Andrey пишет
 цитата:
А по другому написать можно это действие ?


oBrw:aColumns[2]:bPostEdit := {|xv,ob,ncol| xv := CharRepl("|\", xv, " "), ob:SetValue(ncol,xv) }

 цитата:
И как сделать такое же действие для Dbf


Есть методы и ты их использовал в своих примерах, но подзабыл
xVal := oBrw:GetValue(nCol)
oBrw:SetValue(nCol, xVal)

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




Пост N: 3142
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.04.20 12:55. Заголовок: PS В качестве nCol (..


PS
В качестве nCol (номера колонки) могут быть и имена колонок, т.е.
xVal := oBrw:GetValue("FDATE")
oBrw:SetValue("FDATE", xVal)

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




Пост N: 6628
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.04.20 07:18. Заголовок: Фонты не работаю в S..


Фонты не работаю в SetArrayTo()
Нашёл по хелпу типов таблицы: [ CELL | CELLED | GRID ] - а разница в чём между ними...

Как тогда для SetArrayTo() использовать фонты чтобы всегда работало ?
Фонты использую так:
 
cTbrName := "oBrwTxt"
DEFINE TBROWSE &cTbrName ;
AT nY, nX ;
WIDTH nW ;
HEIGHT nH ;
GRID ; // это oBrw:lCellBrw := TRUE
EDIT // все колонки с lEdit := .T.

END TBROWSE

// cell, head, foot
aFont := { GetFontHandle("Italic"), GetFontHandle("Bold"), GetFontHandle("Norm") }

// создаём таблицу из массива
oBrw := SetArrayTo( cTbrName, "test", aArray, aFont, aHead,;
aSize, aFoot, aPict, aAlign, aName )


Можно на лету изменять типы таблицы ?

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




Пост N: 3143
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.04.20 08:32. Заголовок: Andrey Может повним..


Andrey
Может повнимательнее посмотришь на исп. SetArrayTo() с фонтами Tsb_array_2\demo.prg
 
// hFontHead := aFont[1] // normal Header
// hFontFoot := aFont[2] // bold Footer
// aFontHF := { hFontHead, hFontFoot }

// aFontHF := aFont[1] // normal Header, Footer
aFontHF := aFont[2] // bold Header, Footer

oBrw := SetArrayTo( "oBrw", "test", aArray, aFontHF, aHead, aSize, aFoot, aPict, aAlign, aName )

в aFontHF мах 2а элемента, если задан не массивом, то это один handle font для Header и Footer
1 handle font Header
2 habdle font Footer
Для строк в DEFINE TBROWSE ... есть FONT cFontName SIZE nFontSize
Если вместо имени хочешь исп. handle font, то это переносится после DEFINE TBROWSE ... в уст. свойства объекта
oBrw:hFont := GetFontHandle(cFontName)


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




Пост N: 3144
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.04.20 09:03. Заголовок: PS Твой вариант долж..


PS
Твой вариант должен выглядеть, к примеру так
 
DEFINE FONT Italic FONTNAME "DejaVu Sans Mono" SIZE 11 BOLD ITALIC
DEFINE FONT Norm FONTNAME _HMG_DefaultFontName SIZE _HMG_DefaultFontSize
DEFINE FONT Bold FONTNAME _HMG_DefaultFontName SIZE _HMG_DefaultFontSize BOLD
...
aFont := { GetFontHandle("Bold"), GetFontHandle("Norm") }
...
cTbrName := "oBrwTxt"
DEFINE TBROWSE &cTbrName OBJ oBrw ;
AT nY, nX ;
WIDTH nW ;
HEIGHT nH ;
FONT "Italic" ;
CELL /*GRID*/ ; // это oBrw:lCellBrw := TRUE
EDIT // все колонки с lEdit := .T.

mySetTsb(oBrw)

:SetArrayTo( aArray, aFont, aHead, aSize, aFoot, aPict, aAlign, aName )

:AdjColumns()

END TBROWSE ON END {|obr| obr:SetNoHoles(), obr:SetFocus() }
...


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




Пост N: 6629
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.04.20 12:29. Заголовок: SergKis пишет: Твой..


SergKis пишет:

 цитата:
Твой вариант должен выглядеть, к примеру так



Спасибо ! Дошло наконец то до меня...
Может в примере demo3.prg показать под комментариями:
 
/* 1 вариант написания
aFont := { "Italic", "Bold", "Norm" } // cell, head, foot
DEFINE TBROWSE oBrw ;
AT nY, nX ALIAS aArray WIDTH nW HEIGHT nH CELL ;
FONT aFont ;
BRUSH { 255, 255, 240 } ;
HEADERS aHead ;
COLSIZES aSize ;
PICTURE aPict ;
JUSTIFY aAlign ;
COLNAMES aName ;
COLNUMBER { 1, 40 } ;
COLUMNS aField ;
FOOTERS aFoot ;
FIXED ADJUST COLEMPTY ;
ENUMERATOR ;
EDIT GOTFOCUSSELECT

mySetTsb( oBrw )
myColorTsb( oBrw )

END TBROWSE ON END {|ob| ob:SetNoHoles(), ob:SetFocus() } */

// 2 вариант написания
aFont := { GetFontHandle("Bold"), GetFontHandle("Norm") } // head, foot
cTbrName := "oBrwTxt"
DEFINE TBROWSE &cTbrName OBJ oBrw ;
AT nY, nX ;
WIDTH nW ;
HEIGHT nH ;
FONT "Italic" ; // cell
CELL /*GRID CELLED */ ;
EDIT // все колонки с lEdit := .T.

mySetTsb(oBrw)

:SetArrayTo( aArray, aFont, aHead, aSize, aFoot, aPict, aAlign, aName )

:AdjColumns()

END TBROWSE ON END {|obr| obr:SetNoHoles(), obr:SetFocus() }

Попробовал компилировать пример demo3.prg с
CELL /*GRID CELLED */ ;
Не увидел разницы. На внешний вид таблицы одинаковые.
Зачем такое разнообразие ?

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




Пост N: 1542
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 25.04.20 22:23. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А какая разница будет по времени по экспорту из DBF и SetArrayTo() ?
Всё равно данные уже в бровсе.


Не хотел отвечать, но надо для всех.
Что значит данные в бровсе? Если это бровс по массиву, то да, массив передаётся в бровс. Если по базе, то рабочая область передаётся в бровс. Следует изучить наконеец исходники бровса, чтобы понять - бровс только рисует на экране окно данных и все. И сам бровс через свои методы может читать только текущую запись или строку массива, при этом выполняя очень много технических операций ( прорисовка, скрытые столбцы, блоки выборки данных и пр.) Если говорить о том., что данные получаем средствами бровса, то это значит что тратиться время на все эти операции и это в разы дольше прямой выборки из источника. Всё примеры типа tsb_export показавают только возможность работы с источником данных методами бровса, но ценой производительности. Разница в скорости между массивом и дбф в разнице доступа к элементу массива и полю базы, дальше математика, сколько запросов во столько раз умножение. И на закуску, SetArrayTo это всего лишь метод, позволяющий удобно инициализировать бровс по МАССИВУ. Это как что быстрее работает с дбф МиниГуи или харбур? Андрей, Вами проделана огромная работа по подготовке примеров новичкам, но такие речевые обороты сносят мозг тем же новичкам напрочь. Будьте внимательнее, хотя-бы на правах ветерана этого форума

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




Пост N: 6630
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.04.20 22:31. Заголовок: Спасибо за пояснения..


Спасибо за пояснения. Я это и хотел услышать и для других тоже !

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




Пост N: 6650
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.05.20 16:18. Заголовок: видишь суслика нет и..


видишь суслика нет и я не вижу а он есть

Использую последнюю версию МиниГуи 20.04
Сделал отдельный модуль .prg - работает отлично.
Таблица просто загляденье, столбики цветом подсвечены, шапка и подвал есть.
Добавляю его к себе в большой проект, просто его копирую в папку проекта и добавляю его в МуПроект.hbp
После сборки тестирую эту менюшку.
Таблица есть, шапка есть, а подвала НЕТ !!!
Вместо него дырка и всё...
Кто шаманский бубен продаст ?

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




Пост N: 6660
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.05.20 15:14. Заголовок: Andrey пишет: Табли..


Andrey пишет:

 цитата:
Таблица есть, шапка есть, а подвала НЕТ !!!


Разобрался я с этой загадкой. Как сделать это научился, а как исправить нет !
По коду это происходит так:
   .... 
aRet := myMenu(...) // отдельный prg, в нём 2 тсб, где указываю :nHeightFoot := 0 // высота подвала таблицы
....
// работа с базой
....
myTsb(...) // отдельный prg, в нём тсб, где указываю :nHeightFoot := 30
...

Вот так подвал в myTsb(...) не показывается.
Если в myMenu(...) поставить :nHeightFoot := 10, то и в myTsb(...) будет 10 и больше не делается.
Почему ?

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




Пост N: 7191
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.05.20 15:56. Заголовок: Andrey пишет: Почем..


Andrey пишет:

 цитата:
Почему ?


Объект тсб по разному хоть называется ?

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




Пост N: 3184
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.05.20 16:31. Заголовок: Andrey пишет:Почему ..


Andrey пишет:
 цитата:
Почему ?


Видимость переменной тсб Public ?

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




Пост N: 6661
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.05.20 17:52. Заголовок: Dima пишет: Объект ..


Dima пишет:

 цитата:
Объект тсб по разному хоть называется ?


SergKis пишет:

 цитата:
Видимость переменной тсб Public ?


 
Для myMenu(...)
LOCAL oBrw1, oBrw2, cTbrName1, cTbrName2
...
///////////////////// первая таблица ////////////////////////////////
aDatos := CreateDatosAdres()
aArray := aDatos[ 1 ]
.....
cTbrName1 := "oBrwTxt1"
DEFINE TBROWSE &cTbrName1 OBJ oBrw1 ;
...
:SetArrayTo( aArray, aFontHF, aHead, aSize, aFoot, aPict, aAlign, aName )
:AddSuperHead(1, 2, "Выбор адреса" ) // суперхидер
:aColumns[2]:lEdit := .F. // НЕ редактировать

mySetTsb( oBrw1 )
TsbColor( oBrw1, , , , , )
...
///////////////////// вторая таблица ////////////////////////////////
aDatos := CreateMonthYears()
aArray := aDatos[ 1 ]
.....
cTbrName2 := "oBrwTxt2"
DEFINE TBROWSE &cTbrName2 OBJ oBrw2 ;
....
:SetArrayTo( aArray, aFontHF, aHead, aSize, aFoot, aPict, aAlign, aName )
:AddSuperHead(1, 3, "Выбор месяца/года" ) // суперхидер
mySetTsb( oBrw2 )
TsbColor( oBrw2, , , , , )
....
Для myTsb(...)
LOCAL oBrw,
....
DEFINE TBROWSE oBrw ;
...
mySetTsb( oBrw ) // настройки таблицы
myColorTsb( oBrw ) // цвета на таблицу
mySumTsb( oBrw ) // суммирование колонок таблицы
myColorTsbElect( oBrw ) // цвета избранные


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




Пост N: 3186
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.05.20 18:10. Заголовок: Andrey Поставь знач..


Andrey
Поставь значения в myMenu()
oBrw1:lFooting := .F. и oBrw1:lDrawFooters := .F.
oBrw2:lFooting := .F. и oBrw2:lDrawFooters := .F.
в myTsb()
oBrw:lFooting := .T. и oBrw:lDrawFooters := .T.
oBrw:nHeightFoot := 30
Что получишь ?

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




Пост N: 6662
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.05.20 18:52. Заголовок: SergKis пишет: Что ..


SergKis пишет:

 цитата:
Что получишь ?


Нет подвала !
Наверное нужно отдельный пример делать...

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




Пост N: 6663
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.05.20 20:32. Заголовок: Разобрался я с этой ..


Разобрался я с этой загадкой !!!
Опять моя ошибка.
  aRet := myMenu(...) // отдельный prg, в нём 2 тсб, где указываю :nHeightFoot  := 0  // высота подвала таблицы   
myTsb(...) // отдельный prg, в нём тсб, где указываю :nHeightFoot := 30

В обоих отдельных prg есть одинаковая функция.
FUNCTION mySetTsb() 
.......

Забыл сделать в обоих случаях
STATIC FUNCTION mySetTsb()
А при сборке проекта линковщик-зараза, ошибку не выдавал !
Сейчас заработало !

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




Пост N: 3187
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.05.20 20:43. Заголовок: Andrey пишет В обоих..


Andrey пишет
 цитата:
В обоих отдельных prg есть одинаковая функция.
FUNCTION mySetTsb()


Эта функция + myColorTsb() были специально оставлены FUNCTION, чтобы применять во всех тсб.
mySetTsb() - задание общих переменных для всех тсб
myColorTsb() - задание общих цветов тсб, что бы выглядели одинаково на всех окнах
Все частные установки для тсб конкретного окна, делаешь в STATIC FUNCTION своего prg файла
К примеру
mySet_Tsb() - задание значений переменных для конкретного тсб
myColor_Tsb() - задание значений цветов для конкретного тсб

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