Gracias a todos que ayudaram!! problema resolvido!!!

User avatar
laugusto
Posts: 62
Joined: Fri Apr 28, 2006 4:06 pm

Gracias a todos que ayudaram!! problema resolvido!!!

Post by laugusto »

Antonio,

Tengo en un DIALOG 18 listbox de array, 1 e 18 tem el mismo array, que son horarios. Lo que pasa es que quando clico en el button executo outra tarefa, que sea, abro una otra DIALOG e retorno sem problemas. Pero, quando clico en una celda del browse, executa la misma tarefa, mas ao retornar, mostra los browses como se tivesse ocorrido un scroll, mira la imagem.

imagem normal

Image

imagem ao retornar quando dou click en la celda del browse

Image

No se como proceder para que não aconteça el problema, o sea, no ocorra scroll en los browses.

Saludos desde Brasil,
Last edited by laugusto on Wed Oct 24, 2007 2:03 am, edited 5 times in total.
Luiz Augusto
São José dos Pinhais - PR
BRASIL
fwh + harbour + workshop + velhos bat´s
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Luiz Augusto,

Puedes poner las imágenes más grandes para que se vea con más detalle ? gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
laugusto
Posts: 62
Joined: Fri Apr 28, 2006 4:06 pm

Post by laugusto »

Antonio,

Pido disculpas por las imagenes, ai vão mas grandes.

la primera vez estou nesta tela
http://al5.us/image/images/112637mapa1.JPG

vou para esta otra tela
http://al5.us/image/images/906771mapa4.JPG

e quando retorno minha tela fica deformada
http://al5.us/image/images/384837mapa2.JPG

Saludos desde Brasil
Luiz Augusto
São José dos Pinhais - PR
BRASIL
fwh + harbour + workshop + velhos bat´s
AOKISANTOS
Posts: 210
Joined: Sun Jul 23, 2006 1:15 am

Post by AOKISANTOS »

laugusto


Coloque um pedaço do seu PRG, principalmente quando retorna ao browse para que possamos ajuda-lo.

Ok

Aoki
FWH25+XHARBOUR 99.50
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Luiz Augusto,

Haz como te dice Aoki, muéstranos parte del código cuando vas y regresas al browse.

En la imagen la última fecha es 22:30. Es como si hubieses cambiado el comienzo del browse a una hora más adelantada
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
laugusto
Posts: 62
Joined: Fri Apr 28, 2006 4:06 pm

Post by laugusto »

Buenos dias a todos,

Segue abajo el codigo:

- montagem do button 1 e 18, horarios do mapa:

Code: Select all


   // Monta o Cabeçalho dos Horarios
   a_Mapa[ 1] := { '07:00', '07:30', '08:00', '08:30', '09:00', '09:30', '10:00', '10:30',;
                   '11:00', '11:30', '12:00', '12:30', '13:00', '13:30', '14:00', '14:30',;
                   '15:00', '15:30', '16:00', '16:30', '17:00', '17:30', '18:00', '18:30',;
                   '19:00', '19:30', '20:00', '20:30', '21:00', '21:30', '22:00', '22:30' }
   a_Cor[ 1] := {}
   // Inicializa o Restante dos ARRAYs
   For X := 2 to 32
      a_Mapa[ X] := Array(32)
       a_Cor[ X] := Array(32)
   Next

