Jump to content
Fivewin Brasil

Scooby

Membros
  • Posts

    229
  • Joined

  • Last visited

Posts posted by Scooby

  1.  

    Outra linguagem não vai adiantar, pq a situação que vc precisa é uma query que resolva isso. Se vc conseguir uma query vc vai conseguir em SQLRDD e tb em outras linguagens, mas se não conseguir uma Query vc não vai conseguir em NENHUMA linguagem, pelo menos não da forma que deseja.

    Em outras linguagens o q vc vai cosneguir é o mesmo que o SQLRDD já permite, que são criar duas conexões e gravar de uma pra outra, fazendo um While ou FOR em array e jogando as informações uma a uma para o outro banco de dados.

    Então meu conselho é: Ou foque em conseguir uma query que faça isso e depois coloque dentro do aplicativo que está desenvolvendo ou parta pra fazer um FOR/WHILE criando duas conexões.

    Abraços

     

     

    Boa Tarde Emotta

    Eu fiz diversos testes e não consegui nenhum retorno positivo, olhei com outros programadores de outras linguagens e a solução também foi a mesma, gravação de registro ou através de abertura de arquivo ou via vetor ( multiplos insert ).
    Entrei em contato com o Rafael Culik também e ele me reportou agora que não é possível efetuar join como conexão externa, somente as que estão dentro da mesma conexão e de diferentes schemas.
    Então agora é gravar dessa maneira.

    Agradeço a compreensão e ajuda de todos

     

  2. Bom Dia Senhores

     

    fhw : Na verdade eu estou precisando mesmo é com comandos MySql, mas obrigado pela intenção.


    Emotta: pois é, eu também estou procurando em vários lugares e ainda não achei algo compatível ao desejado, sim dei uma olhada em várias ferramentas que criam links entre os bancos, porém nenhuma que funcione de mysql para mysql gratuita, ainda vou continuar procurando.

    Jmsilva, Pois é, eu vi o funcionamento da função  SR_SetActiveConnection , porém ela define que no momento que eu executo o "oSlq:Exc", eu já tenha setado em qual banco/conexão aquela query será montada e executava. É dai que vem o meu problema, como são bancos MySql ( Local e Nuvem ), eu tenho que abrir os 2 schemas e efeutar ambas conexões e excutar um único comando ( Join ) que possa ligar essas duas conexões diferentes... se fosse a opção um ou outro estaria tranquilo, o problema é que eu estou levando os dados que estão local para nuvem, então a melhor forma seria evitar interação com loop ou abertura de tabelas para replicação e afins.
    Fazendo isso com somente 1 comando Sql economizar tempo de execução além de deixar o código mais fácil de manutenção.
    Para ter mais ou menos ideia de como seria, seria assim:

    Veja o exemplo da própria SQLRDD,  a função SR_SetActiveConnection( nCnn1 )  é a responsável por ativar a conexão desejada, a partir dela pode ser feito o CRUD via cmd sql ou via função do xHarbour DBAPPEND()

    #include "sqlrdd.ch"

    nCnn1 := SR_AddConnection( CONNECT_MYSQL, cConnString1 )  // 1 Local
    nCnn2 := SR_AddConnection( CONNECT_MYSQL, cConnString2 )  // 2 Nuvem
    SR_SetActiveConnection( nCnn1 ) 
    SR_SetActiveConnection( nCnn2 )                              

    nConn  := SR_GetActiveConnection()
    oSQL   := SR_GetConnection( nCnn2 )
    nErr   := oSql:exec( 'INSERT INTO nCnn1.Banco1.TabelaXX(Campo1, Campo2, Campo3 ...) 
    SELECT Campo1, Campo2, Campo3 ... FROM nCnn2 .Banco2.TabelaXX
    Where Condicional',.t.,.t.)

     

  3. Boa Tarde Senhores

    Gostaria de perguntar se alguém já passou por essa situação.

    Atualmente estou com um banco de dados na Nuvem ( Google Cloud - MySql ) e um banco de dados Local ( MySql 5.7 ). Eu consigo via conexões separadas efetuar consultas em ambos os bancos. Porém estou passando pela seguinte situação, eu vou precisar efetuar um CRUD nas tabela do Servidor Nuvem.

    É ai que está o problema, estou utilizando a SqlRdd e para diferenciar as conexões eu utilizo assim:

    conexao:=sr_addconnection()  // e guarda o número da conexão
    Sr_getconnection(conexao)     // retorna o objeto da conexão pra executar queries
    Faço isso para ambas conexões.

    Porém eu gostaria de executar esse comando ou um join qualquer:

             INSERT INTO banco.tabela-destino (campo1, campo2, campo3...)
             SELECT campo1,campo2,campo3... FROM banco.tabela-origem;      

    Ai é que eu não estou conseguindo, alguém já passou por esse problema?

    Agradeço antecipadamente
     

    Márcio Pinheiro

  4. Bom Dia senhores.

    Estou com a seguinte duvida, estou utilizando um arquivo .ini para que o usuário possa definir a fonte que será utilizada no sistema
    bem como a largura e comprimento. 

    Arquivo .Ini
    FONTE_NOME=Tahoma
    FONTE_ALTURA=5
    FONTE_LARGURA=-14
    LOGOMARCA_ARQUIVO=LogoSuc.Bmp
    ICONE_ARQUIVO=IcoSuc.Bmp


    Porém acontece o seguinte: fiz todas as configurações no sistema.

    Procedure DefFonSys(oFon_,oBmp_,oIco_,vNomIco_) // Define a fonte do sistema
    Local vFonNam:="",vNomLog:="",vNomIco:="",;
          nFonAlt:=0,nFonLar:=0
    If !Empty(vTxtIni:=MemoRead(cCamPro_+"Success.Ini"))
       vFonNam:=RatTxt(vTxtIni,"FONTE_NOME=",0)
       nFonAlt:=Val(RatTxt(vTxtIni,"FONTE_ALTURA=",0))
       nFonLar:=Val(RatTxt(vTxtIni,"FONTE_LARGURA=",0))
       vNomLog:=RatTxt(vTxtIni,"LOGOMARCA_ARQUIVO=",0)
       vNomIco:=RatTxt(vTxtIni,"ICONE_ARQUIVO=",0)
    EndIf
    vFonNam:=AllTrim(If(Empty(vFonNam),"Tahoma",vFonNam))
    nFonAlt:=If(Empty(nFonAlt),5,nFonAlt)
    nFonLar:=If(Empty(nFonLar),-14,nFonLar)
    vNomLog:=AllTrim(If(Empty(vNomLog),"LogoSuc.Bmp",vNomLog))
    vNomIco:=AllTrim(If(Empty(vNomIco_),If(Empty(vNomIco),"IcoSuc.Bmp",vNomIco),vNomIco_))
    Define Font oFon_ Name vFonNam Size nFonAlt,nFonLar
    Define BitMap oBmp_ File(cCamPro_+vNomLog) Adjust
    Define Icon oIco_ File(cCamPro_+vNomIco)


    O problema que acontece é o seguinte, em algumas telas o formato da fonte, simplesmente não ocorre e o que é pior, o sistema ainda a transforma
    em 'Negrito', gostaria de saber se alguém pode me ajudar com essa questão.

     

    Imagem do erro: https://drive.google.com/open?id=1n6_xRz70ir5vUU4udwwE2qjACLvMRrmE

     


    Att

    erro_negrito.png

  5. Pois é Kapiaba, não utilizo nenhum prg de terceiros.. utilizo esse mesmo que postou..

    Quanto a forma de trabalho que você postou acima, é o mesmo que utilizo aqui, porém nesse caso de controle o single click é uma exceção que estamos criando, e pra esse recurso funcionar eu precisaria mesmo desse recurso para conseguir controlar os botões de acordo com o browse selecionado.

     

  6.    oBrwOse:SetArray(aTmpOse)
       oBrwOse:aJustify  :={.F.,.F.,.F.,.T.,.F.,.F.,.T.,.T.,.F.,.F.,.F.,.F.,.F.,.F.,.F.,.F.,.F.}
       oBrwOse:nLineStyle:=4
       oBrwOse:bLClick   :={||MsgYesNo("Teste1")}  <- Linha 200
       oBrwOse:bLDblClick:={|nRow,nCol|         IncIteOse(!(oBrwOse:nAt<Len(aTmpOse)),@lNovOse,@lNovIte,@vCodiOse,oDlgOse)}
       oBrwOse:bKeyChar  :={|nKey|If(nKey=13   ,IncIteOse(!(oBrwOse:nAt<Len(aTmpOse)),@lNovOse,@lNovIte,@vCodiOse,oDlgOse),Nil)}
       oBrwOse:bKeyDown  :={|nKey|If(nKey=VK_F3,IncIteOse(.T.,@lNovOse,@lNovIte,@vCodiOse,oDlgOse),;
                                  If(nKey=VK_F4,IncIteOse(.F.,@lNovOse,@lNovIte,@vCodiOse,oDlgOse),Nil))}
       oBrwOse:nClrText  :={||If(aTmpOse[oBrwOse:nAt,26]="C",CLR_HBLUE,CLR_BLACK)}
       oBrwOse:nClrPane  :={||If(oBrwOse:nAt%2==0,CLR_AZUL3,CLR_WHITE)}    
     

  7. Bom Dia Senhores


    Gostaria de tirar uma dúvida, estou usando a TwBrowse e em uma tela estou adicionando 2 listbox que serão a armazenado dados distintos, porém ambos os listbox possuem o mesmo padrão de botões e nesse caso estou tentando evitar redundância na tela e me surgiu uma duvida. Estou tentando colocar a regra, onde ao clicar sobre o listbox desejado e pressionar o botão "incluir" por exemplo, o sistema possa saber de qual lisbox foi o que estava selecionado.
    Tentei executar o "bLClick", porém o sistema me retornou esse erro, gostaria de saber se alguém já passou por esse problema.

      Descrição do Erro: Advertência BASE/1005  Message not found: TWBROWSE:_BLCLICK

    Chamada da Sequência: 
    ================= 
       Chamada De: TWBROWSE:ERROR(174)
       Chamada De: TWBROWSE:MSGNOTFOUND(208)
       Chamada De: TWBROWSE:_BLCLICK(0)
       Chamada De: DA0017(200)
       Chamada De: (b)MMENU(99)
       Chamada De: TMENU:COMMAND(561)
       Chamada De: TWINDOW:COMMAND(1199)
       Chamada De: TMDIFRAME:COMMAND(255)
       Chamada De: TMDIFRAME:HANDLEEVENT(0)
       Chamada De: _FWH(3450)
       Chamada De: WINRUN(0)
       Chamada De: TMDIFRAME:ACTIVATE(1152)
       Chamada De: MAIN(52)

    Variaveis em uso: 
    ================= 
       Procedimento  Tipo   Valor
       ==========================
       (b)MAIN
         Param   1:    O    Classe: ERROR
       TWBROWSE:ERROR
         Param   1:    C    "Message not found"
         Param   2:    C    "TWBROWSE"
         Param   3:    C    "_BLCLICK"
         Param   4:    N    1005
         Local   1:    U    
         Local   2:    O    Classe: TWBROWSE
         Local   3:    N    16
       TWBROWSE:MSGNOTFOUND
         Param   1:    C    "_BLCLICK"
         Param   2:    O    Classe: TWBROWSE
       TWBROWSE:_BLCLICK
         Param   1:    A    Len:    2
       DA0017
         Param   1:    U    
         Param   2:    C    "          "
         Param   3:    C    "        "
         Param   4:    C    "        "
         Param   5:    C    "      "
         Param   6:    C    ""
         Local   1:    U    
       (b)MMENU
         Param   1:    O    Classe: TMENUITEM
       TMENU:COMMAND
         Param   1:    N    20013
         Local   1:    O    Classe: TMENU
         Local   2:    O    Classe: TMENUITEM
       TWINDOW:COMMAND
         Param   1:    N    20013
         Param   2:    N    0
         Local   1:    O    Classe: TMDIFRAME
         Local   2:    N    0
         Local   3:    N    20013
         Local   4:    N    0
       TMDIFRAME:COMMAND
         Param   1:    N    20013
         Param   2:    N    0
         Local   1:    O    Classe: TMDIFRAME
         Local   2:    L    .F.
       TMDIFRAME:HANDLEEVENT
         Param   1:    N    273
         Param   2:    N    20013
         Param   3:    N    0
       _FWH
         Param   1:    N    0
         Param   2:    N    273
         Param   3:    N    20013
         Param   4:    N    0
         Param   5:    N    1
         Local   1:    O    Classe: TMDIFRAME
       WINRUN
         Param   1:    N    264536
       TMDIFRAME:ACTIVATE
         Param   1:    C    "MAXIMIZED"
         Param   2:    U    
         Param   3:    U    
         Param   4:    U    
         Param   5:    U    
         Param   6:    B    {|| ... }
         Param   7:    U    
         Param   8:    B    {|| ... }
         Param   9:    U    
         Param  10:    U    
         Param  11:    U    
         Param  12:    U    
         Param  13:    U    
         Param  14:    U    
         Param  15:    U    
         Param  16:    U    
         Param  17:    B    {|| ... }
         Param  18:    U    
         Param  19:    U    
         Param  20:    L    .F.
         Local   1:    O    Classe: TMDIFRAME
         Local   2:    U    
         Local   3:    U   

     

    Obrigado Antecipadamente

  8. Boa Tarde Kapiaba

    Então... Configurei as Dll´s do mesmo jeito do seu e o erro persiste.

    Sim o executavel, Gbasmsb.exe se encontra tanto no diretório onde se encontra o executável, quanto CurDrive()+":\"+CurDir()+'\gbas\windows\' e em nenhum dos casos eu consigo gerar o arquivo, via winexec.

    Eu faço a verificação antes de enviar o comando de gerar o arquivo txt.

    if !File( cExeDir+"gbasmsb.exe" )

    MsgStop('Arquivo gbasmsb.exe não localizado!','Atenção')
    Return( .F. )
    endif

    Já passei um email para o suporte da DataSus e nada... eu tbm acho que o problema seja no executável, agora estou no aguardo da resposta deles.

  9. Bom Dia Kapiaba

    Então, o teste que eu estou fazendo é numa máquina com windows XP, eu já fiz diversos testes... quando eu tiro o conteudo " > C:\retorno.txt" ou " > c:\retorno\retorno.txt", o executável gbasmsb.exe gera a chave que preciso, isso usando o winexec.

    Porém ao executar esse mesmo comando no prompt de comando o arquivo é gerado com sucesso... por isso eu não sei se de fato o problema é no executavel ( gbasmsb ).

    Coloquei o trecho que código que você me passou e ocorreu o mesmo problema... abre-se uma tela do dos, porém não é gerado o arquivo dentro da pasta c:\retorno

  10. local nHandle, cTmpFile := dtos(date())+strtran(time(),":")+".dna"

    local cExeDir := CurDrive()+":\"+CurDir()+'\gbas\windows\'


    ::Dna := ""


    ferase( cTmpFile )


    if !File( cExeDir+"gbasmsb.exe" )

    MsgStop('Arquivo gbasmsb.exe não localizado!','Atenção')

    Return( .F. )

    endif



    WinExec( "gbasmsb.exe --solicitacao 12345678909 12123123000111 3759 GO 30/09/2014 > c:\retorno.txt" )

    WinExec( cExeDir+"gbasmsb.exe --solicitacao 12345678909 12123123000111 3759 GO 30/09/2014 > c:\retorno.txt" )

    WinExec( cExeDir+"gbasmsb.exe --solicitacao "+::Cpf+" "+::Cnpj+" "+::Crm+" "+::UF+" "+dtoc(::Data_Receita) )


    return (.t.)

  11. Boa Tarde gente!!!


    Eu estou com o seguinte problema: Estou usando a função "winexec" e não consegui puxar o retorno do gbasmsb.exe.

    Se eu abrir uma janela do prompt do DOS e executar o comando "gbasmsb.exe --solicitacao 12345678909 12123123000111 3759 GO 29/09/2014 > c:\retorno.txt" eu consigo gerar o arquivo texto com o conteúdo do DNA gerado, porém se eu faço a mesma execução dentro do sistema o mesmo não retorna nenhum arquivo, somente abre o prompt do Dos e fecha.

    Alguém já passou por esse problema?

  12. Olá a Todos

    Só para constar o encerramento do tópico, conversei com o Luiz Kulik e ele me passou a seguinte ferramenta, caso alguém precise Xpdf: Download www.foolabs.com/xpdf/download.html

    Muito bom...

    Abraço

    Márcio Pinheiro Varjão

    DECLA TECNOLOGIA

    xHB build 1.2.1 (SimpLex) & BCC 5.82 & FW 11.12 / Pelles C 6.50.8

  13. Olá Kapiaba...

    Irei olhar essa classe, talvez ela ajude a solucionar o meu problema...

    Obrigado

    citação:

    http://www.baixaki.com.br/download/free-pdf-to-word-doc-converter.htm

    João Santos - São Paulo.

    joao@pleno.com.br

    Fone: (11) 3106-2832

    http://pt-br.facebook.com/people/Jo%C3%A3o-Santos/100001195894196

    FWH 2.7 - xHARBOUR WorkShop.Exe


    id=quote>id=quote>

    Márcio Pinheiro Varjão

    DECLA TECNOLOGIA

    xHB build 1.2.1 (SimpLex) & BCC 5.82 & FW 11.12 / Pelles C 6.50.8

  14. Olá Jmsilva

    Obrigado pelo exemplo de como tratar um arquivo pdf, irei fazer os teste para ver se deu tudo certinho... mas antecipadamente agradeço pela boa vontade..

    Valew

    citação:

    Olá Pessoal, diante da falta de opção vou apresentar a minha solução, porém sei que não é o desejado pelo Márcio. Mas estou postando a rotina a baixo porque poderá ser útil para quem precisa ler um PDF e tratar o texto como desejar, salvando-o em txt, dbf, como achar melhor e não tem opção melhor.

    O indesejado é a necessidade de ter instalado o pacote Office(seja Br ou Open) .

    Mas acho bastante útil.

    
    

    ** Autor....: José Maria da Silva **

    ** Objetivo: Ler um arquivo Draw ou PDF, extrair e exibir em browse, **

    ** salvar em TXT. **

    ** Requesito: Precisa ter o Broffice instalado ** **

    **============================================================================**

    #INCLUDE "FIVEWIN.CH"

    **==============================================================================

    FUNCTION MAIN()

    **==============================================================================

    LOCAL oService,oDesktop,oDoc,oShape,oCursor,oDrawPage,aProp:={},i

    LOCAL cFile,cTEXTO,aVetStr:={}

    cFile := cGetFile("Arquivo (pdf,odg)|*.odg;*.pdf|",;

    "Selecione o Arquivo (pdf/odg)", 4 )

    IF EMPTY(cFILE) ; RETURN .F. ; ENDIF

    cFile := "file:///"+StrTran(cFile,"\","/")

    oService := TOleAuto():New("com.sun.star.ServiceManager")

    oDesktop := oService:createInstance("com.sun.star.frame.Desktop")

    AAdd(aProp,MakePropertyValue(oService,"Hidden",.T.)) //oculta

    oDoc := oDesktop:loadComponentFromURL(cFile, "_blank", 0, aProp)

    oDrawPage := oDoc:getDrawPages():getByIndex(0)

    //AKI pode colocar um oMeter

    FOR i:=0 TO oDrawPage:getCount()-1

    oShape := oDrawPage:getByIndex(i)

    oCursor := oShape:createTextCursor()

    cTEXTO := oCursor:getText():getString()

    AADD(aVetStr,cTEXTO)

    NEXT

    oDoc:Close(.T.)

    xbrowse(aVetStr)

    RETURN NIL

    **==============================================================================

    STATIC FUNCTION MakePropertyValue(oService,cName,nValue)

    **==============================================================================

    LOCAL oStruct := oService:Bridge_GetStruct("com.sun.star.beans.PropertyValue")

    oStruct:Name := cName

    oStruct:Value := nValue

    RETURN(oStruct)

    id=code>id=code>

    JMSILVA-Caraguatatuba/SP


    id=quote>id=quote>

    Márcio Pinheiro Varjão

    DECLA TECNOLOGIA

    xHB build 1.2.1 (SimpLex) & BCC 5.82 & FW 11.12 / Pelles C 6.50.8

  15. citação:

    Olá,

    Que eu saiba não tem uma classe, mas tem um executável que faz isto muito bem ( Convert Doc ). Quem sabe bem sobre isto está muito longe de você. É o Alex2002. icon_smile.gif

    []s,

    Evandro G. de Paula

    Curvelo - MG

    evandro@skillnet.com.br (Escr. - na Cidade)

    imortal@skillnet.com.br (Res. - na Roça)

    FWH 9.01+PellesC+MyMake+xHarbour.org 1.00+SqlLib


    id=quote>id=quote>

    Olá...

    Pois é Evandro, eu até conversei com o Alexandre, mas o problema é que o Convert Doc precisa ser instalado e estava precisando de algo nativo preferencialmente.

    Márcio Pinheiro Varjão

    DECLA TECNOLOGIA

    xHB build 1.2.1 (SimpLex) & BCC 5.82 & FW 11.12 / Pelles C 6.50.8

  16. Olá Garimpeiros

    Gostaria de saber se existe alguma classe nativa do xHarbour ou executável ( De preferencia que execute via linha de comando ) que converta Arquivos PDF em Txt.

    Márcio Pinheiro Varjão

    DECLA TECNOLOGIA

    xHB build 1.2.1 (SimpLex) & BCC 5.82 & FW 11.12 / Pelles C 6.50.8

    Editado por - scooby on 13/03/2012 15:10:05

  17. Olá Garimpeiros

    Gostaria de saber se existe alguma classe nativa do xHarbour ou executável ( De preferencia que execute via linha de comando ) que converta Arquivos PDF em Txt.

    Márcio Pinheiro Varjão

    DECLA TECNOLOGIA

    xHB build 1.2.1 (SimpLex) & BCC 5.82 & FW 11.12 / Pelles C 6.50.8

    Editado por - scooby on 13/03/2012 15:10:05

  18. Boa Tarde Garimpeiros.

    Alguém já esta fazendo uso do TVistaMenu???

    Estou com o seguinte problema, quando eu mando executar o primeiro menu o sistema efetua a criação na janela principal até ai tudo ok, porém quando clico no botão de "procedimento" que efetua a criação do 3 menu, eu não consigo criar um novo menu na janela principal, abaixo segue o código que estou usando para criar as janelas.

    
    

    DEFINE WINDOW oERP FROM 4, 4 TO 25, 75 TITLE oSis:_sistema

    MenuRibbonERP()

    ACTIVATE WINDOW oERP MAXIMIZED

    ////////////////////////////

    static function MenuRibbonERP()

    DEFINE RIBBONBAR oRBar WINDOW oERP;

    PROMPT 'Tabelas', ;

    'Custo', ;

    'Orçamento', ;

    'Vendas', ;

    'Contas a Pagar', ;

    'Contas a Receber', ;

    'Produção', ;

    'Documentos', ;

    'Contratos', ;

    'Bancos,', ;

    'Estoque' HEIGHT 140 TOPMARGIN 25

    oRBar:nLeftMargin = 01

    oRBar:CalcPos()

    ADD GROUP oGr1 RIBBON oRBar TO OPTION 1 width 1000

    @ 16, 05 ADD BUTTON oBtn11 GROUP oGr1 SIZE 80, 72 PROMPT " &Tabelas " round ;

    Action Menu_Tab_1()

    @ 16, 85 ADD BUTTON oBtn1 GROUP oGr1 SIZE 80, 72 PROMPT " &Relatório " round ;

    action nil

    @ 16, 165 ADD BUTTON oBtn13 GROUP oGr1 SIZE 80, 72 PROMPT " &Procedimento " round ;

    action Menu_Tab_3()

    @ 16, 245 ADD BUTTON oBtn15 GROUP oGr1 SIZE 80, 72 PROMPT " &Usuário " round ;

    action nil

    @ 16, 325 ADD BUTTON oBtn16 GROUP oGr1 SIZE 80, 72 PROMPT " S&enha " round ;

    action nil

    @ 16, 405 ADD BUTTON oBtn17 GROUP oGr1 SIZE 80, 72 PROMPT " &Sair " round ;

    action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr2 RIBBON oRBar TO OPTION 2 width 1000

    @ 16, 890 ADD BUTTON oBtn1 GROUP oGr2 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr3 RIBBON oRBar TO OPTION 3 width 1000

    @ 16, 890 ADD BUTTON oBtn1 GROUP oGr3 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr4 RIBBON oRBar TO OPTION 4 width 1000

    @ 16, 890 ADD BUTTON oBtn4 GROUP oGr4 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr5 RIBBON oRBar TO OPTION 5 width 1000

    @ 16, 890 ADD BUTTON oBtn5 GROUP oGr5 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr6 RIBBON oRBar TO OPTION 6 width 1000

    @ 16, 890 ADD BUTTON oBtn6 GROUP oGr6 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr7 RIBBON oRBar TO OPTION 7 width 1000

    @ 16, 890 ADD BUTTON oBtn7 GROUP oGr7 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr8 RIBBON oRBar TO OPTION 8 width 1000

    @ 16, 890 ADD BUTTON oBtn8 GROUP oGr8 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr9 RIBBON oRBar TO OPTION 9 width 1000

    @ 16, 890 ADD BUTTON oBtn9 GROUP oGr9 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr10 RIBBON oRBar TO OPTION 10 width 1000

    @ 16, 890 ADD BUTTON oBtn10 GROUP oGr10 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr11 RIBBON oRBar TO OPTION 11 width 1000

    @ 16, 890 ADD BUTTON oBtn11 GROUP oGr11 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    *********************

    Function Menu_Tab_1

    local oWnd

    local oVmenu

    local oItem

    local oIcon

    DEFINE WINDOW oWnd TITLE "VistaMenu"

    oVMenu := TVistaMenu():New( 100, 100, 100, 100, oERP )

    oVMenu:nColumns := 1

    oVMenu:nType := 2

    // Primeiro Menu

    oItem := oVMenu:AddItem( "Tabelas ", "" )

    oItem:AddItem( "Ramo de Atividades",,;

    { | o | o := ERP_AA() } )

    oItem:AddItem( "Fornecedores",,;

    { | o | o := ERP_AB() } )

    oItem:AddItem( "Clientes",,;

    { | o | o := ERP_AC() } )

    oWnd:oClient := oVMenu

    ACTIVATE WINDOW oWnd On Init (oWnd:Minimize(),oWnd:End())

    return 0

    *********************

    Function Menu_Tab_3

    local oWnd

    local oVmenu

    local oItem

    local oIcon

    DEFINE WINDOW oWnd TITLE "VistaMenu"

    oVMenu := TVistaMenu():New( 100, 100, 100, 100, oErp )

    oVMenu:nColumns := 1

    oVMenu:nType := 2

    // Primeiro Menu

    oItem := oVMenu:AddItem( "Procedimentos Auxiliares", "" )

    oItem:AddItem( "Cadastro de Perfil",,;

    { | o | o := ERP_OA() } )

    oItem:AddItem( "Atualizar preço de Venda",,;

    { | o | o := ERP_OB() } )

    oWnd:oClient := oVMenu

    ACTIVATE WINDOW oWnd On Init (oWnd:Minimize(),oWnd:End())

    return 0

    id=code>id=code>

    Márcio Pinheiro Varjão

    DECLA TECNOLOGIA

    xHB build 1.2.1 (SimpLex) & BCC 5.82 & FW 11.12 / Pelles C 6.50.8

    Editado por - Scooby on 23/01/2012 15:44:32

  19. Boa Tarde Garimpeiros.

    Alguém já esta fazendo uso do TVistaMenu???

    Estou com o seguinte problema, quando eu mando executar o primeiro menu o sistema efetua a criação na janela principal até ai tudo ok, porém quando clico no botão de "procedimento" que efetua a criação do 3 menu, eu não consigo criar um novo menu na janela principal, abaixo segue o código que estou usando para criar as janelas.

    
    

    DEFINE WINDOW oERP FROM 4, 4 TO 25, 75 TITLE oSis:_sistema

    MenuRibbonERP()

    ACTIVATE WINDOW oERP MAXIMIZED

    ////////////////////////////

    static function MenuRibbonERP()

    DEFINE RIBBONBAR oRBar WINDOW oERP;

    PROMPT 'Tabelas', ;

    'Custo', ;

    'Orçamento', ;

    'Vendas', ;

    'Contas a Pagar', ;

    'Contas a Receber', ;

    'Produção', ;

    'Documentos', ;

    'Contratos', ;

    'Bancos,', ;

    'Estoque' HEIGHT 140 TOPMARGIN 25

    oRBar:nLeftMargin = 01

    oRBar:CalcPos()

    ADD GROUP oGr1 RIBBON oRBar TO OPTION 1 width 1000

    @ 16, 05 ADD BUTTON oBtn11 GROUP oGr1 SIZE 80, 72 PROMPT " &Tabelas " round ;

    Action Menu_Tab_1()

    @ 16, 85 ADD BUTTON oBtn1 GROUP oGr1 SIZE 80, 72 PROMPT " &Relatório " round ;

    action nil

    @ 16, 165 ADD BUTTON oBtn13 GROUP oGr1 SIZE 80, 72 PROMPT " &Procedimento " round ;

    action Menu_Tab_3()

    @ 16, 245 ADD BUTTON oBtn15 GROUP oGr1 SIZE 80, 72 PROMPT " &Usuário " round ;

    action nil

    @ 16, 325 ADD BUTTON oBtn16 GROUP oGr1 SIZE 80, 72 PROMPT " S&enha " round ;

    action nil

    @ 16, 405 ADD BUTTON oBtn17 GROUP oGr1 SIZE 80, 72 PROMPT " &Sair " round ;

    action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr2 RIBBON oRBar TO OPTION 2 width 1000

    @ 16, 890 ADD BUTTON oBtn1 GROUP oGr2 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr3 RIBBON oRBar TO OPTION 3 width 1000

    @ 16, 890 ADD BUTTON oBtn1 GROUP oGr3 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr4 RIBBON oRBar TO OPTION 4 width 1000

    @ 16, 890 ADD BUTTON oBtn4 GROUP oGr4 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr5 RIBBON oRBar TO OPTION 5 width 1000

    @ 16, 890 ADD BUTTON oBtn5 GROUP oGr5 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr6 RIBBON oRBar TO OPTION 6 width 1000

    @ 16, 890 ADD BUTTON oBtn6 GROUP oGr6 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr7 RIBBON oRBar TO OPTION 7 width 1000

    @ 16, 890 ADD BUTTON oBtn7 GROUP oGr7 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr8 RIBBON oRBar TO OPTION 8 width 1000

    @ 16, 890 ADD BUTTON oBtn8 GROUP oGr8 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr9 RIBBON oRBar TO OPTION 9 width 1000

    @ 16, 890 ADD BUTTON oBtn9 GROUP oGr9 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr10 RIBBON oRBar TO OPTION 10 width 1000

    @ 16, 890 ADD BUTTON oBtn10 GROUP oGr10 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    ADD GROUP oGr11 RIBBON oRBar TO OPTION 11 width 1000

    @ 16, 890 ADD BUTTON oBtn11 GROUP oGr11 SIZE 80, 72 PROMPT " Sair " action sai_ERP() BITMAP "LOGOUT"

    *********************

    Function Menu_Tab_1

    local oWnd

    local oVmenu

    local oItem

    local oIcon

    DEFINE WINDOW oWnd TITLE "VistaMenu"

    oVMenu := TVistaMenu():New( 100, 100, 100, 100, oERP )

    oVMenu:nColumns := 1

    oVMenu:nType := 2

    // Primeiro Menu

    oItem := oVMenu:AddItem( "Tabelas ", "" )

    oItem:AddItem( "Ramo de Atividades",,;

    { | o | o := ERP_AA() } )

    oItem:AddItem( "Fornecedores",,;

    { | o | o := ERP_AB() } )

    oItem:AddItem( "Clientes",,;

    { | o | o := ERP_AC() } )

    oWnd:oClient := oVMenu

    ACTIVATE WINDOW oWnd On Init (oWnd:Minimize(),oWnd:End())

    return 0

    *********************

    Function Menu_Tab_3

    local oWnd

    local oVmenu

    local oItem

    local oIcon

    DEFINE WINDOW oWnd TITLE "VistaMenu"

    oVMenu := TVistaMenu():New( 100, 100, 100, 100, oErp )

    oVMenu:nColumns := 1

    oVMenu:nType := 2

    // Primeiro Menu

    oItem := oVMenu:AddItem( "Procedimentos Auxiliares", "" )

    oItem:AddItem( "Cadastro de Perfil",,;

    { | o | o := ERP_OA() } )

    oItem:AddItem( "Atualizar preço de Venda",,;

    { | o | o := ERP_OB() } )

    oWnd:oClient := oVMenu

    ACTIVATE WINDOW oWnd On Init (oWnd:Minimize(),oWnd:End())

    return 0

    id=code>id=code>

    Márcio Pinheiro Varjão

    DECLA TECNOLOGIA

    xHB build 1.2.1 (SimpLex) & BCC 5.82 & FW 11.12 / Pelles C 6.50.8

    Editado por - Scooby on 23/01/2012 15:44:32

  20. Olá a todos...

    Só reportando o problema citado no tópico acima referente ao Folder, na versão do Fivewin 11.10 o Folder de fato não esta funcionando, tanto a execução do valid quanto os direcionais "Seta para Cima" e "Seta para Baixo" e "TAB", retornei o fw para versão 10.09 e os controles funcionaram corretamente.

    Márcio Pinheiro Varjão

    DECLA TECNOLOGIA

    xHB build 1.2.1 (SimpLex) & BCC 5.82 & FW 10.9 / Pelles C 6.00.2

  21. Olá Luiz Fernando

    Pois é, quando eu dou um "Enter" o foco simplesmente se perde dentro do dialog ele não para no campo ctipofj simplesmente eu preciso alternar de tela para saber onde o foco esta no dialog ou somente retorna quando clico com o mouse sobre o campo desejado.

    Conferi o "ORDER CONTROLS" do pelles e também esta seguindo uma ordem já estabelecida. Mesmo fazendo todos esses passos acima não consegui fazer com que o "Enter" nem o "TAB" pudessem ser usados... só que existe um porém que não sei se tem alguma influência, quando eu clico no ultimo campo do meu adialogs[1] e vou dando "Shift+Tab" o folder reconhece a ordem e vai subindo os campos da forma correta.

    Abraço

  22. Olá Luís

    Meu código está da seguinte maneira...

    
    

    define dialog odlg_0002 resource "dlg_0002" title rot1+' - '+rot2 color cor_dlg HELPID 0002

    redefine Get ocfornec var cCodfornec picture '@k 99999' id 201 of oDlg_0002 update

    redefine Get ofornec var cfornec picture '@!' id 202 of oDlg_0002 update

    redefine folder oFld_0002 ID 601 OF oDlg_0002 ;

    prompt "Dados &Básicos", "&Outros Dados";

    dialogs "DLG_0002A", "DLG_0002B" UPDATE

    oFld_0002:aenable = {.t.,.t.}

    redefine get orazao var crazao picture '@!' id 203 of ofld_0002:adialogs[1] update

    redefine Radio oTipoFJ var ctipofj id 801, 802 of ofld_0002:adialogs[1] update

    redefine get ocgc var cCgc picture '99999999999999' id 204 of ofld_0002:adialogs[1] update

    id=code>id=code>

    .

    .

    .

    Restante da tela segue o mesmo padrão citado acima.

    Já no DLG_0002A que é uma Aba do Folder as propriedades estão da seguinte maneira "Style = Child", "Modal Frame = yes", "3D look = yes", já a propriedades dos EDIT dentro da Child estão da seguinte maneira: Com YES somente as propriedade "Border","Visible" e "TabStop"

    Estou usando o Pelles 6.5 e a minha maquina em questão o processador é 64bits.

×
×
  • Create New...