Автор | Сообщение |
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: 1293
Зарегистрирован: 17.02.12
|
|
Отправлено: 12.11.16 10:22. Заголовок: Делал для Andrey при..
| |
|
SergKis
|
| постоянный участник
|
Пост N: 1294
Зарегистрирован: 17.02.12
|
|
Отправлено: 12.11.16 10:49. Заголовок: PS копипастил и забы..
PS копипастил и забыл исправить в примере из Tsb_form_1.7z функция MyButton на всех кнопках надо заменить ACTION ( MsgBox(This.Name+CRLF+This.BaseName.Value, cForm), ; TBrw_Obj(cBrw, cForm):SetFocus() ) ;
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1040
Зарегистрирован: 11.02.10
|
|
Отправлено: 22.11.16 12:05. Заголовок: Почему не работает поиск?
Задачка для знатоков TSBrowse Получил такой вопрос (в заголовке поста) на бразильском форуме. Текст примера см. ниже Скрытый текст
REQUEST DBFCDX #include "minigui.ch" #include "tsbrowse.ch" #Include "fileio.ch" #Include "directry.ch" #include "miniprint.ch" #include "winprint.ch" #define KON_LIN chr( 13 ) + chr( 10 ) #define CC_FULLOPEN 2 #define CC_PREVENTFULLOPEN 4 #define CC_RGBINIT 1 #define CC_SHOWHELP 8 #define CC_SOLIDCOLOR 128 #define CC_ANYCOLOR 256 // 0x00000100 #define AZUL { 0 , 128 , 192 } #define CELESTE { 0 , 128 , 255 } #define VERDE { 0 , 128 , 128 } #define CAFE { 128 , 64 , 0 } #define nRGB( nR, nG, nB ) ( nR + ( nG * 256 ) + ( nB * 256 * 256 ) ) #define CLR_CHBLUE { 0, 128, 255 } && Azul claro #define CLR_CHGREEN { 0, 175, 85 } && Verde #define CLR_CHRED { 128, 0, 0 } && cores puras #define CLR_CHBLACK { 255, 255, 255 } && cores puras #define CLR_HRED nRGB( 128, 0, 0 ) && cores puras #define CLR_BLACK nRGB( 0, 0, 0 ) && cores puras #define CLR_CHCYAN { 0, 128, 128 } #define CLR_CHHBLUE { 100, 175, 255 } && Azul bem claro #define CLR_CHHYELLOW nRGB( 255, 255, 95 ) && Amarelo bem claro #define CLR_CHHGREEN nRGB( 200, 255, 200 ) && Verde bem claro #define CLR_HGRAY { 128, 128, 128 } && Cinza mais escuro #define CLR_TGRAY nRGB( 200, 200, 200 ) && Cinza claro #define CLR_NBLUE nRGB( 185, 220, 255 ) && Azul medio #define CLR_CBLUE nRGB( 30, 170, 220 ) && Azul medio #define CLR_BGRAY nRGB( 100, 100, 100 ) && cinza claro da tela #define VERDECL { 0, 255, 0 } #define DGRAY { 169, 169, 169 } && Cinza escuro #define GBLUE { 80, 180, 235 } #define ZBLUE { 46, 126, 159 } #define DBLUE { 3, 45, 73 } #define NBLUE { 185, 220, 255 } #define FGRAY { 168, 168, 168 } && Cinza medio mais escuro #define HGRAY { 188, 188, 188 } && Cinza medio claro #define TGRAY { 200, 200, 200 } && Cinza claro #define CLR_BACKGET { { 255, 255, 255 }, { 233, 233, 233 }, { 0, 220, 255 } } && branco, amarelo claro, azul claro #define CLR_BACKGET1 { { 255, 255, 190 }, { 255, 255, 200 }, { 200, 255, 255 } } && amarelo claro, amarelo claro, azul claro #define CLR_BACKGET2 { { 100, 175, 255 }, { 255, 255, 200 }, { 200, 255, 255 } } && azul medio, amarelo claro, azul claro #define CLR_PINK nRGB( 255, 128, 128) #define CLR_NCBLUE nRGB( 128, 128, 192) #define CLR_NBROWN nRGB( 130, 99, 53) #define CLR_1 nRGB( 190, 215, 190 ) #define CLR_2 nRGB( 230, 230, 230 ) #define CLR_3 nRGB( 217, 217, 255 ) #define CLR_VERDE { 0, 128, 128 } #define pRED 0x3300CC #define pGREEN 0x339966 #define pBLUE 0xCC0000 #define pGRAY 0xCCCCCC Function Main() Local NomArq1 := {} Local NomArq2 := {} Local NomArq3 := {} AAdd( NomArq1, { 'CODIGO', 'C', 2, 0 } ) AAdd( NomArq1, { 'DESCRI', 'C', 50, 0 } ) If !File( 'File1.DBF' ) DBCreate( 'File1.DBF', NomArq1, 'DBFCDX' ) EndIf Use File1 Alias File1 Via 'DBFCDX' Index On Codigo Tag F01 To File1.Cdx Index On Descri Tag F02 To File1.Cdx J := 0 For i = 1 To 12 File1->( DBAppend() ) File1->Codigo := StrZero( j, 2 ) File1->Descri := 'Product Name ' + StrZero( j, 2 ) j += 5 Next AAdd( NomArq2, { 'CODIGO', 'C', 4, 0 } ) AAdd( NomArq2, { 'DESCRI', 'C', 50, 0 } ) If !File( 'File2.DBF' ) DBCreate( 'File2.DBF', NomArq2, 'DBFCDX' ) EndIf Use File2 Alias File2 Via 'DBFCDX' New Index On Codigo Tag F01 To File2.Cdx Index On Descri Tag F02 To File2.Cdx J := 0 For i = 1 To 30 File2->( DBAppend() ) File2->Codigo := StrZero( j, 4 ) File2->Descri := 'Product Name ' + StrZero( j, 4 ) j += 500 Next AAdd( NomArq3, { 'CODIGO', 'C', 3, 0 } ) AAdd( NomArq3, { 'DESCRI', 'C', 50, 0 } ) If !File( 'File3.DBF' ) DBCreate( 'File3.DBF', NomArq3, 'DBFCDX' ) EndIf Use File3 Alias File3 Via 'DBFCDX' New Index On Codigo Tag F01 To File3.Cdx Index On Descri Tag F02 To File3.Cdx J := 0 For i = 1 To 24 File3->( DBAppend() ) File3->Codigo := StrZero( j, 3 ) File3->Descri := 'Product Name ' + StrZero( j, 3 ) j += 10 Next If !File( 'File4.DBF' ) DBCreate( 'File4.DBF', NomArq1, 'DBFCDX' ) EndIf Use File4 Alias File4 Via 'DBFCDX' New Index On Codigo Tag F01 To File4.Cdx Index On Descri Tag F02 To File4.Cdx J := 0 For i = 1 To 12 File4->( DBAppend() ) File4->Codigo := StrZero( j, 2 ) File4->Descri := 'Product Name ' + StrZero( j, 2 ) j += 5 Next cClassif := '10050002010' If !( IsWindowDefined( oAuxDSMG ) ) Define Window oAuxDSMG AT 0,0 Width 870 Height 519 Main NoCaption NoSysMenu NoSize On Init { || oAuxDSMGPosi() } On InteractiveClose { || oAuxDSMGCanc() } On Key ESCAPE Of oAuxDSMG Action { || oAuxDSMGCanc() } @ 0, 0 Label 1 Value '' Width 870 Height 110 BackColor BLUE @ 12, 10 Label Lb_xaa Value 'File1-File2-File3-File4' Width 600 Height 36 Font 'ARIAL' Size 24 Bold FontColor WHITE Transparent @ 14, 12 Label Lb_xab Value 'File1-File2-File3-File4' Width 600 Height 36 Font 'ARIAL' Size 24 Bold FontColor BLACK Transparent @ 13, 11 Label Lb_xac Value 'File1-File2-File3-File4' Width 600 Height 36 Font 'ARIAL' Size 24 Bold FontColor GBLUE Transparent //File1 Select("File1") @ 72, 10 Label Lb_cdv Value SubStr( cClassif, 1, 2 ) Width 30 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 72, 42 Label Lb_tdv Value 'File1' Width 178 Height 20 Font 'ARIAL' Size 10 Bold FontColor BLACK BackColor WHITE ClientEdge CenterAlign @ 94, 10 Label Lb_ddv Value File1->Descri Width 210 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 116, 10 TBrowse oBrw_Div Of oAuxDSMG Width 210 Height 346 Alias 'File1' CELLED On Change ChangeTD() Add Column To oBrw_Div Header 'Cod.' Data FieldWBlock( 'Codigo', Select() ) Picture '99' 3DLOOK FALSE,TRUE Size 40 Align DT_LEFT Add Column To oBrw_Div Header 'Descricao' Data FieldWBlock( 'Descri', Select() ) Picture '@!' 3DLOOK FALSE,TRUE Size 170 Align DT_LEFT oBrw_Div:Set3DText( .T., .F., Nil, 2, CLR_WHITE, CLR_CBLUE ) oBrw_Div:SetColor( { 1, 3, 5, 6, 13, 15 }, ; { CLR_BLACK, CLR_BLUE, CLR_WHITE, ; { CLR_BLUE, CLR_HBLUE }, ; // degraded cursor background color CLR_WHITE, CLR_BLACK } ) // text colors oBrw_Div:SetColor( { 2, 4, 14 }, ; { { || IIf( oBrw_Div:nLogicPos() % 2 == 0, { CLR_TGRAY, CLR_WHITE }, { CLR_CHHGREEN, CLR_WHITE } ) }, ; { CLR_CBLUE, CLR_NBLUE }, ; // degraded Headers backgroud color { CLR_HRED, CLR_BLACK } } ) // degraded order column background color oBrw_Div:nHeightCell += 8 oBrw_Div:nHeightHead += 11 oBrw_Div:nLineStyle := LINES_VERT oBrw_Div:SetAppendMode( .F. ) oBrw_Div:lNoHScroll := .T. //Secao Select("File2") @ 72, 223 Label Lb_csc Value SubStr( cClassif, 3, 4 ) Width 50 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 72, 275 Label Lb_tsc Value 'File2' Width 158 Height 20 Font 'ARIAL' Size 10 Bold FontColor BLACK BackColor WHITE ClientEdge CenterAlign @ 94, 223 Label Lb_dsc Value File2->Descri Width 210 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 116, 223 TBrowse oBrw_Sec Of oAuxDSMG Width 210 Height 346 Alias 'File2' CELLED On Change ChangeTS() Add Column To oBrw_Sec Header 'Cod.' Data FieldWBlock( 'Codigo', Select() ) Picture '9999' 3DLOOK FALSE,TRUE Size 40 Align DT_LEFT Add Column To oBrw_Sec Header 'Descricao' Data FieldWBlock( 'Descri', Select() ) Picture '@!' 3DLOOK FALSE,TRUE Size 170 Align DT_LEFT oBrw_Sec:Set3DText( .T., .F., Nil, 2, CLR_WHITE, CLR_CBLUE ) oBrw_Sec:SetColor( { 1, 3, 5, 6, 13, 15 }, ; { CLR_BLACK, CLR_BLUE, CLR_WHITE, ; { CLR_BLUE, CLR_HBLUE }, ; // degraded cursor background color CLR_WHITE, CLR_BLACK } ) // text colors oBrw_Sec:SetColor( { 2, 4, 14 }, ; { { || IIf( oBrw_Sec:nLogicPos() % 2 == 0, { CLR_TGRAY, CLR_WHITE }, { CLR_CHHGREEN, CLR_WHITE } ) }, ; { CLR_CBLUE, CLR_NBLUE }, ; // degraded Headers backgroud color { CLR_HRED, CLR_BLACK } } ) // degraded order column background color oBrw_Sec:nHeightCell += 8 oBrw_Sec:nHeightHead += 11 oBrw_Sec:nLineStyle := LINES_VERT oBrw_Sec:SetAppendMode( .F. ) oBrw_Sec:lNoHScroll := .T. //File3 Select("File3") @ 72, 436 Label Lb_cma Value SubStr( cClassif, 7, 3 ) Width 40 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 72, 478 Label Lb_tma Value 'File3' Width 168 Height 20 Font 'ARIAL' Size 10 Bold FontColor BLACK BackColor WHITE ClientEdge CenterAlign @ 94, 436 Label Lb_dma Value File3->Descri Width 210 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 116, 436 TBrowse oBrw_Mar Of oAuxDSMG Width 210 Height 346 Alias 'File3' CELLED On Change ChangeTM() Add Column To oBrw_Mar Header 'Cod.' Data FieldWBlock( 'Codigo', Select() ) Picture '999' 3DLOOK FALSE,TRUE Size 40 Align DT_LEFT Add Column To oBrw_Mar Header 'Descricao' Data FieldWBlock( 'Descri', Select() ) Picture '@!' 3DLOOK FALSE,TRUE Size 170 Align DT_LEFT oBrw_Mar:Set3DText( .T., .F., Nil, 2, CLR_WHITE, CLR_CBLUE ) oBrw_Mar:SetColor( { 1, 3, 5, 6, 13, 15 }, ; { CLR_BLACK, CLR_BLUE, CLR_WHITE, ; { CLR_BLUE, CLR_HBLUE }, ; // degraded cursor background color CLR_WHITE, CLR_BLACK } ) // text colors oBrw_Mar:SetColor( { 2, 4, 14 }, ; { { || IIf( oBrw_Mar:nLogicPos() % 2 == 0, { CLR_TGRAY, CLR_WHITE }, { CLR_CHHGREEN, CLR_WHITE } ) }, ; { CLR_CBLUE, CLR_NBLUE }, ; // degraded Headers backgroud color { CLR_HRED, CLR_BLACK } } ) // degraded order column background color oBrw_Mar:nHeightCell += 8 oBrw_Mar:nHeightHead += 11 oBrw_Mar:nLineStyle := LINES_VERT oBrw_Mar:SetAppendMode( .F. ) oBrw_Mar:lNoHScroll := .T. //File4 Select("File4") @ 72, 649 Label Lb_cgr Value SubStr( cClassif, 10, 2 ) Width 30 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 72, 681 Label Lb_tgr Value 'File4' Width 178 Height 20 Font 'ARIAL' Size 10 Bold FontColor BLACK BackColor WHITE ClientEdge CenterAlign @ 94, 649 Label Lb_dgr Value File4->Descri Width 210 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 116, 649 TBrowse oBrw_Gru Of oAuxDSMG Width 210 Height 346 Alias 'File4' CELLED On Change ChangeTG() Add Column To oBrw_Gru Header 'Cod.' Data FieldWBlock( 'Codigo', Select() ) Picture '99' 3DLOOK FALSE,TRUE Size 40 Align DT_LEFT Add Column To oBrw_Gru Header 'Descricao' Data FieldWBlock( 'Descri', Select() ) Picture '@!' 3DLOOK FALSE,TRUE Size 170 Align DT_LEFT oBrw_Gru:Set3DText( .T., .F., Nil, 2, CLR_WHITE, CLR_CBLUE ) oBrw_Gru:SetColor( { 1, 3, 5, 6, 13, 15 }, ; { CLR_BLACK, CLR_BLUE, CLR_WHITE, ; { CLR_BLUE, CLR_HBLUE }, ; // degraded cursor background color CLR_WHITE, CLR_BLACK } ) // text colors oBrw_Gru:SetColor( { 2, 4, 14 }, ; { { || IIf( oBrw_Gru:nLogicPos() % 2 == 0, { CLR_TGRAY, CLR_WHITE }, { CLR_CHHGREEN, CLR_WHITE } ) }, ; { CLR_CBLUE, CLR_NBLUE }, ; // degraded Headers backgroud color { CLR_HRED, CLR_BLACK } } ) // degraded order column background color oBrw_Gru:nHeightCell += 8 oBrw_Gru:nHeightHead += 11 oBrw_Gru:nLineStyle := LINES_VERT oBrw_Gru:SetAppendMode( .F. ) oBrw_Gru:lNoHScroll := .T. @ 480, 10 Label Lb_xxx Value '' Width 210 Height 32 Font 'ARIAL' Size 22 Bold FontColor RED BackColor WHITE CenterAlign @ 480, 760 ButtonEx IBTCancelar Caption '&Cancelar' Width 100 Height 32 Font 'ARIAL' Size 7 Bold FontColor GBLUE ToolTip 'Fecha janela, retorna ao navegador' Action { || oAuxDSMGCanc() } //On GotFocus Exibe( 'Click To Close Window' ) End Window Center Window oAuxDSMG Activate Window oAuxDSMG Else oAuxDSMG.SetFocus EndIf Return( .T. ) * -------------------------> Rotina para gravar dados <----------------------- * Function oAuxDSMGPosi() cClassif := oAuxDSMG.Lb_xxx.Value If cClassif <> Space( 11 ) File1->( DBSetOrder( 1 ) ) File1->( DBSeek( SubStr( cClassif, 1, 2 ) ) ) File1->( DBSetOrder( 2 ) ) oAuxDSMG.oBrw_Div.Value := File1->( RecNo() ) oBrw_Div:SetFocus() oBrw_Div:DrawSelect() oBrw_Div:Refresh( .T. ) For i = 1 To 13 oBrw_Div:RefreshARow( i ) Next File2->( DBSetOrder( 1 ) ) File2->( DBSeek( SubStr( cClassif, 3, 4 ) ) ) File2->( DBSetOrder( 2 ) ) oAuxDSMG.oBrw_Sec.Value := File2->( RecNo() ) oBrw_Sec:SetFocus() oBrw_Sec:DrawSelect() oBrw_Sec:Refresh( .T. ) For i = 1 To 13 oBrw_Sec:RefreshARow( i ) Next File3->( DBSetOrder( 1 ) ) File3->( DBSeek( SubStr( cClassif, 7, 3 ) ) ) xRec := File3->( RecNo() ) File3->( DBSetOrder( 2 ) ) oAuxDSMG.oBrw_Mar.Value := File3->( RecNo() ) oBrw_Mar:SetFocus() oBrw_Mar:DrawSelect() oBrw_Mar:Refresh( .T. ) For i = 1 To 13 oBrw_Mar:RefreshARow( i ) Next File4->( DBSetOrder( 1 ) ) File4->( DBSeek( SubStr( cClassif, 10, 2 ) ) ) File4->( DBSetOrder( 2 ) ) oAuxDSMG.oBrw_Gru.Value := File4->( RecNo() ) oBrw_Gru:SetFocus() oBrw_Gru:DrawSelect() oBrw_Gru:Refresh( .T. ) For i = 1 To 13 oBrw_Gru:RefreshARow( i ) Next EndIf oBrw_Div:SetFocus() oAuxDSMG.Lb_cdv.Value := File1->Codigo oAuxDSMG.Lb_csc.Value := File2->Codigo oAuxDSMG.Lb_cma.Value := File3->Codigo oAuxDSMG.Lb_cgr.Value := File4->Codigo oAuxDSMG.Lb_ddv.Value := File1->Descri oAuxDSMG.Lb_dsc.Value := File2->Descri oAuxDSMG.Lb_dma.Value := File3->Descri oAuxDSMG.Lb_dgr.Value := File4->Descri oAuxDSMG.Lb_xxx.Value := oAuxDSMG.Lb_cdv.Value + oAuxDSMG.Lb_csc.Value + oAuxDSMG.Lb_cma.Value + oAuxDSMG.Lb_cgr.Value Return( .T. ) * ------------------------> Rotina para atualizar dados <--------------------- * Function ChangeTD() Local xClassif := oAuxDSMG.Lb_xxx.Value oAuxDSMG.Lb_cdv.Value := File1->Codigo oAuxDSMG.Lb_ddv.Value := File1->Descri oAuxDSMG.Lb_xxx.Value := oAuxDSMG.Lb_cdv.Value + SubStr( xClassif, 3, 8 ) Return( .T. ) * ------------------------> Rotina para atualizar dados <--------------------- * Function ChangeTS() Local xClassif := oAuxDSMG.Lb_xxx.Value oAuxDSMG.Lb_csc.Value := File2->Codigo oAuxDSMG.Lb_dsc.Value := File2->Descri oAuxDSMG.Lb_xxx.Value := SubStr( xClassif, 1, 2 ) + oAuxDSMG.Lb_csc.Value + SubStr( xClassif, 7, 5 ) Return( .T. ) * ------------------------> Rotina para atualizar dados <--------------------- * Function ChangeTM() Local xClassif := oAuxDSMG.Lb_xxx.Value oAuxDSMG.Lb_cma.Value := File3->Codigo oAuxDSMG.Lb_dma.Value := File3->Descri oAuxDSMG.Lb_xxx.Value := SubStr( xClassif, 1, 6 ) + oAuxDSMG.Lb_cma.Value + SubStr( xClassif, 10, 2 ) Return( .T. ) * ------------------------> Rotina para atualizar dados <--------------------- * Function ChangeTG() Local xClassif := oAuxDSMG.Lb_xxx.Value oAuxDSMG.Lb_cgr.Value := File4->Codigo oAuxDSMG.Lb_dgr.Value := File4->Descri oAuxDSMG.Lb_xxx.Value := SubStr( xClassif, 1, 9 ) + oAuxDSMG.Lb_cgr.Value Return( .T. ) * ----------------------> Rotina para fechar janela ativa <------------------- * Function oAuxDSMGCanc() If IsWindowDefined( oAuxDSMG ) Release Window oAuxDSMG EndIf Return( .T. )
|
| |
|
SergKis
|
| постоянный участник
|
Пост N: 1304
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.11.16 15:54. Заголовок: gfilatov2002 пишет П..
gfilatov2002 пишет цитата: | Получил такой вопрос ... Почему не работает поиск? |
| 1. J := 0 For i = 1 To 30 File2->( DBAppend() ) File2->Codigo := StrZero( j, 4 ) File2->Descri := 'Product Name ' + StrZero( j, 4 ) j += 500 // будет переполнение StrZero( j, 4 ), т.е. **** Next 2. Function oAuxDSMGPosi() cClassif := oAuxDSMG.Lb_xxx.Value _LogFile(.T., cClassif) // ==> 00000000000 If cClassif <> Space( 11 ) // это не сработает, т.к. len(cClassif) == 11 тут 3. Так работает Function Main() Local NomArq1 := {} Local NomArq2 := {} Local NomArq3 := {} PRIV cClassif, oBrw_Div, oBrw_Sec, oBrw_Mar, oBrw_Gru SET SOFTSEEK ON RDDSETDEFAULT('DBFCDX') FErase('File1.DBF') FErase('File1.CDX') FErase('File2.DBF') FErase('File2.CDX') FErase('File3.DBF') FErase('File3.CDX') FErase('File4.DBF') FErase('File4.CDX') ... Function oAuxDSMGPosi() Local nRec // cClassif := oAuxDSMG.Lb_xxx.Value // If cClassif <> Space( 11 ) File1->( DBSetOrder( 1 ) ) File1->( DBSeek( SubStr( cClassif, 1, 2 ) ) ) nRec := File1->( RecNo() ) File1->( DBSetOrder( 2 ) ) oBrw_Div:SetFocus() oBrw_Div:Reset() // если коменировать эти строки, то oBrw_Div:GotoRec(nRec) // раскоментировать которые ниже (вроде и так и так работает) // oAuxDSMG.oBrw_Div.Value := nRec // oBrw_Div:SetFocus() // oBrw_Div:DrawSelect() // oBrw_Div:Refresh( .T. ) // For i = 1 To 13 // oBrw_Div:RefreshARow( i ) // Next ... // EndIf дальше не анализировал.
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1041
Зарегистрирован: 11.02.10
|
|
Отправлено: 22.11.16 16:36. Заголовок: SergKis пишет: даль..
SergKis пишет: Благодарю за проведенный анализ
| |
|
nick_mi
|
| |
Пост N: 195
Зарегистрирован: 19.05.05
|
|
Отправлено: 23.11.16 09:26. Заголовок: Функции ChangeXX сра..
Функции ChangeXX срабатывают раньше чем oAuxDSMGPosi соответственно oAuxDSMG.Lb_xxx.Value уже обновилось значениями с текущей позиции в DBF, т.е. нулями, затем выполняется поиск в oAuxDSMGPosi
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1042
Зарегистрирован: 11.02.10
|
|
Отправлено: 23.11.16 11:16. Заголовок: nick_mi пишет: Функ..
nick_mi пишет: цитата: | Функции ChangeXX срабатывают раньше чем oAuxDSMGPosi |
| Благодарю за Ваше пояснение Но теперь другая (и основная) проблема - не обновляется при старте File2 TBROWSE Полный код исправленного примера см. ниже Скрытый текст
REQUEST DBFCDX #include "minigui.ch" #include "tsbrowse.ch" #Include "fileio.ch" #Include "directry.ch" #include "miniprint.ch" #include "winprint.ch" #define KON_LIN chr( 13 ) + chr( 10 ) #define CC_FULLOPEN 2 #define CC_PREVENTFULLOPEN 4 #define CC_RGBINIT 1 #define CC_SHOWHELP 8 #define CC_SOLIDCOLOR 128 #define CC_ANYCOLOR 256 // 0x00000100 #define AZUL { 0 , 128 , 192 } #define CELESTE { 0 , 128 , 255 } #define VERDE { 0 , 128 , 128 } #define CAFE { 128 , 64 , 0 } #define nRGB( nR, nG, nB ) ( nR + ( nG * 256 ) + ( nB * 256 * 256 ) ) #define CLR_CHBLUE { 0, 128, 255 } && Azul claro #define CLR_CHGREEN { 0, 175, 85 } && Verde #define CLR_CHRED { 128, 0, 0 } && cores puras #define CLR_CHBLACK { 255, 255, 255 } && cores puras #define CLR_HRED nRGB( 128, 0, 0 ) && cores puras #define CLR_BLACK nRGB( 0, 0, 0 ) && cores puras #define CLR_CHCYAN { 0, 128, 128 } #define CLR_CHHBLUE { 100, 175, 255 } && Azul bem claro #define CLR_CHHYELLOW nRGB( 255, 255, 95 ) && Amarelo bem claro #define CLR_CHHGREEN nRGB( 200, 255, 200 ) && Verde bem claro #define CLR_HGRAY { 128, 128, 128 } && Cinza mais escuro #define CLR_TGRAY nRGB( 200, 200, 200 ) && Cinza claro #define CLR_NBLUE nRGB( 185, 220, 255 ) && Azul medio #define CLR_CBLUE nRGB( 30, 170, 220 ) && Azul medio #define CLR_BGRAY nRGB( 100, 100, 100 ) && cinza claro da tela #define VERDECL { 0, 255, 0 } #define DGRAY { 169, 169, 169 } && Cinza escuro #define GBLUE { 80, 180, 235 } #define ZBLUE { 46, 126, 159 } #define DBLUE { 3, 45, 73 } #define NBLUE { 185, 220, 255 } #define FGRAY { 168, 168, 168 } && Cinza medio mais escuro #define HGRAY { 188, 188, 188 } && Cinza medio claro #define TGRAY { 200, 200, 200 } && Cinza claro #define CLR_BACKGET { { 255, 255, 255 }, { 233, 233, 233 }, { 0, 220, 255 } } && branco, amarelo claro, azul claro #define CLR_BACKGET1 { { 255, 255, 190 }, { 255, 255, 200 }, { 200, 255, 255 } } && amarelo claro, amarelo claro, azul claro #define CLR_BACKGET2 { { 100, 175, 255 }, { 255, 255, 200 }, { 200, 255, 255 } } && azul medio, amarelo claro, azul claro #define CLR_PINK nRGB( 255, 128, 128) #define CLR_NCBLUE nRGB( 128, 128, 192) #define CLR_NBROWN nRGB( 130, 99, 53) #define CLR_1 nRGB( 190, 215, 190 ) #define CLR_2 nRGB( 230, 230, 230 ) #define CLR_3 nRGB( 217, 217, 255 ) #define CLR_VERDE { 0, 128, 128 } #define pRED 0x3300CC #define pGREEN 0x339966 #define pBLUE 0xCC0000 #define pGRAY 0xCCCCCC Function Main() Local NomArq1 := {} Local NomArq2 := {} Local NomArq3 := {} PRIV cClassif, oBrw_Div, oBrw_Sec, oBrw_Mar, oBrw_Gru SET SOFTSEEK ON RDDSETDEFAULT('DBFCDX') FErase('File1.DBF') FErase('File1.CDX') FErase('File2.DBF') FErase('File2.CDX') FErase('File3.DBF') FErase('File3.CDX') FErase('File4.DBF') FErase('File4.CDX') AAdd( NomArq1, { 'CODIGO', 'C', 2, 0 } ) AAdd( NomArq1, { 'DESCRI', 'C', 50, 0 } ) If !File( 'File1.DBF' ) DBCreate( 'File1.DBF', NomArq1, 'DBFCDX' ) EndIf Use File1 Alias File1 Via 'DBFCDX' Index On Codigo Tag F01 To File1.Cdx Index On Descri Tag F02 To File1.Cdx J := 0 For i = 1 To 12 File1->( DBAppend() ) File1->Codigo := StrZero( j, 2 ) File1->Descri := 'Product Name ' + StrZero( j, 2 ) j += 5 Next AAdd( NomArq2, { 'CODIGO', 'C', 4, 0 } ) AAdd( NomArq2, { 'DESCRI', 'C', 50, 0 } ) If !File( 'File2.DBF' ) DBCreate( 'File2.DBF', NomArq2, 'DBFCDX' ) EndIf Use File2 Alias File2 Via 'DBFCDX' New Index On Codigo Tag F01 To File2.Cdx Index On Descri Tag F02 To File2.Cdx J := 0 For i = 1 To 30 File2->( DBAppend() ) File2->Codigo := StrZero( j, 4 ) File2->Descri := 'Product Name ' + StrZero( j, 4 ) j += 500 Next AAdd( NomArq3, { 'CODIGO', 'C', 3, 0 } ) AAdd( NomArq3, { 'DESCRI', 'C', 50, 0 } ) If !File( 'File3.DBF' ) DBCreate( 'File3.DBF', NomArq3, 'DBFCDX' ) EndIf Use File3 Alias File3 Via 'DBFCDX' New Index On Codigo Tag F01 To File3.Cdx Index On Descri Tag F02 To File3.Cdx J := 0 For i = 1 To 24 File3->( DBAppend() ) File3->Codigo := StrZero( j, 3 ) File3->Descri := 'Product Name ' + StrZero( j, 3 ) j += 10 Next If !File( 'File4.DBF' ) DBCreate( 'File4.DBF', NomArq1, 'DBFCDX' ) EndIf Use File4 Alias File4 Via 'DBFCDX' New Index On Codigo Tag F01 To File4.Cdx Index On Descri Tag F02 To File4.Cdx J := 0 For i = 1 To 12 File4->( DBAppend() ) File4->Codigo := StrZero( j, 2 ) File4->Descri := 'Product Name ' + StrZero( j, 2 ) j += 5 Next cClassif := '40950020055' If !( IsWindowDefined( oAuxDSMG ) ) Define Window oAuxDSMG AT 0,0 Width 870 Height 519 Main NoCaption NoSysMenu NoSize On Init { || oAuxDSMGPosi() } On InteractiveClose { || oAuxDSMGCanc() } On Key ESCAPE Of oAuxDSMG Action { || oAuxDSMGCanc() } @ 0, 0 Label 1 Value '' Width 870 Height 110 BackColor BLUE @ 12, 10 Label Lb_xaa Value 'File1-File2-File3-File4' Width 600 Height 36 Font 'ARIAL' Size 24 Bold FontColor WHITE Transparent @ 14, 12 Label Lb_xab Value 'File1-File2-File3-File4' Width 600 Height 36 Font 'ARIAL' Size 24 Bold FontColor BLACK Transparent @ 13, 11 Label Lb_xac Value 'File1-File2-File3-File4' Width 600 Height 36 Font 'ARIAL' Size 24 Bold FontColor GBLUE Transparent //File1 Select("File1") @ 72, 10 Label Lb_cdv Value SubStr( cClassif, 1, 2 ) Width 30 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 72, 42 Label Lb_tdv Value 'File1' Width 178 Height 20 Font 'ARIAL' Size 10 Bold FontColor BLACK BackColor WHITE ClientEdge CenterAlign @ 94, 10 Label Lb_ddv Value File1->Descri Width 210 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 116, 10 TBrowse oBrw_Div Of oAuxDSMG Width 210 Height 346 Alias 'File1' CELLED On Change ChangeTD() Add Column To oBrw_Div Header 'Cod.' Data FieldWBlock( 'Codigo', Select() ) Picture '99' 3DLOOK FALSE,TRUE Size 40 Align DT_LEFT Add Column To oBrw_Div Header 'Descricao' Data FieldWBlock( 'Descri', Select() ) Picture '@!' 3DLOOK FALSE,TRUE Size 170 Align DT_LEFT oBrw_Div:Set3DText( .T., .F., Nil, 2, CLR_WHITE, CLR_CBLUE ) oBrw_Div:SetColor( { 1, 3, 5, 6, 13, 15 }, ; { CLR_BLACK, CLR_BLUE, CLR_WHITE, ; { CLR_BLUE, CLR_HBLUE }, ; // degraded cursor background color CLR_WHITE, CLR_BLACK } ) // text colors oBrw_Div:SetColor( { 2, 4, 14 }, ; { { || IIf( oBrw_Div:nLogicPos() % 2 == 0, { CLR_TGRAY, CLR_WHITE }, { CLR_CHHGREEN, CLR_WHITE } ) }, ; { CLR_CBLUE, CLR_NBLUE }, ; // degraded Headers backgroud color { CLR_HRED, CLR_BLACK } } ) // degraded order column background color oBrw_Div:nHeightCell += 8 oBrw_Div:nHeightHead += 11 oBrw_Div:nLineStyle := LINES_VERT oBrw_Div:SetAppendMode( .F. ) oBrw_Div:lNoHScroll := .T. //Secao Select("File2") @ 72, 223 Label Lb_csc Value SubStr( cClassif, 3, 4 ) Width 50 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 72, 275 Label Lb_tsc Value 'File2' Width 158 Height 20 Font 'ARIAL' Size 10 Bold FontColor BLACK BackColor WHITE ClientEdge CenterAlign @ 94, 223 Label Lb_dsc Value File2->Descri Width 210 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 116, 223 TBrowse oBrw_Sec Of oAuxDSMG Width 210 Height 346 Alias 'File2' CELLED On Change ChangeTS() Add Column To oBrw_Sec Header 'Cod.' Data FieldWBlock( 'Codigo', Select() ) Picture '9999' 3DLOOK FALSE,TRUE Size 40 Align DT_LEFT Add Column To oBrw_Sec Header 'Descricao' Data FieldWBlock( 'Descri', Select() ) Picture '@!' 3DLOOK FALSE,TRUE Size 170 Align DT_LEFT oBrw_Sec:Set3DText( .T., .F., Nil, 2, CLR_WHITE, CLR_CBLUE ) oBrw_Sec:SetColor( { 1, 3, 5, 6, 13, 15 }, ; { CLR_BLACK, CLR_BLUE, CLR_WHITE, ; { CLR_BLUE, CLR_HBLUE }, ; // degraded cursor background color CLR_WHITE, CLR_BLACK } ) // text colors oBrw_Sec:SetColor( { 2, 4, 14 }, ; { { || IIf( oBrw_Sec:nLogicPos() % 2 == 0, { CLR_TGRAY, CLR_WHITE }, { CLR_CHHGREEN, CLR_WHITE } ) }, ; { CLR_CBLUE, CLR_NBLUE }, ; // degraded Headers backgroud color { CLR_HRED, CLR_BLACK } } ) // degraded order column background color oBrw_Sec:nHeightCell += 8 oBrw_Sec:nHeightHead += 11 oBrw_Sec:nLineStyle := LINES_VERT oBrw_Sec:SetAppendMode( .F. ) oBrw_Sec:lNoHScroll := .T. //File3 Select("File3") @ 72, 436 Label Lb_cma Value SubStr( cClassif, 7, 3 ) Width 40 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 72, 478 Label Lb_tma Value 'File3' Width 168 Height 20 Font 'ARIAL' Size 10 Bold FontColor BLACK BackColor WHITE ClientEdge CenterAlign @ 94, 436 Label Lb_dma Value File3->Descri Width 210 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 116, 436 TBrowse oBrw_Mar Of oAuxDSMG Width 210 Height 346 Alias 'File3' CELLED On Change ChangeTM() Add Column To oBrw_Mar Header 'Cod.' Data FieldWBlock( 'Codigo', Select() ) Picture '999' 3DLOOK FALSE,TRUE Size 40 Align DT_LEFT Add Column To oBrw_Mar Header 'Descricao' Data FieldWBlock( 'Descri', Select() ) Picture '@!' 3DLOOK FALSE,TRUE Size 170 Align DT_LEFT oBrw_Mar:Set3DText( .T., .F., Nil, 2, CLR_WHITE, CLR_CBLUE ) oBrw_Mar:SetColor( { 1, 3, 5, 6, 13, 15 }, ; { CLR_BLACK, CLR_BLUE, CLR_WHITE, ; { CLR_BLUE, CLR_HBLUE }, ; // degraded cursor background color CLR_WHITE, CLR_BLACK } ) // text colors oBrw_Mar:SetColor( { 2, 4, 14 }, ; { { || IIf( oBrw_Mar:nLogicPos() % 2 == 0, { CLR_TGRAY, CLR_WHITE }, { CLR_CHHGREEN, CLR_WHITE } ) }, ; { CLR_CBLUE, CLR_NBLUE }, ; // degraded Headers backgroud color { CLR_HRED, CLR_BLACK } } ) // degraded order column background color oBrw_Mar:nHeightCell += 8 oBrw_Mar:nHeightHead += 11 oBrw_Mar:nLineStyle := LINES_VERT oBrw_Mar:SetAppendMode( .F. ) oBrw_Mar:lNoHScroll := .T. //File4 Select("File4") @ 72, 649 Label Lb_cgr Value SubStr( cClassif, 10, 2 ) Width 30 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 72, 681 Label Lb_tgr Value 'File4' Width 178 Height 20 Font 'ARIAL' Size 10 Bold FontColor BLACK BackColor WHITE ClientEdge CenterAlign @ 94, 649 Label Lb_dgr Value File4->Descri Width 210 Height 20 Font 'ARIAL' Size 10 Bold FontColor RED BackColor BLACK ClientEdge @ 116, 649 TBrowse oBrw_Gru Of oAuxDSMG Width 210 Height 346 Alias 'File4' CELLED On Change ChangeTG() Add Column To oBrw_Gru Header 'Cod.' Data FieldWBlock( 'Codigo', Select() ) Picture '99' 3DLOOK FALSE,TRUE Size 40 Align DT_LEFT Add Column To oBrw_Gru Header 'Descricao' Data FieldWBlock( 'Descri', Select() ) Picture '@!' 3DLOOK FALSE,TRUE Size 170 Align DT_LEFT oBrw_Gru:Set3DText( .T., .F., Nil, 2, CLR_WHITE, CLR_CBLUE ) oBrw_Gru:SetColor( { 1, 3, 5, 6, 13, 15 }, ; { CLR_BLACK, CLR_BLUE, CLR_WHITE, ; { CLR_BLUE, CLR_HBLUE }, ; // degraded cursor background color CLR_WHITE, CLR_BLACK } ) // text colors oBrw_Gru:SetColor( { 2, 4, 14 }, ; { { || IIf( oBrw_Gru:nLogicPos() % 2 == 0, { CLR_TGRAY, CLR_WHITE }, { CLR_CHHGREEN, CLR_WHITE } ) }, ; { CLR_CBLUE, CLR_NBLUE }, ; // degraded Headers backgroud color { CLR_HRED, CLR_BLACK } } ) // degraded order column background color oBrw_Gru:nHeightCell += 8 oBrw_Gru:nHeightHead += 11 oBrw_Gru:nLineStyle := LINES_VERT oBrw_Gru:SetAppendMode( .F. ) oBrw_Gru:lNoHScroll := .T. @ 480, 10 Label Lb_xxx Value cClassif Width 210 Height 32 Font 'ARIAL' Size 22 Bold FontColor RED BackColor WHITE CenterAlign @ 480, 760 ButtonEx IBTCancelar Caption '&Cancelar' Width 100 Height 32 Font 'ARIAL' Size 7 Bold FontColor GBLUE ToolTip 'Fecha janela, retorna ao navegador' Action { || oAuxDSMGCanc() } //On GotFocus Exibe( 'Click To Close Window' ) End Window Center Window oAuxDSMG Activate Window oAuxDSMG Else oAuxDSMG.SetFocus EndIf Return( .T. ) * -------------------------> Rotina para gravar dados <----------------------- * Function oAuxDSMGPosi() Local nRec // cClassif := oAuxDSMG.Lb_xxx.Value If !Empty( cClassif ) //<> Space( 11 ) File1->( DBSetOrder( 1 ) ) File1->( DBSeek( SubStr( cClassif, 1, 2 ) ) ) nRec := File1->( RecNo() ) File1->( DBSetOrder( 2 ) ) oBrw_Div:SetFocus() oBrw_Div:Reset() oBrw_Div:GotoRec(nRec) /* oAuxDSMG.oBrw_Div.Value := nRec oBrw_Div:SetFocus() oBrw_Div:DrawSelect() oBrw_Div:Refresh( .T. ) For i = 1 To 13 oBrw_Div:RefreshARow( i ) Next */ File2->( DBSetOrder( 1 ) ) File2->( DBSeek( SubStr( cClassif, 3, 4 ) ) ) nRec := File2->( RecNo() ) File2->( DBSetOrder( 2 ) ) oBrw_Sec:SetFocus() oBrw_Sec:Reset() oBrw_Sec:GotoRec(nRec) /* oAuxDSMG.oBrw_Sec.Value := File2->( RecNo() ) oBrw_Sec:SetFocus() oBrw_Sec:DrawSelect() oBrw_Sec:Refresh( .T. ) For i = 1 To 13 oBrw_Sec:RefreshARow( i ) Next */ File3->( DBSetOrder( 1 ) ) File3->( DBSeek( SubStr( cClassif, 7, 3 ) ) ) nRec := File3->( RecNo() ) File3->( DBSetOrder( 2 ) ) oBrw_Mar:SetFocus() oBrw_Mar:Reset() oBrw_Mar:GotoRec(nRec) /* oAuxDSMG.oBrw_Mar.Value := File3->( RecNo() ) oBrw_Mar:SetFocus() oBrw_Mar:DrawSelect() oBrw_Mar:Refresh( .T. ) For i = 1 To 13 oBrw_Mar:RefreshARow( i ) Next */ File4->( DBSetOrder( 1 ) ) File4->( DBSeek( SubStr( cClassif, 10, 2 ) ) ) nRec := File4->( RecNo() ) File4->( DBSetOrder( 2 ) ) oBrw_Gru:SetFocus() oBrw_Gru:Reset() oBrw_Gru:GotoRec(nRec) /* oAuxDSMG.oBrw_Gru.Value := File4->( RecNo() ) oBrw_Gru:SetFocus() oBrw_Gru:DrawSelect() oBrw_Gru:Refresh( .T. ) For i = 1 To 13 oBrw_Gru:RefreshARow( i ) Next */ EndIf oBrw_Div:SetFocus() oAuxDSMG.Lb_cdv.Value := File1->Codigo oAuxDSMG.Lb_csc.Value := File2->Codigo oAuxDSMG.Lb_cma.Value := File3->Codigo oAuxDSMG.Lb_cgr.Value := File4->Codigo oAuxDSMG.Lb_ddv.Value := File1->Descri oAuxDSMG.Lb_dsc.Value := File2->Descri oAuxDSMG.Lb_dma.Value := File3->Descri oAuxDSMG.Lb_dgr.Value := File4->Descri oAuxDSMG.Lb_xxx.Value := oAuxDSMG.Lb_cdv.Value + oAuxDSMG.Lb_csc.Value + oAuxDSMG.Lb_cma.Value + oAuxDSMG.Lb_cgr.Value Return( .T. ) * ------------------------> Rotina para atualizar dados <--------------------- * Function ChangeTD() Local xClassif := oAuxDSMG.Lb_xxx.Value oAuxDSMG.Lb_cdv.Value := File1->Codigo oAuxDSMG.Lb_ddv.Value := File1->Descri oAuxDSMG.Lb_xxx.Value := oAuxDSMG.Lb_cdv.Value + SubStr( xClassif, 3, 8 ) Return( .T. ) * ------------------------> Rotina para atualizar dados <--------------------- * Function ChangeTS() Local xClassif := oAuxDSMG.Lb_xxx.Value oAuxDSMG.Lb_csc.Value := File2->Codigo oAuxDSMG.Lb_dsc.Value := File2->Descri oAuxDSMG.Lb_xxx.Value := SubStr( xClassif, 1, 2 ) + oAuxDSMG.Lb_csc.Value + SubStr( xClassif, 7, 5 ) Return( .T. ) * ------------------------> Rotina para atualizar dados <--------------------- * Function ChangeTM() Local xClassif := oAuxDSMG.Lb_xxx.Value oAuxDSMG.Lb_cma.Value := File3->Codigo oAuxDSMG.Lb_dma.Value := File3->Descri oAuxDSMG.Lb_xxx.Value := SubStr( xClassif, 1, 6 ) + oAuxDSMG.Lb_cma.Value + SubStr( xClassif, 10, 2 ) Return( .T. ) * ------------------------> Rotina para atualizar dados <--------------------- * Function ChangeTG() Local xClassif := oAuxDSMG.Lb_xxx.Value oAuxDSMG.Lb_cgr.Value := File4->Codigo oAuxDSMG.Lb_dgr.Value := File4->Descri oAuxDSMG.Lb_xxx.Value := SubStr( xClassif, 1, 9 ) + oAuxDSMG.Lb_cgr.Value Return( .T. ) * ----------------------> Rotina para fechar janela ativa <------------------- * Function oAuxDSMGCanc() If IsWindowDefined( oAuxDSMG ) Release Window oAuxDSMG EndIf Return( .T. )
|
| |
|
SergKis
|
| постоянный участник
|
Пост N: 1306
Зарегистрирован: 17.02.12
|
|
Отправлено: 23.11.16 12:50. Заголовок: Может не очень вруба..
Может не очень врубаюсь в сущность примера, но когда и от чего должны происходить переотображения тсб и в какой последовательности, т.е. где паровоз\лошадь ? Вроде пример на создание\расшифровку составного кода, если да, то должна была бы быть база его откуда плясать (изменение позиции с ключом меняет все тсб). Если это просто передвигаем любой тсб и что то должно произойти во ВСЕХ тсб, то это другое и должно происходить по таймеру (сменилось в label, сменилось в тсб).
| |
|
SergKis
|
| постоянный участник
|
Пост N: 1307
Зарегистрирован: 17.02.12
|
|
Отправлено: 23.11.16 12:54. Заголовок: PS или onchange labe..
PS или onchange label, в который пишем
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1043
Зарегистрирован: 11.02.10
|
|
Отправлено: 23.11.16 13:34. Заголовок: SergKis пишет: когд..
SergKis пишет: цитата: | когда и от чего должны происходить переотображения тсб |
| Судя по логике примера, чел хочет, чтобы при инициализации окна корректно обновлялись все четыре TBROWSE. Он заметил, что если мало строк до конца списка в окошке, то TBROWSE корректно не обновляется, что и демонстрирует этот пример для случая File2. Если лучше обновлять по таймеру, то возможно ли отрехтовать данный пример для корректного отображения данных после поиска при инициализации окна
| |
|
nick_mi
|
| |
Пост N: 196
Зарегистрирован: 19.05.05
|
|
Отправлено: 23.11.16 14:05. Заголовок: SergKis пишет: не о..
SergKis пишет: цитата: | не очень врубаюсь в сущность примера |
| SergKis пишет: цитата: | должна была бы быть база его откуда плясать (изменение позиции с ключом меняет все тсб) |
| Там, похоже, из 4-х разных таблиц набирают какие-то коды характеристик, независимые от предыдущих и последующих характеристик gfilatov2002 пишет: цитата: | Но теперь другая (и основная) проблема - не обновляется при старте File2 TBROWSE |
| Объяснить не могу но если добавить строку - обзначена красным, то вроде все нормально File2->( DBSetOrder( 1 ) ) File2->( DBSeek( SubStr( cClassif, 3, 4 ) ) ) nRec := File2->( RecNo() ) File2->( DBSetOrder( 2 ) ) oBrw_Sec:SetFocus() oBrw_Sec:Reset() oBrw_Sec:GotoRec(nRec) oBrw_Sec:Skip(0)
| |
|
|
SergKis
|
| постоянный участник
|
Пост N: 1308
Зарегистрирован: 17.02.12
|
|
Отправлено: 23.11.16 14:13. Заголовок: gfilatov2002 пишет С..
gfilatov2002 пишет цитата: | Судя по логике примера, чел хочет, чтобы при инициализации окна корректно обновлялись все четыре TBROWSE. |
| Т.е. это расшифровка составного кода, т.к. сами тсб между собой не связаны. Попробую порихтовать с этой позиции.
| |
|
SergKis
|
| постоянный участник
|
Пост N: 1309
Зарегистрирован: 17.02.12
|
|
Отправлено: 23.11.16 14:21. Заголовок: nick_mi пишет Объясн..
nick_mi пишет цитата: | Объяснить не могу но если добавить строку - обзначена красным, то вроде все нормально |
| Если это годится, то рихтовать не буду. nick_mi
| |
|
Петр
|
| постоянный участник
|
Пост N: 1336
Зарегистрирован: 09.10.06
|
|
Отправлено: 23.11.16 14:26. Заголовок: SergKis пишет: сам..
SergKis пишет: цитата: | сами тсб между собой не связаны. |
| Вот-вот gfilatov2002 пишет: цитата: | чел хочет, чтобы при инициализации окна корректно обновлялись все четыре TBROWSE. |
| Так вы посоветуйте челу изучить азы ООП если он создал 4 объекта browse, то пускай их и спользует через доступные методы, а не напрямую File2->( DBSetOrder( 1 ) ) File2->( DBSeek( SubStr( cClassif, 3, 4 ) ) ) Да это чаще всего будет работать - но при этом вы игнорируете всю внутреннюю логику работы browse. И не позволит обнаружить ошибки в логике такой роботы - если они там есть. Для синхронизации связанных browse есть метод SyncChild (я что-то нигде не увидел примера его использования), так будет корректнее чем через таймер (ИМХО здесь таймер - извращение). Не ищите костыль
| |
|
gfilatov2002
|
| moderator
|
Пост N: 1044
Зарегистрирован: 11.02.10
|
|
Отправлено: 23.11.16 14:33. Заголовок: nick_mi пишет: врод..
nick_mi пишет: Благодарю за помощь Обновляется, однако... Петр пишет: цитата: | вы посоветуйте челу изучить азы ООП |
| Вот с этим как раз проблема - программируют на минигуи, в основном, люди старой школы Не по теме. На мой взгляд, это во многом объясняет использование Минигуи вместо полноценных ООП-систем типа HwGUI, на изучение корректной работы которых требуется время
| |
|
Петр
|
| постоянный участник
|
Пост N: 1337
Зарегистрирован: 09.10.06
|
|
Отправлено: 23.11.16 14:47. Заголовок: Так обьясните ему, ..
Так обьясните ему, что ошибку он сотворил сам, не проводя процедур синхронизации состояния обьектов. Но мой пост адресовался не только ему цитата: | File1->( DBSetOrder( 1 ) ) File1->( DBSeek( SubStr( cClassif, 1, 2 ) ) ) nRec := File1->( RecNo() ) File1->( DBSetOrder( 2 ) ) _SyncObject( oBrw_Div, nRec ) File2->( DBSetOrder( 1 ) ) File2->( DBSeek( SubStr( cClassif, 3, 4 ) ) ) nRec := File2->( RecNo() ) File2->( DBSetOrder( 2 ) ) _SyncObject( oBrw_Sec, nRec ) ... static procedure _SyncObject( o, nRec ) o:SetFocus() o:Reset() o:GotoRec(nRec) o:Skip(0) // and more return |
|
| |
|
SergKis
|
| постоянный участник
|
Пост N: 1310
Зарегистрирован: 17.02.12
|
|
Отправлено: 23.11.16 14:47. Заголовок: Петр пишет так будет..
Петр пишет цитата: | так будет корректнее чем через таймер (ИМХО здесь таймер - извращение). |
| Достаточно спорное утверждение. Крутим колесико и мелькание связанных тсб обеспечено. У Димы, недавно, была задачка на эту тему. цитата: | Для синхронизации связанных browse есть метод SyncChild |
| Особых преимуществ метод не дает. Он связывает ведущий тсб с подчинеными, соответствующими блоками кода. Это мило и симпатично, но тоже самое можно решить и др. способами. На любителя ООП (их тут мало с МиниГуи работающих)
| |
|
Петр
|
| постоянный участник
|
Пост N: 1338
Зарегистрирован: 09.10.06
|
|
Отправлено: 23.11.16 15:11. Заголовок: SergKis пишет: Дост..
SergKis пишет: цитата: | Достаточно спорное утверждение. |
| Там было ИМХО, а потом здесь. Про проблемы Димы читал, но утверждать, что решить их нельзя и др. способами не буду Смысл моего поста - нельзя игнорировать логику поведения обьекта. А потом еще и удивляться (или, не дай бог, возмущаться). Для любителей ООП в этом случае есть возможность наследования, для остальных - костыль или не пользоваться SergKis пишет: цитата: | Особых преимуществ метод не дает. Он связывает ведущий тсб с подчинеными, соответствующими блоками кода. Это мило и симпатично, но тоже самое можно решить и др. способами. На любителя ООП (их тут мало с МиниГуи работающих) |
| Нет-нет, спора не будет
| |
|
Andrey
|
| постоянный участник
|
Пост N: 5188
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.11.16 20:10. Заголовок: Вопрос возник уже да..
Вопрос возник уже давно решить не могу ! Как бороться с не показом вертикального скролинга (стрелка внизу отгрызана) ? Юзера прикалываются.... При показе таблицы делаю: oBrwX:lNoHScroll := .T. // НЕТ показа горизонтального скролинга oBrwX:ResetVScroll() // показ вертикального скролинга Первый раз таблица отображается нормально. После перепоказа по другим индексам делаю типа так: nOrder := IIF(lCity,2,1) SELECT(cAlias) DBSetOrder(nOrder) SetProperty(oBrwX:cParentWnd, oBrwX:cControlName, "Enabled", .F.) oBrwX:lNoHScroll := .T. // НЕТ показа горизонтального скролинга oBrwX:ResetVScroll() // показ вертикального скролинга oBrwX:Reset() oBrwX:Refresh(.T.) oBrwX:Upstable() SetProperty(oBrwX:cParentWnd, oBrwX:cControlName, "Enabled", .T.) oBrwX:Setfocus() Показывается вертикальный скролинг и стрелка внизу отгрызана..... Да и в добавок потом НИКАК не убирается горизонтальный скролинг. Что не так делаю ?
| |
|
Dima
|
| |
Пост N: 6140
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.11.16 22:31. Заголовок: Andrey пишет: Как б..
Andrey пишет: цитата: | Как бороться с не показом вертикального скролинга |
| oBrw4:bChange := {|| oBrw4:oVScroll:SetRange( 0, 0 ) }
| |
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
|