Автор | Сообщение |
|
| постоянный участник
|
Пост 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:....
|
|
|
Ответов - 181
, стр:
1
2
3
4
5
6
7
8
9
10
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 7571
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.09.23 20:55. Заголовок: Dima пишет: Правда ..
Dima пишет: цитата: | Правда есть ньюанс при запуске |
| Странно и непонятно. Такое впечатление что берется старая TsbViewer.lib Так как в новой TsbViewer.lib MAIN окно включено по умолчанию. Пересобрал заново TsbViewer.lib - поправил пути в tsbviewer.hbp, т.к. я делаю свой путь для каждой версии МиниГуи -workdir=c:/minigui-23.09.2/lib/hbmk/obj -oc:/minigui-23.09.2/lib/TsbViewer -Ic:/minigui-23.09.2/include Перепроверил ещё раз у себя, собирается и запускается без ошибок.
|
|
|
|
| |
Пост N: 7826
Зарегистрирован: 17.05.05
|
|
Отправлено: 27.09.23 21:17. Заголовок: Andrey пишет: Стран..
Andrey пишет: TsbViewer.lib от 04.07.23 TsbViewer.prg от 06.01.22
|
|
|
|
| постоянный участник
|
Пост N: 7572
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.09.23 21:22. Заголовок: Вот в новой версии у..
Вот в новой версии у меня так:
|
|
|
|
| |
Пост N: 7827
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.09.23 14:54. Заголовок: Andrey пишет: Такое..
Andrey пишет: цитата: | Такое впечатление что берется старая TsbViewer.lib |
| Да , так и есть , лежала либа в папке C:\MiniGUI\SAMPLES\Advanced\Tsb_Viewer\ , убил её и пересобрал , работает
|
|
|
|
| постоянный участник
|
Пост N: 7575
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.09.23 15:28. Заголовок: Ну и отлично ! :sm1..
Ну и отлично !
|
|
|
|
| |
Пост N: 170
Зарегистрирован: 12.07.06
|
|
Отправлено: 12.10.23 19:54. Заголовок: Возможно ли?
Есть ряд одинаковых по структуре файлов. Можно как-то в открытом TsBrowse на лету поменять DBF-файл?
|
|
|
|
| постоянный участник
|
Пост N: 4427
Зарегистрирован: 17.02.12
|
|
Отправлено: 12.10.23 20:09. Заголовок: alex_II Переоткройт..
alex_II Переоткройте др. dbf с тем же alias, можно и в той же области
|
|
|
|
| |
Пост N: 171
Зарегистрирован: 12.07.06
|
|
Отправлено: 13.10.23 04:34. Заголовок: Забыл уточнить, все ..
Забыл уточнить, все файлы открыты.
|
|
|
|
| постоянный участник
|
Пост N: 4428
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.10.23 09:23. Заголовок: alex_II пишет Забыл ..
alex_II пишет цитата: | Забыл уточнить, все файлы открыты. |
| SergKis пишет oBrw:UserKeys( VK_F6, {|ob| myNewOpen(ob) } ) ... FUNC myNewOpen(oBrw) Local cNewDbf := ... dbSelectArea(oBrw:cAlias) USE USE (cNewDbf) ALIAS (oBrw:cAlias) SHARED oBrw:Reset() RETURN Nil
|
|
|
|
| постоянный участник
|
Пост N: 7604
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.11.23 15:16. Заголовок: Построил таблицу. Ка..
Построил таблицу. Как можно поменять фон цвета шапки и подвала у столбца SELECTOR (1) ?
|
|
|
|
| постоянный участник
|
Пост N: 4445
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.11.23 16:27. Заголовок: Andrey А посмотреть..
Andrey А посмотреть метод :DrawHeaders слабо и поискать F7 в far "lSelect" ? Там несколько строк всего
|
|
|
|
|
| постоянный участник
|
Пост N: 7605
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.11.23 21:26. Заголовок: SergKis пишет: А по..
SergKis пишет: цитата: | А посмотреть метод :DrawHeaders слабо и поискать F7 в far "lSelect" ? Там несколько строк всего |
| Посмотрел, ни фига не понял
|
|
|
|
| постоянный участник
|
Пост N: 4446
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.11.23 21:41. Заголовок: Andrey пишет Посмотр..
Andrey пишет цитата: | Посмотрел, ни фига не понял |
| Странно выбор данных для переменной nClrBack из переменных oBrw и oColumn IF !( nJ == 1 .AND. ::lSelector ) // не 1-я колонка IF ( nClrBack := iif( ::nColOrder == nI, oColumn:nClrOrdeBack, oColumn:nClrHeadBack ) ) == NIL nClrBack := iif( ::nColOrder == nI, nClrOrdeBack, nClrHeadBack ) ENDIF ELSE // 1-я колонка nClrBack := iif( ::nClrSelectorHdBack == NIL, ATail( ::aColumns ):nClrHeadBack, ::nClrSelectorHdBack ) ENDIF ниже есть и для Footer IF ::lFooting .AND. ::lDrawFooters ... IF !( nJ == 1 .AND. ::lSelector ) // JP nClrBack := iif( oColumn:nClrFootBack != NIL, oColumn:nClrFootBack, nClrFootBack ) ELSEIF ::nClrSelectorHdBack != NIL nClrBack := ::nClrSelectorHdBack ELSE nClrBack := ATail( ::aColumns ):nClrFootBack ENDIF ...
|
|
|
|
| постоянный участник
|
Пост N: 7606
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.11.23 21:46. Заголовок: ELSEIF cCol == &..
ELSEIF cCol == "SELECTOR" oCol:nClrHeadBack := oTsb:n12Clr4Back // фона шапки селектора колонка 1 oCol:nClrFootBack := oTsb:n12Clr10Back // фона подвала селектора колонка 1 Так не работает. Если делаем так, то вылет ! ELSEIF cCol == "SELECTOR" oCol:nClrSelectorHdBack := oTsb:n12Clr4Back // фона шапки селектора колонка 1 oCol:nClrFootBack := oTsb:n12Clr10Back // фона подвала селектора колонка 1
|
|
|
|
| постоянный участник
|
Пост N: 4447
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.11.23 21:53. Заголовок: Andrey Копипастишь ..
Andrey Копипастишь и придумываешь, ты просто посмотри внимательно код выше, по названиям видно
|
|
|
|
| постоянный участник
|
Пост N: 7607
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.11.23 08:57. Заголовок: Вот ещё пример ТСБ в..
Вот ещё пример ТСБ в папке \MiniGUI-23.10\SAMPLES\Advanced\APP_OOPTEMPLATE Окно и таблица строится из ини-файла Demo_timer.cfg Смотреть секцию - [ТАБЛИЦЯ_БД_АБОНЕНТИ] Правая кнопка мышки на ячейке вызывает меню для работы с буфером: Копировать в буфер/Вставить из буфера/Удалить в зависимости от языка. Предусмотрен вызов меню по клику мышки на суперхидере. Повторное открытие базы в другой кодировке на "лету", без закрытия таблицы.
|
|
|
|
| |
Пост N: 232
Зарегистрирован: 17.10.05
|
|
Отправлено: 01.01.24 15:05. Заголовок: Редактирование Memo поля как 'C'
Всех с Новым Годом! Прошу в h_tbrowse.prg сделать изменения в строке 5266 IF ::lIsArr .AND. oCol:cDataType # ValType( uValue ) // GF 15/07/2009 cType := ValType( uValue ) oCol:cDataType := cType ENDIF В моем случае, если cDataType = 'M', то этот блок переводит cDataType в 'C' и дальше не отрабатывает строка 5451 ELSEIF ( cType == "C" .AND. Chr( 13 ) $ uValue ) .OR. cType == "M" .OR. oCol:lEditBox и редактирование переводит на GetBox. Я, конечно, вручную поставил oCol:lEditBox := .T., но хотелось бы автоматически.
|
|
|
|
| moderator
|
Пост N: 2237
Зарегистрирован: 11.02.10
|
|
Отправлено: 01.01.24 16:43. Заголовок: krutoff пишет: в h..
krutoff пишет: цитата: | в h_tbrowse.prg сделать изменения в строке 5266 |
| Благодарю за подсказку. Поправил эту строку для учета "М" типа данных. Мой контрольный пример см. ниже: Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * * Copyright 2021 Sergej Kiselev <bilance@bilance.lv> */ #include "minigui.ch" #include "tsbrowse.ch" #include "dbinfo.ch" STATIC cParent // ----------------------------------- FUNCTION Main() // ----------------------------------- LOCAL cTitle := "Test Browse: Right Click For Record View", ; bSetup := {| oBrw, lAft | SetMyBrowser( oBrw, lAft ) }, ; cFont := "Tahoma", nSize := 10, aArr if !file("test.dbf") CreateTable() endif USE ( hb_dirBase() + "test.dbf" ) NEW aArr := Test->( HMG_DbfToArray() ) SET AUTOADJUST ON NOBUTTONS SET FONT TO cFont, nSize DEFINE FONT Normal FONTNAME cFont SIZE nSize DEFINE FONT Bold FONTNAME cFont SIZE nSize BOLD SET DEFAULT ICON TO GetStartupFolder() + "\demo.ico" DEFINE WINDOW sample AT 0, 0 WIDTH 640 HEIGHT 480 ; TITLE "Open Table via SBrowse" ; MAIN NOSHOW ; ON INIT ( This.Timer_1.Enabled := .T., SBrowse( aArr, cTitle, bSetup,, 950, 430,,, .T. ) ) ; ON RELEASE ( Test->( dbZap() ), Test->( HMG_ArrayToDBF( aArr ) ), dbCloseArea( "Test" ) ) DEFINE TIMER Timer_1 INTERVAL 1000 ACTION iif( Empty( CountChildWindows() ), ThisWindow.Release(), ) This.Timer_1.Enabled := .F. DEFINE TIMER Timer_2 INTERVAL 250 ; ACTION iif( _IsControlDefined( "Btn_1", cParent ), ; ( SetProperty( cParent, "Btn_1", "Enabled", .F. ), ; SetProperty( cParent, "Btn_2", "Enabled", .F. ) ), ) ONCE END WINDOW sample.Center() sample.Activate() RETURN NIL // ----------------------------------- FUNCTION CreateTable // ----------------------------------- dbCreate( "Test", { { "CODE", "C", 3, 0 }, { "NAME", "C", 50, 0 }, { "RESIDENTS", "N", 11, 0 }, { "NOTES", "M", 10, 0 } },, .T. ) dbAppend() REPLACE CODE WITH 'LTU', NAME WITH 'Lithuania', RESIDENTS WITH 3369600 dbAppend() REPLACE CODE WITH 'USA', NAME WITH 'United States of America', RESIDENTS WITH 305397000 dbAppend() REPLACE CODE WITH 'POR', NAME WITH 'Portugal', RESIDENTS WITH 10617600 dbAppend() REPLACE CODE WITH 'POL', NAME WITH 'Poland', RESIDENTS WITH 38115967 dbAppend() REPLACE CODE WITH 'AUS', NAME WITH 'Australia', RESIDENTS WITH 21446187 dbAppend() REPLACE CODE WITH 'FRA', NAME WITH 'France', RESIDENTS WITH 64473140 dbAppend() REPLACE CODE WITH 'RUS', NAME WITH 'Russia', RESIDENTS WITH 141900000 USE RETURN NIL // ----------------------------------- FUNCTION SetMyBrowser( oBrw, lAft ) // ----------------------------------- LOCAL cFormName := oBrw:cParentWnd, cTitle, oCol, ; hFont := GetFontHandle( "Bold" ) IF Empty( lAft ) SetProperty( cFormName, "MinWidth", 950 ) SetProperty( cFormName, "MinHeight", 430 ) cParent := cFormName WITH OBJECT oBrw :nHeightCell += 5 :nHeightHead += 12 :nClrFocuFore := CLR_BLACK :nClrFocuBack := COLOR_GRID :hFontSupHd := hFont :nHeightSuper := oBrw:nHeightHead END WITH cTitle := "Code" ADD SUPER HEADER TO oBrw FROM 1 TO 2 TITLE " Array" ADD SUPER HEADER TO oBrw FROM 3 TO oBrw:nColCount() TITLE cTitle FOR EACH oCol IN oBrw:aColumns oCol:hFontHead := hFont if hb_enumindex(oCol) == 4 oCol:cDataType := "M" endif NEXT ELSE oBrw:GetColumn( "ORDKEYNO" ):hFontFoot := hFont oCol := ATail( oBrw:aColumns ) ATail( oBrw:aSuperHead )[ 2 ] := oBrw:nColumn( oCol:cName ) IF oBrw:nLen > oBrw:nRowCount() oBrw:ResetVScroll( .T. ) ENDIF oBrw:SetNoHoles() oBrw:SetFocus() ENDIF RETURN .T. // editable browse (return .F. is readonly) // ----------------------------------- FUNCTION CountChildWindows // ----------------------------------- LOCAL i, nFormCount := Len ( _HMG_aFormHandles ), nCnt := 0 FOR i := 1 TO nFormCount IF _HMG_aFormType[ i ] <> "A" IF _IsWindowDefined ( _HMG_aFormNames[ i ] ) nCnt++ ENDIF ENDIF NEXT RETURN nCnt
|
|
|
|
|
| |
Пост N: 233
Зарегистрирован: 17.10.05
|
|
Отправлено: 03.01.24 12:37. Заголовок: Динамическая высота строк TSBrowse
Я так понимаю, что динамическая высота строк TSBrowse не предусмотрена? Бывает очень длинная строка и ячейка ее не показывает, обрезает, даже если показывать через CRLF.
|
|
|
|
| постоянный участник
|
Пост N: 4488
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.01.24 14:20. Заголовок: krutoff пишет Я так ..
krutoff пишет цитата: | Я так понимаю, что динамическая высота строк TSBrowse не предусмотрена? |
| есть немного с memo полями, переменные смотрите в коде DATA nMemoHE // memo sizes on edit and view mode DATA nMemoWE // Height in lines and Width in pixels DATA nMemoHV // default: 3 lines height and 200 pixels width DATA nMemoWV и STATIC FUNCTION SetHeights( oBrw ) ... // Now for cells ... IF Empty( oBrw:nMemoHV ) IF At( Chr( 13 ), cHeading ) > 0 oBrw:nMemoHV := Len( hb_ATokens( cHeading, Chr( 13 ) ) ) ENDIF ENDIF DEFAULT oBrw:nMemoHV := 2 Предусмотреть динамическую высоту автоматом, по мне, трудно (тип С), т.к. каждому надо по разному от ширины колонки. Например, я часто использую схему ширина не > 45 символов и на tooltip ячейки вешаю полное содержимое, что бы получить больше колонок в просмотре и не исп. для поля С вставки CRLF для вертикального разбиения показа ячейки, т.к. это съедает строки в просмотре и в др. строках будут пустоты в ячейки, текст короче. PS Проще выделить место на окне показа или отдельное окно, в котором организовать показ длинных полей, при перемешении по тсб в Label-ах, GetBox-ах ReadOnly или EditBox ReadOnly или тсб с вертикальной раскладеой, как по полям одной записи в SBrowse. Ситуация с отдельным окном может оказаться предпочтительней, т.к. вызывать просмотр можно по кнопке или R\L клику
|
|
|
Ответов - 181
, стр:
1
2
3
4
5
6
7
8
9
10
All
[только новые]
|
|