//monta o listbox dos horarios do mapa

   //--------------------------------------------------------------------------
   // Mostra o Cabeçalho das Horas da Agenda - lado Esquerdo

      TWBrowse():lHScroll := .f.
      REDEFINE LISTBOX oBrw[ 1];
         FIELDS a_Mapa[ 1][ n] ID 70 OF oMap30

      oBrw[ 1]:SetArray( a_Mapa[ 1] )

      oBrw[ 1]:bGotop       := { || n := 1 }
      oBrw[ 1]:bGoBottom    := { || n := Eval( oBrw[ 1]:bLogicLen ) }
      oBrw[ 1]:bSkip        := { | nwant, nold | nold := n , n += nwant, n := Max( 1, Min( n, Eval( oBrw[ 1]:bLogicLen ))), n - nOld }
      oBrw[ 1]:bLogicLen    := { || Len( a_Mapa[ 1] ) }

      // Força o browse a trabalhar com celulas
      oBrw[ 1]:lCellStyle    := .t.
      oBrw[ 1]:nLineStyle    :=  4
      oBrw[ 1]:lDrawHeaders  := .f.

      // Cor da Linha
      oBrw[ 1]:nClrText := { || CLR_BLACK }

      // Cor de fundo da planilha
      oBrw[ 1]:nClrPane := { || nRGB( 209, 209, 209 ) }
      oBrw[ 1]:lDrawSelect := .f.

      oBrw[ 1]:Refresh()


   //--------------------------------------------------------------------------
   // Mostra o Mapa 1 
  //  Esta montagem é exatamente igual para os mapas
  //  1 a 17, o mapa 18 mostra os horarios do lado direito.

      TWBrowse():lHScroll := .f.
      REDEFINE LISTBOX oBrw[ 2];
         FIELDS a_Mapa[ 2][ n] ID 71 OF oMap30

      oBrw[ 2]:SetArray( a_Mapa[ 2] )

      oBrw[ 2]:bGotop       := { || n := 1 }
      oBrw[ 2]:bGoBottom    := { || n := Eval( oBrw[ 2]:bLogicLen ) }
      oBrw[ 2]:bSkip        := { | nwant, nold | nold := n , n += nwant, n := Max( 1, Min( n, Eval( oBrw[ 2]:bLogicLen ))), n - nOld }
      oBrw[ 2]:bLogicLen    := { || Len( a_Mapa[ 2] ) }

      // Força o browse a trabalhar com celulas
      oBrw[ 2]:lCellStyle    := .t.
      oBrw[ 2]:nLineStyle    :=  4
      oBrw[ 2]:lDrawHeaders  := .f.

      // Cor da Linha
      oBrw[ 2]:nClrText := { || CLR_WHITE }

      // Cor de fundo da planilha
      oBrw[ 2]:nClrPane   := { || IF( a_Mapa[ 2][ n] = 'BLOQ', CLR_HRED,;
                                  IF( Substr( a_Cor[ 2][ n], 20, 1 ) = '*', nRgb(   0, 193,   0 ),;
                                  IF( Substr( a_Cor[ 2][ n], 20, 1 ) = '+', nRgb( 255,   0,   0 ), aBrush_[TCOR[ 1]] ))) }

      oBrw[ 2]:bLDblClick   := { | nRow, nCol | pPR_A_COD := TMP[ 1],;
                                                bPos := 1, cPos := n,;
                                                TESTE2( oWnd, oAgen, oMap30, pPR_A_COD, oBtn_, .t. ) }
      /*
      Obs.: bPos equivale ao button do profissional
            cPos equivale a coluna onde se deu o click do mouse
            necessários pra que possa ser feito RETORNO CORRETAMENTE.
      */

      // Tooltip do conteudo da Celula, funcionalidade futura(18.10.2007 by lAugusto)
      oBrw[ 2]:cTooltip := "Duplo Clique para Selecionar " + CRLF + " Horario/Profissional."
    //oBrw[ 2]:bChange  := { || oBrw[ 2]:cToolTip := a_Mapa[ 2][ oBrw[ 2]:nAt ] }
      
      oBrw[ 2]:lDrawSelect := .f.
      oBrw[ 2]:Refresh()
      oBrw[ 2]:nDlgCode := DLGC_WANTALLKEYS
      //SysRefresh()

   //--------------------------------------------------------------------------

// Montagem dos Buttons dos profissionais, de 1 a 18

   REDEFINE SBUTTON oBtn[ 1] ID 635 OF oMap30;
      PROMPT aCbc[ 1];
      ACTION( pPR_A_COD := TMP[ 1], bPos := oMap30:oCtlFocus:nId,;
              TESTE2( oWnd, oAgen, oMap30, pPR_A_COD, oBtn_ ) ) CANCEL;
      COLORS { |oB| IF( oB:lMouseOver,CLR_WHITE, CLR_BLACK )},;
             { |oB| IF( oB:lMouseOver,{ CLR_WHITE, CLR_BLUE },;
                                      { CLR_HGRAY, CLR_HGRAY } ) };
      BORDER TEXT POSITION ON_CENTER

   oBtn[ 1]:lCancel  := .t.
   oBtn[ 1]:bKeyDown := { |nKey|;
   IF( nKey = VK_ESCAPE,( Ver_Tecla1( oAgen ) ),;
   IF( nKey = VK_LEFT,( Anterior( 1 ) ),;
   IF( nKey = VK_RIGHT,( Proximo( 1 ) ), nil ))) }
   oBtn[ 1]:nDlgCode := DLGC_WANTALLKEYS

