Форум » GUI » TsBrowse в Минигуи (продолжение) » Ответить

TsBrowse в Минигуи (продолжение)

Vlad04: TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений К примеру [quote] 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 [/quote] Здесь я собрал параметры из разных tBrows Можно или нет и какие парметры заменить выражением ( и каким) ? oBrw2:.... oBrw2:....

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

SergKis: Делал для Andrey примеры, может кому сгодится (на одну тему, но по разному сделаны) http://my-files.ru/1quo1w http://my-files.ru/ct7m3d

SergKis: PS копипастил и забыл исправить в примере из Tsb_form_1.7z функция MyButton на всех кнопках надо заменить[pre2] ACTION ( MsgBox(This.Name+CRLF+This.BaseName.Value, cForm), ; TBrw_Obj(cBrw, cForm):SetFocus() ) ; [/pre2]

gfilatov2002: Задачка для знатоков TSBrowse Получил такой вопрос (в заголовке поста) на бразильском форуме. Текст примера см. ниже [pre2]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. )[/pre2]


SergKis: gfilatov2002 пишет Получил такой вопрос ... Почему не работает поиск? [pre2] 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 дальше не анализировал. [/pre2]

gfilatov2002: SergKis пишет: дальше не анализировал Благодарю за проведенный анализ

nick_mi: Функции ChangeXX срабатывают раньше чем oAuxDSMGPosi соответственно oAuxDSMG.Lb_xxx.Value уже обновилось значениями с текущей позиции в DBF, т.е. нулями, затем выполняется поиск в oAuxDSMGPosi

gfilatov2002: nick_mi пишет: Функции ChangeXX срабатывают раньше чем oAuxDSMGPosi Благодарю за Ваше пояснение Но теперь другая (и основная) проблема - не обновляется при старте File2 TBROWSE Полный код исправленного примера см. ниже [pre2]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. )[/pre2]

SergKis: Может не очень врубаюсь в сущность примера, но когда и от чего должны происходить переотображения тсб и в какой последовательности, т.е. где паровоз\лошадь ? Вроде пример на создание\расшифровку составного кода, если да, то должна была бы быть база его откуда плясать (изменение позиции с ключом меняет все тсб). Если это просто передвигаем любой тсб и что то должно произойти во ВСЕХ тсб, то это другое и должно происходить по таймеру (сменилось в label, сменилось в тсб).

SergKis: PS или onchange label, в который пишем

gfilatov2002: SergKis пишет: когда и от чего должны происходить переотображения тсб Судя по логике примера, чел хочет, чтобы при инициализации окна корректно обновлялись все четыре TBROWSE. Он заметил, что если мало строк до конца списка в окошке, то TBROWSE корректно не обновляется, что и демонстрирует этот пример для случая File2. Если лучше обновлять по таймеру, то возможно ли отрехтовать данный пример для корректного отображения данных после поиска при инициализации окна

nick_mi: SergKis пишет: не очень врубаюсь в сущность примера SergKis пишет: должна была бы быть база его откуда плясать (изменение позиции с ключом меняет все тсб) Там, похоже, из 4-х разных таблиц набирают какие-то коды характеристик, независимые от предыдущих и последующих характеристик gfilatov2002 пишет: Но теперь другая (и основная) проблема - не обновляется при старте File2 TBROWSE Объяснить не могу но если добавить строку - обзначена красным, то вроде все нормально [pre2] 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)[/pre2]

SergKis: gfilatov2002 пишет Судя по логике примера, чел хочет, чтобы при инициализации окна корректно обновлялись все четыре TBROWSE. Т.е. это расшифровка составного кода, т.к. сами тсб между собой не связаны. Попробую порихтовать с этой позиции.

SergKis: nick_mi пишет Объяснить не могу но если добавить строку - обзначена красным, то вроде все нормально Если это годится, то рихтовать не буду. nick_mi

Петр: SergKis пишет: сами тсб между собой не связаны. Вот-вот gfilatov2002 пишет: чел хочет, чтобы при инициализации окна корректно обновлялись все четыре TBROWSE. Так вы посоветуйте челу изучить азы ООП если он создал 4 объекта browse, то пускай их и спользует через доступные методы, а не напрямую File2->( DBSetOrder( 1 ) ) File2->( DBSeek( SubStr( cClassif, 3, 4 ) ) ) Да это чаще всего будет работать - но при этом вы игнорируете всю внутреннюю логику работы browse. И не позволит обнаружить ошибки в логике такой роботы - если они там есть. Для синхронизации связанных browse есть метод SyncChild (я что-то нигде не увидел примера его использования), так будет корректнее чем через таймер (ИМХО здесь таймер - извращение). Не ищите костыль

gfilatov2002: nick_mi пишет: вроде все нормально Благодарю за помощь Обновляется, однако... Петр пишет: вы посоветуйте челу изучить азы ООП Вот с этим как раз проблема - программируют на минигуи, в основном, люди старой школы Не по теме. На мой взгляд, это во многом объясняет использование Минигуи вместо полноценных ООП-систем типа HwGUI, на изучение корректной работы которых требуется время

Петр: Так обьясните ему, что ошибку он сотворил сам, не проводя процедур синхронизации состояния обьектов. Но мой пост адресовался не только ему [pre2] 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 [/pre2]

SergKis: Петр пишет так будет корректнее чем через таймер (ИМХО здесь таймер - извращение). Достаточно спорное утверждение. Крутим колесико и мелькание связанных тсб обеспечено. У Димы, недавно, была задачка на эту тему.Для синхронизации связанных browse есть метод SyncChild Особых преимуществ метод не дает. Он связывает ведущий тсб с подчинеными, соответствующими блоками кода. Это мило и симпатично, но тоже самое можно решить и др. способами. На любителя ООП (их тут мало с МиниГуи работающих)

Петр: SergKis пишет: Достаточно спорное утверждение. Там было ИМХО, а потом здесь. Про проблемы Димы читал, но утверждать, что решить их нельзя и др. способами не буду Смысл моего поста - нельзя игнорировать логику поведения обьекта. А потом еще и удивляться (или, не дай бог, возмущаться). Для любителей ООП в этом случае есть возможность наследования, для остальных - костыль или не пользоваться SergKis пишет: Особых преимуществ метод не дает. Он связывает ведущий тсб с подчинеными, соответствующими блоками кода. Это мило и симпатично, но тоже самое можно решить и др. способами. На любителя ООП (их тут мало с МиниГуи работающих) Нет-нет, спора не будет

Andrey: Вопрос возник уже давно решить не могу ! Как бороться с не показом вертикального скролинга (стрелка внизу отгрызана) ? Юзера прикалываются.... При показе таблицы делаю: 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: Andrey пишет: Как бороться с не показом вертикального скролинга oBrw4:bChange := {|| oBrw4:oVScroll:SetRange( 0, 0 ) }



полная версия страницы