Автор | Сообщение |
|
| постоянный участник
|
Пост 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:....
| |
|
Ответов - 148
, стр:
1
2
3
4
5
6
7
8
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 3974
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.02.15 20:56. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Поправил для следующей сборки... |
| Большое СПАСИБО ! А ПОКА - какой исходник можно самому подправить и к себе в проект поставить ?
| |
|
|
| moderator
|
Пост N: 725
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.02.15 21:59. Заголовок: Andrey пишет: какой..
Andrey пишет: цитата: | какой исходник можно самому подправить |
| Вот этот: click here
| |
|
|
| постоянный участник
|
Пост N: 3976
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.02.15 23:19. Заголовок: Спасибо БОЛЬШОЕ !!! ..
| |
|
|
| постоянный участник
|
Пост N: 4023
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.03.15 20:02. Заголовок: У меня в задаче есть..
У меня в задаче есть меню с ДВУМЯ вкладками Можно ли объект TBROWSE (созданный на 1-ой вкладке) скопировать на вторую вкладку ? PAGE ' 1-я вкладка ' DEFINE TBROWSE oBrw8 ; AT nHTabW,2 ; WIDTH 510 HEIGHT GetClientHeight(hWnd)-(nHButt-1*2) - nHTabW -3 ; ON CHANGE { || MyChangeBrowse8("oBrw8") } ; ON GOTFOCUS MyChangeBrowse8("oBrw8") ; BACKCOLOR aBackColor ; SELECTOR .T. ; CELL END TBROWSE END PAGE PAGE ' 2-я вкладка ' .............. END PAGE
| |
|
|
| постоянный участник
|
Пост N: 4026
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.03.15 17:29. Заголовок: Есть ли возможность ..
Есть ли возможность в МиниГуи копировать объект и располагать на другой форме ? Может мой вопрос неправильный, так скажите пожалуйста...
| |
|
|
| |
Пост N: 4574
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.03.15 17:39. Заголовок: Drag and Drop что ли..
Drag and Drop что ли ?
| |
|
|
| постоянный участник
|
Пост N: 4027
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.03.15 17:47. Заголовок: Dima пишет: Drag an..
Dima пишет: Нет в коде. Чтобы не писать дублирующий код - типа так: PAGE ' 1-я вкладка ' DEFINE TBROWSE oBrw8 ; AT nHTabW,2 ; WIDTH 510 HEIGHT GetClientHeight(hWnd)-(nHButt-1*2) - nHTabW -3 ; ON CHANGE { || MyChangeBrowse8("oBrw8") } ; ON GOTFOCUS MyChangeBrowse8("oBrw8") ; BACKCOLOR aBackColor ; SELECTOR .T. ; CELL END TBROWSE END PAGE PAGE ' 2-я вкладка ' DEFINE TBROWSE oBrw7 ; AT nHTabW,2 ; WIDTH 510 HEIGHT GetClientHeight(hWnd)-(nHButt-1*2) - nHTabW -3 ; ON CHANGE { || MyChangeBrowse8("oBrw7") } ; ON GOTFOCUS MyChangeBrowse8("oBrw7") ; BACKCOLOR aBackColor ; SELECTOR .T. ; CELL END TBROWSE END PAGE Есть ли команды - скопировать объект и разместить на форме ?
| |
|
|
| |
Пост N: 488
Зарегистрирован: 20.02.11
|
|
Отправлено: 03.03.15 17:54. Заголовок: Andrey пишет: Чтобы..
Andrey пишет: цитата: | Чтобы не писать дублирующий код |
| оформляй его в виде функции или процедуры один раз и вызывай сколько и где хош
| |
|
|
| постоянный участник
|
Пост N: 4028
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.03.15 18:13. Заголовок: А как привязать этот..
А как привязать этот объект из функции на 1-ю и 2-у вкладку.
| |
|
|
| moderator
|
Пост N: 733
Зарегистрирован: 11.02.10
|
|
Отправлено: 03.03.15 18:18. Заголовок: Andrey пишет: как п..
Andrey пишет: цитата: | как привязать этот объект из функции на 1-ю и 2-у вкладку |
| Посмотри рабочий пример ниже Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * */ #include "minigui.ch" #include "TSBrowse.ch" #translate dbcreate(<file>, <struct>) => hb_dbcreatetemp(<file>, <struct>) Function Main dbcreate('test',{{'nazwa','C',30,0},; {'ilosc','N',12,2},; {'cena','N',14,2}}) if select('test') == 0 dbusearea(.t.,,'test') endif for i := 1 to 100 test->(dbappend()) test->nazwa := "Item " + hb_ntos(i) test->ilosc := test->(recno()) test->cena := (test->ilosc * HB_Random(100)) next test->(dbgotop()) define window tabsample at 0,0 width 400 height 300 title 'Add control test' main DEFINE TBROWSE Brw_1 AT 10, 10 OF o_dlu ALIAS "test" WIDTH 330 HEIGHT 120 ADD COLUMN TO Brw_1 DATA {|| test->nazwa } ALIGN DT_LEFT, DT_CENTER, DT_CENTER ; TITLE 'Nazwa' SIZE 100 ADD COLUMN TO Brw_1 DATA {|| test->ilosc } ALIGN DT_RIGHT, DT_CENTER,DT_CENTER TITLE 'Ilosc' SIZE 70 ADD COLUMN TO Brw_1 DATA {|| test->cena } ALIGN DT_RIGHT, DT_CENTER, DT_CENTER TITLE 'Cena' SIZE 70 Brw_1:SetColor( { 2 }, { { | | IIf( test->(OrdKeyNo()) % 2 == 0, RGB(255,255,255), RGB(230, 230, 230) ) }}) Brw_1:nHeightCell += 6 Brw_1:nHeightFoot += 4 Brw_1:nWheelLines := 1 Brw_1:nHeightHead := 14 END TBROWSE tabsample.Brw_1.Hide define tab tab1 at 10,10 width 370 height 220 define page 'Page1' define button b1 row 30 col 10 caption 'Press here to add a control' width 180 action addnewcontrols({'lbl1','text1'}) end button end page define page 'Page2' define button b2 row 30 col 10 caption 'Press here to add a control' width 180 action addnewcontrol2('Brw_1') end button end page end tab on key escape action thiswindow.release() end window tabsample.center tabsample.activate Return nil function addnewcontrols(actrl) local c1, c2 c1 := actrl[1] c2 := actrl[2] if iscontroldefined(&c1,tabsample) tabsample.&(c1).release endif define label &c1 parent tabsample row 50 col 10 width 40 value 'label' end label if iscontroldefined(&c2,tabsample) tabsample.&(c2).release endif define textbox &c2 parent tabsample row 50 col 50 width 100 end textbox tabsample.tab1.addcontrol(c1,1,84,10) tabsample.tab1.addcontrol(c2,1,80,50) return nil function addnewcontrol2(ctrl) if iscontroldefined(&ctrl,tabsample) tabsample.&(ctrl).Show endif tabsample.tab1.addcontrol(ctrl,2,80,10) return nil
|
| |
|
|
| постоянный участник
|
Пост N: 4029
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.03.15 18:36. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Посмотри рабочий пример ниже |
| А сразу объект TBROWSE на 1-ю и вторую вкладку можно разместить ? Без кнопочек открыть ?
| |
|
|
|
| moderator
|
Пост N: 734
Зарегистрирован: 11.02.10
|
|
Отправлено: 03.03.15 18:53. Заголовок: Andrey пишет: А сра..
Andrey пишет: цитата: | А сразу объект TBROWSE на 1-ю и вторую вкладку |
| Да, по команде ниже цитата: | <Имя формы>.<Имя TAB>.addcontrol(<Имя TBROWSE>,<Номер вкладки TAB>,<Номер ряда>,<Номер колонки>) |
|
| |
|
|
| постоянный участник
|
Пост N: 4030
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.03.15 19:05. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Спасибо БОЛЬШОЕ ! Буду разбираться...
| |
|
|
| постоянный участник
|
Пост N: 4068
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.03.15 11:16. Заголовок: Andrey пишет: Тольк..
Andrey пишет: цитата: | Только до редактирования же НЕ ДОХОДИТ !!! Я колёсиком вверх-вниз и алиас уже слетает !!! Т.е. стоя на 5-7 записях в справочнике уже видно что база отвалилась !!! Andrey пишет: цитата: Сделал новый тест в функции MyFieldEdit() до начала редактирования при слёте базы: MsgDebug(oBrw_1:nLen, ALIAS(), oBrw_1:cAlias ) MsgDebug( "RLock()=", (oBrw_1:cAlias)->(RLock()) ) Т.е. колёсиком подергал вверх-вниз на 5 записях, функция MyChangeBrowse(cAlias) показывает 0/0 начинаю редактировать: 1. MsgDebug показывает 5, "", "STREET" 2. MsgDebug показывает "RLock()=" .T. Т.е. АЛИАС по всей задачи ALIAS() = "" - убит !!! Кем ? На экране таблица есть (в объекте) а все связи разорваны ! А вот еще облом, если записей много колёсиком-мышки нужно подергать вверх-вниз (просто на экране, не на всю длину) и то же вылетает .... 0/0 записей.... |
| Возвращаюсь опять к предыдущей теме. Теперь прога стала "сваливаться" на редактирование базы, то нормально редактирует, то нет. Закономерностей нет. После некоторого анализа, дошло до меня.... После запуска программы, на главной форме я повесил таймер для перечитывания(открытие/закрытие) базы-журнала работающих в программе... Может дело в этом ?
| |
|
|
| постоянный участник
|
Пост N: 4069
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.03.15 11:21. Заголовок: Haz пишет: не убит,..
Haz пишет: цитата: | не убит, где-то сработал Select(0) вот и стал текущим пустой алиас. На 99% уверен что если твой RecLock() вызывать из алиасного выражения STREET->(RecLock()) то ошибка уйдет. Но это костыль, а не исправление ошибки. По уму надо найти "виновника" |
| Виновник найден ! Совсем мало прошло, чуть больше месяца....
| |
|
|
| постоянный участник
|
Пост N: 627
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.05.15 09:54. Заголовок: Простая конструкция ..
Простая конструкция TsBrowse не включает корректировку (удаление работает) : @ 10,10 TBROWSE oBrw5 ALIAS "Test" OF Form_1 ; WIDTH 350 HEIGHT 380 CELLED; HEADERS "Code","First","Last","Birth","Bio" ; WIDTHS 50,150,150,100,200 ; FIELDS Test->Code,Test->First,Test->Last,Test->Birth,Test->Bio ; VALUE 1 ; BACKCOLOR YELLOW ; FONTCOLOR BLUE ; LOCK ; DELETE ; EDITABLE добавление доп. манипуляции исправляет ситуацию корректировки: k := len(oBrw5:aColumns) FOR i := 1 TO k oBrw5:aColumns[ i ]:lEdit := ( i < k ) NEXT но это лишние телодвижения ... Отключение корректировки - результат не передачи в методе Default() параметра ::lEditable h_tsbrowse.prg (line 1779) ::AddColumn( TSColumn():New( ::aHeaders[ nI ], bBlock, ::aFormatPic[nI], { ::nClrText, ::nClrPane, ; ::nClrHeadFore, ::nClrHeadBack, ::nClrFocuFore, ::nClrFocuBack }, ; {aJustify[ nI ], 1}, ::aColSizes[ nI ],::lEditable, ; // здесь не задан параметр ValType( Eval( ::bLine )[ nI ] ) == "B",,,,,,, ; 5,, {.F., .T.},, Self, cBlock ) ) это неточность или задумано специально ?
| |
|
|
| постоянный участник
|
Пост N: 628
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.05.15 19:36. Заголовок: SergKis пишет:{aJust..
SergKis пишет: цитата: | {aJustify[ nI ], 1}, ::aColSizes[ nI ],::lEditable, ; // здесь не задан параметр |
| немного промахнулся в запятых, надо так: ::AddColumn( TSColumn():New( ::aHeaders[ nI ], bBlock, ::aFormatPic[nI], { ::nClrText, ::nClrPane, ; ::nClrHeadFore, ::nClrHeadBack, ::nClrFocuFore, ::nClrFocuBack }, ; {aJustify[ nI ], 1}, ::aColSizes[ nI ],, ; (::lEditable .or. ValType( Eval( ::bLine )[ nI ] ) == "B"),,,,,,, ; 5,, {.F., .T.},, Self, cBlock ) ) так работает
| |
|
|
| постоянный участник
|
Пост N: 629
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.05.15 20:00. Заголовок: Продолжаю мучить про..
Продолжаю мучить простой вариант TsBrowse, добавил @ 10,10 TBROWSE oBrw5 ALIAS "Test" OF Form_1 ; WIDTH 350 HEIGHT 380 CELLED; HEADERS "Code","First","Last","Birth","Bio" ; WIDTHS 50,150,150,100,200 ; FIELDS Test->Code,Test->First,Test->Last,Test->Birth,Test->Bio ; VALUE 1 ; BACKCOLOR YELLOW ; FONTCOLOR BLUE ; READONLY {.T.,.T.,.T.,.T.,.F.} ; LOCK ; DELETE ; EDITABLE и ... упс ... READONLY подвешен в воздухе, упоминается в Function _DefineTBrowse (...) как HB_SYMBOL_UNUSED( readonly ) и все, т.е. вынесено из define ... "как трудно жить" (c), перевести простой browse, на простой TBrowse
| |
|
|
| moderator
|
Пост N: 749
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.05.15 12:25. Заголовок: SergKis пишет: Прос..
SergKis пишет: цитата: | Простая конструкция TsBrowse не включает корректировку |
| Благодарю за помощь. Уже включил это исправление в следующую сборку
| |
|
|
| постоянный участник
|
Пост N: 630
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.05.15 19:05. Заголовок: SergKis пишет:переве..
SergKis пишет: цитата: | перевести простой browse, на простой TBrowse |
| победил так ( h_tsbrowse.prg): Function _DefineTBrowse ( ... ) ... LOCAL i, j, k, n // BK 18.05.2015 ... if ValType(aColSel) != 'U' .and. ValType(aColSel) =='A' IF ValType(aColSel[1]) =='A' aColSel := aColSel[1] endif endif IF valtype(uWhen) == 'B' // BK 18.05.2015 IF valtype(readonly) != 'A' // readonly := eval(uWhen) // ENDIF // uWhen := Nil // иначе снятие ENDIF // IF valtype(valid) == 'B' // valid := eval(valid) // ENDIF // BK if ( FontHandle := GetFontHandle( FontName ) ) != 0 ... oBrw := TSBrowse():New( ControlName, nRow, nCol, nWidth, nHeight,; bFields, aHeaders, aWidths, ParentFormName,; change , bDblClick, bRClick, fontname, fontsize, ; hCursor, aTmpColor , aBmp, cMsg, update, uAlias, uWhen, value, cell,; nStyle, bLClick, aFlds, aHeadClick, nLineStyle, lRePaint,; Delete, aJust, lock, appendable, lEnum,; lAutoSearch, uUserSearch, lAutoFilter, uUserFilter, aPicture, ; lTransparent, uSelector, lEditable, lAutoCol, aColSel, tooltip) IF ( k := len(oBrw:aColumns) ) > 0 // BK 18.05.2015 IF valtype(readonly) == 'A' // sets oCol:bWhen n := Min(len(readonly), k) // FOR i := 1 TO n // j := readonly[ i ] // IF valtype(j) == 'B' // oBrw:aColumns[ i ]:bWhen := j // ELSEIF j == NIL .or. ! empty(j) // oBrw:aColumns[ i ]:bWhen := {||.T.} // oBrw:aColumns[ i ]:cWhen := '{||.T.}' // ELSE // oBrw:aColumns[ i ]:bWhen := {||.F.} // oBrw:aColumns[ i ]:cWhen := '{||.F.}' // ENDIF // NEXT // ENDIF // IF valtype(valid) == 'A' // sets oCol:bValid n := Min(len(valid), k) // FOR i := 1 TO n // IF valtype(valid[ i ]) == 'B' // oBrw:aColumns[ i ]:bValid := valid[ i ] // ENDIF // NEXT // ENDIF // ENDIF // BK ... ControlHandle := oBrw:hWnd IF ValType(gotfocus) != "U" ... Работает: @ 10,10 TBROWSE oBrw5 ALIAS "Test" OF Form_1 ; WIDTH 350 HEIGHT 380 CELLED; HEADERS "Code","First","Last","Birth","Bio" ; WIDTHS 50,150,150,100,200 ; FIELDS Test->Code,Test->First,Test->Last,Test->Birth,Test->Bio ; VALUE 1 ; BACKCOLOR YELLOW ; FONTCOLOR BLUE ; VALID {{|v,o| myValid(1, v, o)}, {|v,o| myValid(2, v, o)} } ; READONLY {{|o| myROnly(1, o)},.T.,.T.,.T.,.F.} ; LOCK ; DELETE ; EDITABLE @ 10,10 TBROWSE oBrw5 ALIAS "Test" OF Form_1 ; WIDTH 350 HEIGHT 380 CELLED; HEADERS "Code","First","Last","Birth","Bio" ; WIDTHS 50,150,150,100,200 ; FIELDS Test->Code,Test->First,Test->Last,Test->Birth,Test->Bio ; VALUE 1 ; BACKCOLOR YELLOW ; FONTCOLOR BLUE ; WHEN {{|o| myWhen(1, o)}, {|o| myWhen(2, o)}, {|o| myWhen(3, o)}, {|o| myWhen(4, o)}, .F.} ; VALID {{|v,o| myValid(1, v, o)}, {|v,o| myValid(2, v, o)}, , , } ; LOCK ; DELETE ; EDITABLE
| |
|
Ответов - 148
, стр:
1
2
3
4
5
6
7
8
All
[только новые]
|
|
|