//-----------------------------------------------------------------
//------------ CLICK NO HBUTTON ------------------------------------------------------------
Function TESTE2( oWnd, oAgen, oMap30, pPR_A_COD, oBtn_, lEdita )

   local oFont
   DEFAULT lEdita := .f.  // Quando TRUE, clicou diretamente na Célula.

   pPR_A_COD := Substr( PPR_A_COD, 1, 2 ) + ( Strzero( Val( Substr( pPR_A_COD, 3, 3 ) ), 3 ) )
   oPR_A_COD:Refresh()

   dbSelectArea( "Pro_A01" )  //  sele 7
   dbSetOrder( 'IPro_A01' )   //  set order to 1
   dbGotop()
   dbSeek( pPR_A_COD )
   IF EOF()
      tone( 2000, 3 )
      msginfo( 'O código selecionado não consta do cadastro de profissionais.', 'Atenção Operador' )
      xSetFocus( oBtn[bPos] )
      Return nil
   EndIF

   oMap30:Hide()

   oAgen:Show()
   //oAgen:Enable()
   //oAgen:SetFocus()

   pPR_A_NOM := Pro_A01->PR_A_NOM
   oPR_A_NOM:Refresh()
 
   dbSelectArea( "Pro_C01" )  // Sele 11
   dbSetOrder( 'IPRO_C01' )
   dbSeek( pPR_A_COD )
   TFOLGAT    := Pro_C01->PR_C_FOLG
   pPR_C_FUN  := Pro_C01->PR_C_FUN
   pPR_C_HENT := Pro_C01->PR_C_HENT

   oPR_C_FUN:Refresh()
   oPR_C_HENT:Refresh()

// pAG_DATA := m->tDATA  by lAugusto 12/09/2007
   DIA_SEMANA( oAgen )
   oAgen:aControls[ 5]:Refresh()            //  oAG_DATA:Refresh()
   oAgen:aControls[ 6]:SetText( tDIA_SEM )  //  oDIA_SEM:Refresh()

   // Vai para AGENDA
   HORARIO( oAgen, oBtn_ )  // Rotina no AG_002.PRG

   // Mostra Botoes Extras de Navegacao do Calendario
   oBtn_[ 3]:Show()
   oBtn_[ 4]:Show()
   oBtn_[ 5]:Show()
   oBtn_[ 6]:Show()

   DIA( oAgen, lEdita, cpos )  // Rotina no AG_002.PRG

Return nil

//-------------------------------------------------------------------
Function Ver_Tecla1( oAgen )

   local X

   tMapa := .t.  // Se TRUE, esta na MAPA.
   tAgen := .f.  // Se TRUE, esta na AGENDA.
   lProc := .f.

   lSai := .f.  // SE FALSE, habilita buttons de funções e coloca o FOCO na data no MAPA
   // destrava Buttons de Movimentação do MAPA
   For X := 22 to 33
      oBtn[ X]:Enable()
      oBtn[ X]:Refresh()
   Next

   // desabilita botoes de escolha do profissional( 1 a 17, inclusive. )
   For X := 1 to 17
      oBtn[ X]:Refresh()
      oBtn[ X]:Disable()
   Next

   oAG_DATA:Enable()
   oAG_DATA:Refresh()

   SET DATE FRENCH
   DIA_SEMM( )

   // Se AGENDA de 30min
   IF _TPA = 'N3'
      MOSTRAM1( oAgen )
   Else  // Se AGENDA de 20min
      // 
   EndIF

   xSetFocus( oAG_DATA )

Return nil
//----------------------------------------------------------------------
Function DIA_SEMM( )

   DO CASE
      Case dow( pAG_DATA ) = 1
         tDIA_SEM := 'Domingo'
      Case dow( pAG_DATA ) = 2
         tDIA_SEM := 'Segunda'
      Case dow( pAG_DATA ) = 3
         tDIA_SEM := 'Terça  '
      Case dow( pAG_DATA ) = 4
         tDIA_SEM := 'Quarta '
      Case dow( pAG_DATA ) = 5
         tDIA_SEM := 'Quinta '
      case dow( pAG_DATA ) = 6
         tDIA_SEM := '_  '
      Case dow( pAG_DATA ) = 7
         tDIA_SEM := 'Sábado '
   ENDCASE
   oDIA_SEM:Refresh()

