Автор | Сообщение |
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: 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
|
|
|
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 !!!
|
|
|
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
|
|
|
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)
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3142
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.04.20 12:55. Заголовок: PS В качестве nCol (..
PS В качестве nCol (номера колонки) могут быть и имена колонок, т.е. xVal := oBrw:GetValue("FDATE") oBrw:SetValue("FDATE", xVal)
|
|
|
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 ) Можно на лету изменять типы таблицы ?
|
|
|
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)
|
|
|
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() } ...
|
|
|
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 */ ; Не увидел разницы. На внешний вид таблицы одинаковые. Зачем такое разнообразие ?
|
|
|
Haz
|
| |
Пост N: 1542
Зарегистрирован: 20.02.11
|
|
Отправлено: 25.04.20 22:23. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А какая разница будет по времени по экспорту из DBF и SetArrayTo() ? Всё равно данные уже в бровсе. |
| Не хотел отвечать, но надо для всех. Что значит данные в бровсе? Если это бровс по массиву, то да, массив передаётся в бровс. Если по базе, то рабочая область передаётся в бровс. Следует изучить наконеец исходники бровса, чтобы понять - бровс только рисует на экране окно данных и все. И сам бровс через свои методы может читать только текущую запись или строку массива, при этом выполняя очень много технических операций ( прорисовка, скрытые столбцы, блоки выборки данных и пр.) Если говорить о том., что данные получаем средствами бровса, то это значит что тратиться время на все эти операции и это в разы дольше прямой выборки из источника. Всё примеры типа tsb_export показавают только возможность работы с источником данных методами бровса, но ценой производительности. Разница в скорости между массивом и дбф в разнице доступа к элементу массива и полю базы, дальше математика, сколько запросов во столько раз умножение. И на закуску, SetArrayTo это всего лишь метод, позволяющий удобно инициализировать бровс по МАССИВУ. Это как что быстрее работает с дбф МиниГуи или харбур? Андрей, Вами проделана огромная работа по подготовке примеров новичкам, но такие речевые обороты сносят мозг тем же новичкам напрочь. Будьте внимательнее, хотя-бы на правах ветерана этого форума
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6630
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.04.20 22:31. Заголовок: Спасибо за пояснения..
Спасибо за пояснения. Я это и хотел услышать и для других тоже !
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6650
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.05.20 16:18. Заголовок: видишь суслика нет и..
видишь суслика нет и я не вижу а он есть Использую последнюю версию МиниГуи 20.04 Сделал отдельный модуль .prg - работает отлично. Таблица просто загляденье, столбики цветом подсвечены, шапка и подвал есть. Добавляю его к себе в большой проект, просто его копирую в папку проекта и добавляю его в МуПроект.hbp После сборки тестирую эту менюшку. Таблица есть, шапка есть, а подвала НЕТ !!! Вместо него дырка и всё... Кто шаманский бубен продаст ?
|
|
|
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 и больше не делается. Почему ?
|
|
|
Dima
|
| |
Пост N: 7191
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.05.20 15:56. Заголовок: Andrey пишет: Почем..
Andrey пишет: Объект тсб по разному хоть называется ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3184
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.05.20 16:31. Заголовок: Andrey пишет:Почему ..
Andrey пишет: Видимость переменной тсб Public ?
|
|
|
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 ) // цвета избранные
|
|
|
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 Что получишь ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6662
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.05.20 18:52. Заголовок: SergKis пишет: Что ..
SergKis пишет: Нет подвала ! Наверное нужно отдельный пример делать...
|
|
|
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() А при сборке проекта линковщик-зараза, ошибку не выдавал ! Сейчас заработало !
|
|
|
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() - задание значений цветов для конкретного тсб
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|