Return nil
//-----------------------------------------------------------------------
Function MOSTRAM1( oAgen )

   local I, X, Z, nInd := 2, n
   TC := 7

   FOR I = 1 TO 17

      DO CASE
       Case i = 1
            pPR_A_COD = TMP[ 1]
       Case i = 2
            pPR_A_COD = TMP[ 2]
        ... 
        ...
        ...
       Case i = 17
            pPR_A_COD = TMP[17]
      ENDCASE

      dbSelectArea( "Ag_Pri" )  // sele 8
      dbSetOrder( "IAg_002" )   // set order to 2
      dbSeek( pPR_A_COD + Dtos( pAG_DATA ) )

      //----------------------------------------------------------------------
      // Limpa _ do ARRAY do Listbox dos Mapas - 2 a 17
      
      IF Len( a_Mapa[nInd] ) > 0
         Z := Len( a_Mapa[nInd] )
         oBrw[nInd]:bGotop := { || n := 1 }
         For X := 1 To Z
            Adel( a_Mapa[nInd][ oBrw[nInd]:nAt ] )
            ASize( a_Mapa[nInd], Len( a_Mapa[nInd] ) - 1 )
         Next
         // Inicializa o Restante dos ARRAYs
         a_Mapa[nInd] := Array(32)
      EndIF
      
      // Preenche o Array Mapas com os dados da AGENDA do Profissional
      a_Mapa[nInd][ 1] := AG_0700A
      a_Mapa[nInd][ 2] := AG_0730A
      ...
      ...
      ... 
      a_Mapa[nInd][30] := AG_0930P
      a_Mapa[nInd][31] := AG_1000P
      a_Mapa[nInd][32] := AG_1030P

      //- Verifica se Substr( a_Cor[nInd][ n], 20, 1 ) = '*', SE SIM, pinta a celula de verde limão
      a_Cor[nInd][ 1] := AG_0700AT
      a_Cor[nInd][ 2] := AG_0730AT
      ...
      ...
      ...
      a_Cor[nInd][31] := AG_1000PT
      a_Cor[nInd][32] := AG_1030PT
      //----------------------------

      dbSelectArea( "Bloqueio" )  //  sele 25
      SET FILTER TO Bloqueio->BL_SEM = Dow( pAG_DATA )
      dbSeek( pPR_A_COD )
      IF !Bloqueio->( EOF() )
         While pPR_A_COD = BL_COD
            X := BL_HOR
            a_Mapa[nInd][ X] := 'BLOQ'
            dbSkip()
         Enddo
      EndIF
      SET FILTER TO

      oBrw[nInd]:bGotop := { || n := 1 }
      oBrw[nInd]:Refresh()

      dbSelectArea( "Ag_Pri" )  // sele 8
      nInd += 1

   Next

Return nil
Saludos desde Brasil,
Luiz Augusto
São José dos Pinhais - PR
BRASIL
fwh + harbour + workshop + velhos bat´s
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Post by karinha »

http://al5.us/image/images/384837mapa2.JPG

Luiz, Não consigo identificar o DEFEITO. Olhei as tres tela, e não vejo o ERRO.

Expliqe onde está o problema.
João Santos - São Paulo - Brasil
User avatar
laugusto
Posts: 62
Joined: Fri Apr 28, 2006 4:06 pm

Post by laugusto »

João,

Olhe as imagens, parece que esta ocorrendo um scroll nos listbox, se voce observar o primeiro listbox, vera que os horarios forma movidos acima, e acontece a mesma coisa com os outros. Este problema não ocorre se clico direto no button, executo a outra tarefa e retorno normal, mas, se clico na CELULA do listbox, ao retornar, causa um scroll.

Espero ter explicado corretamente,

Saludos,
Luiz Augusto
São José dos Pinhais - PR
BRASIL
fwh + harbour + workshop + velhos bat´s
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Post by karinha »

TWBrowse():lHScroll := .f.

Luiz, Este comando, é da TWBROWSE.PRG By Hernan???

Luiz, como esta as PROPRIEDADES da sua TWBROWSE(ListBox) no teu ARQUIVO DE RECURSOS. Se entendi, voce não quer que a LISTBOX, APRESENTE UM SCROLL, ele está desligado(desmarcado) na DIALOG??
Vefifique e reporte.

A LISTBOX que voce definui no EDITOR DE RECURSOS, é mesmo uma TWBROWSE??? Verifique.

Abraços.

Regards, saludos.
João Santos - São Paulo - Brasil
Francisco Horta
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Post by Francisco Horta »

augusto,
prueba al entrar a la segunda opcion guardar el no. re registro en donde esta posicionado el browse original, luego cuando vuelvas, posiciona el registro nuevamente y refresca el browse
salu2
paco
User avatar
laugusto
Posts: 62
Joined: Fri Apr 28, 2006 4:06 pm

Post by laugusto »

João,

Este comando,
TWBrowse():lHScroll := .f.

Luiz, Este comando, é da TWBROWSE.PRG By Hernan???
Sim, é do Hernan, codigo fonte compilado com FWH2.6 + Harbour45;
como esta as PROPRIEDADES da sua TWBROWSE(ListBox) no teu ARQUIVO DE RECURSOS.
CONTROL "", 71, "TWBrowse", 0 | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 46, 59, 30, 281
A LISTBOX que voce definui no EDITOR DE RECURSOS, é mesmo uma TWBROWSE??? Verifique.
Sim!

Pra que voce possa entender o problema, tenho a dizer que, ao clicar na celula do listbox, escondo a dialog, oMap30:Hide(), onde estão os listbox, abro uma outra tela, oAgen:Show() que é a tela dos horarios, ao retornar, escondo oAgen:Hide() e torno a mostrar a tela do mapa, oMap30:Show(), neste momento, é que acontece o problema nos listbox, uma especie de scroll involuntario, bagunçando a tela. É como se os dados dos listbox fossem movidos para cima deixando a parte de baixo vazia, espero ter explicado corretamente.

Saludos, [/code]
Luiz Augusto
São José dos Pinhais - PR
BRASIL
fwh + harbour + workshop + velhos bat´s
User avatar
laugusto
Posts: 62
Joined: Fri Apr 28, 2006 4:06 pm

Post by laugusto »

Paco,

O mas incrivel é que, en el listbox que recebeu o clique do mouse, retorna correto, não acontece o problema.

Saludos desde Brasil,
Luiz Augusto
São José dos Pinhais - PR
BRASIL
fwh + harbour + workshop + velhos bat´s
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Post by karinha »

Tente fazer, como o Francisco Horta Falou, além disso, mande REFRESCAR A TELA COM oDlg:Refresh(), oDlg:UpDate(), Veja também se a LISTBOX está sendo REFRESCADA.
João Santos - São Paulo - Brasil
User avatar
laugusto
Posts: 62
Joined: Fri Apr 28, 2006 4:06 pm

Post by laugusto »

Amigos,

Segue link pra baixar o exe e arquivos, ao descompactar, deixar criar a pasta bellewin, e chamar o exe pelo atalho, caso o disco seja diferente de C, trocar a letra no segundo parametro do atalho de C para D. Escolher a opção agenda de profissionais e teclar F5 pra abrir o mapa.

http://discovirtual.terra.com.br/vd.cgi ... 719&_we=13

Senha de acesso: 40AE7257

Saludos,
Luiz Augusto
São José dos Pinhais - PR
BRASIL
fwh + harbour + workshop + velhos bat´s
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Post by karinha »

laugusto wrote:Amigos,

Segue link pra baixar o exe e arquivos, ao descompactar, deixar criar a pasta bellewin, e chamar o exe pelo atalho, caso o disco seja diferente de C, trocar a letra no segundo parametro do atalho de C para D. Escolher a opção agenda de profissionais e teclar F5 pra abrir o mapa.

http://discovirtual.terra.com.br/vd.cgi ... 719&_we=13

Senha de acesso: 40AE7257

Saludos,

FALTA USUARIO E SENHA DE ACESSO LUIZ... DO PROGRAMA, NÃO DO TERRA.
João Santos - São Paulo - Brasil
Post Reply