Porque eu uso xHarbour the Best?

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Porque eu uso xHarbour the Best?

Mensagem por Kapiaba »

Por causa disto aqui:

https://pctoledo.org/forum/viewto ... f=4&t=9859

Não tem nada que eu não faça com FiveWin For xHarbour.

I Love FiveWin .and. xHarbour.

P.S.: Este tópico não tem a intenção de criar polêmica, apenas expressar o meu gosto personal.

Obg. abs.

Regards, saludos.

João Santos - São Paulo - Brasil.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Porque eu uso xHarbour the Best?

Mensagem por JoséQuintas »

Não entendi.
Lá não tem nada demais, só alguém com harbour não criado.
E tem sobre gente misturando LIBs gráficas e com problema, coisa que não é comum, e as LIBs não existem no XHarbour pra comparação.
Sobre misturar: já postei no fórum, precisa desativar GTGUI, e não pode usar INIT WINDOW na HWGUI, apenas INIT DIALOG que faz a mesma coisa e funciona.

Sobre harbour e xharbour..... xharbour é fork, tem toda base do harbour, apenas a sequência de um não é a mesma do outro.
Os comentários no fórum são sobre multithread, coisa que pouca gente usa, e liberação de memória, que pode ser contornada com função de liberação de memória.

Não lembro de ninguém dizer que abandonou um ou outro por causa de defeito.

O que vejo é usarem um ou outro, e tudo funcionar, e não terem motivo pra trocar.

E com LIBs gráficas é a mesma coisa.

The best.... deixou de existir há muito tempo.... temos só IT WORKS!
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
vilian
Usuário Nível 1
Usuário Nível 1
Mensagens: 27
Registrado em: 29 Ago 2013 17:39
Localização: Belem/Pa

Porque eu uso xHarbour the Best?

Mensagem por vilian »

Eu iniciei com xHarbour, mas depois migrei pra Harbour e acho que foi o melhor que eu fiz ;)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Porque eu uso xHarbour the Best?

Mensagem por JoséQuintas »

JoséQuintas escreveu:Não lembro de ninguém dizer que abandonou um ou outro por causa de defeito.
Acho que vou mudar isso.
erro.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Porque eu uso xHarbour the Best?

Mensagem por Kapiaba »

Bom dia Mister, não entendi pohhha nenhuma da sua postagem anterior. kkkkkk

A ÚNICA coisa que eu não gosto no xHarbour ou no FiveWin, é a parte de escrever um módulo em Código? @SAY... kkkk, estou à três dias tentando converter um módulo em CLIPPER e estou usando @SAY para tentar dominar o programa em CLIPPER que é ruim para kcte, pense em um código horroroso, se eu tivesse iniciado com WORKSHOP.exe the best, em 3 horas estaria pronto. Más, estou (Re)aprendendo CLIPPER(kkkkkk). Tela do Projeto sendo convertido:
IPDR_MENU.png
I LOVE FIVEWIN FOR [x]Harbour.

Obg. abs.

Regards.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Porque eu uso xHarbour the Best?

Mensagem por Kapiaba »

Fazer isso em FiveWin, é fácil e prático(Usando Workshop.exe), agora para eu que não manjo de @SAY do FiveWin, isso é um massacre da serra elétrica. kkkkkkk Primeiro, dar leitura no código fonte de outra pessoa em CLIPPER, é uma parto, e depois escrever em Código(só para dominar a lógica do programador CLIPPER), é horroroso. kkkkk
IPDR_CLIENTES.png
I LOVE FOVEWIN FOR [x]Harbour.

Regards, saludos.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Porque eu uso xHarbour the Best?

Mensagem por JoséQuintas »

Sobre a postagem anterior.....
Tem defeito na lib png, que ninguém consegue resolver.
Tem defeito na harupdf, o exemplo existente no harbour 3.2 dá GPF.
Tentei achar uma posição na história do harbour aonde isso funcione.... NÃO EXISTE.
Voltei até 2013, 10 anos atrás, não entendo, porque uma vez na vida do harbour deveria ter funcionado.
Baixei a oficial nightly, que todo mundo baixa, que vém pronta e com mingw, também não funciona com ela.

No harbour 3.4, tudo roda lindo.

Então, talvez eu seja o primeiro a abandonar o harbour 3.2 por causa de DEFEITOS.

Só não estou com saco de fazer isso agora.
Assim como nunca tive saco de usar lib gráfica no harbour.

Sei lá se a frase faz sentido:
"eu amo fivewin, muito bom fazer telas usando workshop e não fivewin"

Essas telas são fivewin ou gtwvg ou gtwvw ?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Porque eu uso xHarbour the Best?

Mensagem por Kapiaba »

Mister Quintas, kkkkkk, o senhor é hilário. gtwvg ou gtwvw ? Que pohhhha é essa? EU USO FIVEWIN na ÍNTEGRA. FIVEWIN É O BICHO. kkkkkkkk

Um pouco de código para vocês verem que dureza converter CLIPPER CONSOLE, para @SAY... Em WORKSHOP.exe the best, isto é muito simples e prático, a velocidade de desenvolvimento, é outro nível. Más, vamos que vamos, estou aprendendo.

Código: Selecionar todos

// INICIO EM: 11/04/2023 - Joao Santos - kapiabafwh@gmail.com
// MODIFICADO EM: 12/04/2023    MODULO: CLIENTES.PRG

#Include "Ambienty.ch"

REQUEST OrdKeyNo, OrdKeyCount, OrdCreate, OrdKeyGoto // Para ListBox

STATIC nOpcRadioClien := 1

/* TENTANDO SIMULAR MODO CONSOLE POR OUTRO PRISMA.
@ 06, 28 PROMPT "0. Institui‡Æo:  Incluir, Alterar ou Excluir" ;
        MESSAGE "tecle: o 1§ caracter do item desejado, [^] ou [v]"

         IPDR0110()  // LINHA 724 DE SISIPDR.PRG

// STATIC oWnd

FUNCTION ipdr0110()
*/
FUNCTION CLIENTES_INST( oWnd ) // CLIENTES/INSTITUICOES. Joao 08/04/2023 Covid-19

   LOCAL oDlg, oGroup, oFnt, oFont, IDCor, oSaida, aGet := ARRAY(5), oLbx,   ;
         cAlias, oIncluir, oAlterar, oExcluir, oImprimir, nKey, aGrad, cTitle
   LOCAL oCurDedo, oRadMenu, nBuscaIpdr := SPACE(06) //[     ] //0

   HB_GCALL( .F. ) // PARA LIMPAR A MEMORIA

   SELECT( DBIPDR_INS ) // CLIENTES / INSTITUICOES - 08/04/2023 - Joao.

   SET INDEX TO IPDR_INS // POR CODIGO DO NIPDR PARA BUSCA NO GET
// SET INDEX TO IPDRINS2 // POR NOME DO CLIENTE. MANTIVE COMPATIBILIDADE COM
                         // OS NOMES DOS INDICES, APESAR DE NAO GOSTAR.
   GO TOP

   cAlias := ALIAS()

   /*
   // POR CODIGO - EM: REINDEXA.PRG - 09/04/2023 - Joao
   INDEX ON NIPDR TO IPDR_INS FOR .NOT. DELETED()                            ;
   // POR NOME DA INSTITUICAO/CLIENTE PARA A NOVA LISTBOX FOR WINDOWS. Joao.
   INDEX ON INST TO IPDRINS2 FOR .NOT. DELETED()                             ;
      EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() ) EVERY 10
   */

   DEFINE CURSOR oCurDedo RESOURCE "Dedo"
   DEFINE FONT oFont  NAME "Ms Sans Serif"  SIZE 00, -14 BOLD
   DEFINE FONT oFnt   NAME "Ms Sans Serif"  SIZE 00, -12 BOLD
   DEFINE FONT oFont1 NAME "Calibri"        SIZE 0,  -14
   DEFINE FONT oFont2 NAME "Segoe UI Light" SIZE 0,  -18
   DEFINE FONT oFont3 NAME "Segoe UI"       SIZE 0,  -26

   aGrad := { { 0.30, CLR_WHITE, CLR_WHITE },{ 0.50, CLR_WHITE, CLR_WHITE } }

   IF( XRESOLUCAO = "R1024_768" )

      DEFINE DIALOG oDlg RESOURCE "BROWSE_CLIENTES_1024_768" FONT oFont      ;
         GRADIENT aGrad

   ELSEIF( XRESOLUCAO = "R1280_768" )

      DEFINE DIALOG oDlg RESOURCE "BROWSE_CLIENTES_1280_768" FONT oFont      ;
         GRADIENT aGrad

   ENDIF

   oDlg:lHelpIcon := .F.

   REDEFINE SAY ID 401 OF oDlg COLORS CLR_CYAN, CLR_WHITE UPDATE FONT oFnt TRANSPARENT
   REDEFINE SAY ID 402 OF oDlg COLORS CLR_CYAN, CLR_WHITE UPDATE FONT oFnt TRANSPARENT
   REDEFINE SAY ID 403 OF oDlg COLORS CLR_CYAN, CLR_WHITE UPDATE FONT oFnt TRANSPARENT
   REDEFINE SAY ID 420 OF oDlg COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFnt TRANSPARENT

   REDEFINE GROUP oGroup ID 501 OF oDlg COLOR CLR_ORANGE, CLR_WHITE FONT oFnt TRANSPARENT
   REDEFINE GROUP oGroup ID 502 OF oDlg COLOR CLR_ORANGE, CLR_WHITE FONT oFnt TRANSPARENT

   //    Set( 29, ! Set( 29 ) )
   IF Set( _SET_INSERT, ! Set( _SET_INSERT ) )
      Set( _SET_INSERT, ! Set( _SET_INSERT ) )
   ENDIF

   REDEFINE GET aGet[1] VAR nBuscaIpdr PICTURE "@KR 999999" ID 20 OF oDlg    ;
      UPDATE COLORS CLR_CYAN, CLR_WHITE FONT oFont                           ;
      VALID ( LOCALIZA_NIPRD( aGet, nBuscaIpdr, oLbx ) )

   aGet[1]:cTooltip :={ "Busca Rápida do I.P.D,R.",                          ;
                        "BUSCA RÁPIDA DO I.P.D.R.", 1, CLR_WHITE, CLR_CYAN }

   REDEFINE RADIO oRadMenu VAR nOpcRadioClien  ID 201, 202 OF oDlg           ;
      UPDATE ON CHANGE( TROCA_INDICE_CLIEN( nOpcRadioClien, cAlias, oLbx ),  ;
                        oLbx:Refresh(), oLbx:SetFocus() )

   // funciona.
   oRadMenu:aItems[1]:cTooltip := "Índice Por Nome  "
   oRadMenu:aItems[2]:cTooltip := "Índice Por Código"
   // oRadMenu:aItems[4]:cTooltip := "Por Endereço"
   // oRadio:aItems[3]:Disable()  // DESABILITA O RADIO

   oRadMenu:SetFont( oFnt )

   REDEFINE LISTBOX oLbx FIELDS                                              ;
            ( cAlias )->NIPDR                                              , ; 
            ( cAlias )->INST                                               , ; 
            ( cAlias )->ENDERECO                                           , ; 
            ( cAlias )->BAIRRO                                             , ; 
            ( cAlias )->CIDADE                                             , ; 
            ( cAlias )->UF                                                 , ; 
            ( cAlias )->CEP                                                , ; 
            ( cAlias )->TEL_DDD                                            , ; 
            ( cAlias )->TEL_NUM                                            , ; 
            ( cAlias )->TEL_RAMAL                                          , ; 
            ( cAlias )->TEL_OBS                                            , ; 
            ( cAlias )->FAX_NUM                                            , ; 
            ( cAlias )->FAX_RAMAL                                          , ; 
            ( cAlias )->FAX_OBS                                            , ; 
            ( cAlias )->TEL2_NUM                                           , ; 
            ( cAlias )->TEL2_RAMAL                                         , ; 
            ( cAlias )->TEL2_OBS                                           , ; 
            ( cAlias )->TEL3_NUM                                           , ; 
            ( cAlias )->TEL3_RAMAL                                         , ; 
            ( cAlias )->TEL3_OBS                                           , ; 
       LOWER( ( cAlias )->EMAIL )                                          , ;
      TRANSF( ( cAlias )->CNPJ_CPF, "99.999.999/9999-99" )                 , ;
            ( cAlias )->CXPOST                                             , ; 
            ( cAlias )->TROCA                                              , ; 
            ( cAlias )->DATA                                               , ; 
            ( cAlias )->TIPO                                               , ; 
            ( cAlias )->MESMOV                                             , ; 
            ( cAlias )->RCNEN                                              , ; 
            ( cAlias )->RCNEN_ANT                                          , ; 
            ( cAlias )->OBS_RCNEN                                          , ; 
            ( cAlias )->SETOR                                              , ; 
            ( cAlias )->APLIC                                              , ; 
            ( cAlias )->RESP1                                              , ; 
            ( cAlias )->CPF                                                , ;
      TRANSF( ( cAlias )->NCPF, "999.999.999-99" )                         , ;
            ( cAlias )->RESP2                                              , ; 
            ( cAlias )->VENC                                               , ; 
            ( cAlias )->ATIVO                                              , ; 
            ( cAlias )->TIPO_INST                                          , ; 
            ( cAlias )->AREA_INST                                          , ; 
            ( cAlias )->APLIC_PRI                                          , ; 
            ( cAlias )->APLIC_SEC                                          , ; 
            ( cAlias )->DESC_APLI1                                         , ; 
            ( cAlias )->DESC_APLI2                                         , ; 
       LOWER( ( cAlias )->EMAILF )                                         , ;
            SPACE(01)                                                        ; 
            HEADERS ( OemToAnsi( "CàD. NIPDR:" ) )                         , ;
                    ( OemToAnsi( "NOME CLIENTE/INSTITUIۂO:" ) )           , ;
                    ( OemToAnsi( "ENDERE€O:  " ) )                         , ;
                    ( OemToAnsi( "BAIRRO:    " ) )                         , ;
                    ( OemToAnsi( "CIDADE     " ) )                         , ; 
                    ( OemToAnsi( "UF.:       " ) )                         , ;
                    ( OemToAnsi( "CEP.:      " ) )                         , ;
                    ( OemToAnsi( "TEL. DDD.: " ) )                         , ;
                    ( OemToAnsi( "TEL. NUM.: " ) )                         , ;
                    ( OemToAnsi( "TEL. RAMAL:" ) )                         , ;
                    ( OemToAnsi( "TEl. OBS.: " ) )                         , ;
                    ( OemToAnsi( "FAX NUM.:  " ) )                         , ;
                    ( OemToAnsi( "FAX RAMAL: " ) )                         , ;
                    ( OemToAnsi( "FAX OBS.:  " ) )                         , ;
                    ( OemToAnsi( "TEL2 NUM.: " ) )                         , ;
                    ( OemToAnsi( "TEL2 RAMAL:" ) )                         , ;
                    ( OemToAnsi( "TEL2 OBS.: " ) )                         , ;
                    ( OemToAnsi( "TEL3 NUM.: " ) )                         , ;
                    ( OemToAnsi( "TEL3 RAMAL:" ) )                         , ;
                    ( OemToAnsi( "TEL3 OBS.: " ) )                         , ;
                    ( OemToAnsi( "EMAIL CLI: " ) )                         , ;
                    ( OemToAnsi( "CNPJ/CPF.: " ) )                         , ;
                    ( OemToAnsi( "CXPOST.:   " ) )                         , ;
                    ( OemToAnsi( "TROCA:     " ) )                         , ;
                    ( OemToAnsi( "DATA:      " ) )                         , ;
                    ( OemToAnsi( "TIPO:      " ) )                         , ;
                    ( OemToAnsi( "MES MOV.:  " ) )                         , ;
                    ( OemToAnsi( "RCNEN:     " ) )                         , ;
                    ( OemToAnsi( "RCNEN ANT: " ) )                         , ;
                    ( OemToAnsi( "OBS RCNEN: " ) )                         , ;
                    ( OemToAnsi( "SETOR:     " ) )                         , ;
                    ( OemToAnsi( "APLIC.:    " ) )                         , ;
                    ( OemToAnsi( "RESPONS1:  " ) )                         , ;
                    ( OemToAnsi( "CPF.:      " ) )                         , ;
                    ( OemToAnsi( "NUM. CPF:  " ) )                         , ;
                    ( OemToAnsi( "RESPONS2:  " ) )                         , ;
                    ( OemToAnsi( "VENCIMENTO:" ) )                         , ;
                    ( OemToAnsi( "ATIVO:     " ) )                         , ;
                    ( OemToAnsi( "TIPO INST.:" ) )                         , ;
                    ( OemToAnsi( "AREA INST.:" ) )                         , ;
                    ( OemToAnsi( "APLIC PRI.:" ) )                         , ;
                    ( OemToAnsi( "APLIC SEC.:" ) )                         , ;
                    ( OemToAnsi( "DESC APLI1:" ) )                         , ;
                    ( OemToAnsi( "DESC APLI2:" ) )                         , ;
                    ( OemToAnsi( "EMAILF.:   " ) )                         , ;
                    ( OemToAnsi( " - "         ) )                           ; 
            FIELDSIZES 100, 630, 550, 200, 350, 100, 100, 100, 100, 100, 200,;
             100, 100, 200, 100, 100, 200, 100, 100, 200, 450, 120, 100, 100,;
             100, 100, 100, 110, 110, 200, 350, 100, 700, 100, 110, 350, 100,;
             100, 100, 100, 100, 100, 700, 700, 400, 01                      ;
            COLOR CLR_BROWN, CLR_WHITE CURSOR oCurDedo FONT oFnt UPDATE      ;
            ID 101 OF oDlg

   // Tooltip com imagem. Pode-se usar 1, 2 e 3.
   oLbx:cTooltip :={ "<Click> Edita.",                                       ;
                     "O CLIENTE...  ", 1, CLR_WHITE, CLR_CYAN }

   //-----------------------------------------------------------------------// 
   oLbx:nClrBackHead  := CLR_WHITE  // Cor do Fundo do Cabe‡alho
   oLbx:nClrText      := {|| nRGB( 000, 000, 000 ) } // Cor do Fundo do Cabe‡alho
   oLbx:nClrBackFocus := CLR_WHITE   // Cor do Cursor Em Cima do Ötem
   oLbx:nClrForeFocus := CLR_HRED    // Cor da letra da barra ativa
   oLbx:nClrForeHead  := CLR_CYAN   // Cor nos Headers - Cabe‡alhos
   // Cor no Pano de Fundo da Browse() Listbox-Legal - abaixo o comando
   oLbx:nClrPane      := { || IIF( ( oLbx:cAlias )->( OrdKeyNo() ) %2 == 0, ;
                              CLR_WHITE, CLR_LGRAY ) }
   oLbx:nColAct       := 2           // Onde o Cursor Vai Iniciar na coluna
   oLbx:nLineStyle    := 3           // Estilo das linhas nos dados da Browse 
   oLbx:lCellStyle    := .T.         // Somente pinta a c‚lula em que o cursor esta no momento
   // Justifica o Cabe‡alho: .F. = Esquerda .T. = Centro   
   oLbx:aJustify := { .T., .F., .F., .F., .F., .F., .F., .F., .F., .F., .F., ;
                           .F., .F., .F., .F., .F., .F., .F., .F., .F., .F., ;
                           .T., .F., .F., .F., .F., .F., .F., .F., .F., .F., ;
                           .F., .F., .F., .F., .F., .F., .F., .F., .F., .F., ;
                           .F., .F., .F., .F., .F. }
   oLbx:lMChange      := .F.         // Desabilita Mousemove - Movimentos do Mouse Congelam. 
   oLbx:SetFocus()                   // Refocus on The Browse - Ativa o Foco na ListBox(Browse)
   oLbx:Refresh()                    // Estabiliza o Browse/Listbox - Refresca os Dados. 
                                     // Pinta os Dados Novamente



   REDEFINE BUTTONBMP oIncluir ID 301  OF oDlg RESOURCE "FLOPPY2" TEXTRIGHT  ;
      ACTION ( GETCLIENTES( .T., oLbx, oWnd ), oLbx:GoBottom(), oLbx:Refresh(),    ;
                                         oLbx:GoTop() ) WHEN( .F. )

   oIncluir:cTooltip := { "Click no Botão Para Incluir",                      ;
                          "Incluir Uma Nova Proposta  ", 1, CLR_WHITE, CLR_CYAN }

   REDEFINE BUTTONBMP oAlterar ID 302  OF oDlg                               ;
      RESOURCE "150" TEXTRIGHT ACTION ( GETCLIENTES( .F., oLbx, oWnd ),            ;
                          oLbx:SetFocus(), oLbx:Refresh(), oLbx:DrawSelect() )

   oAlterar:cTooltip := { "Click no Botão Para Alterar",                      ;
                          "Alterar Dados da Proposta  ", 1, CLR_WHITE, CLR_CYAN }

   REDEFINE BUTTONBMP oExcluir ID 303  OF oDlg  WHEN( .F. )                  ;
      RESOURCE "142" TEXTRIGHT ACTION ( EXCLUIR_CLIENTES( oLbx ),            ;
                          oLbx:SetFocus(), oLbx:Refresh(), oLbx:DrawSelect() )

   oExcluir:cTooltip := { "Click no Botão Para Excluir",                      ;
                          "Excluir Dados da Proposta  ", 1, CLR_WHITE, CLR_CYAN }

   REDEFINE BUTTONBMP oImprimir ID 304  OF oDlg  WHEN( .F. )                 ;
      RESOURCE "160" TEXTRIGHT ACTION ( GETCLIENTES( .F., oLbx ),            ;
                          oLbx:SetFocus(), oLbx:Refresh(), oLbx:DrawSelect() )

   oImprimir:cTooltip := { "Click no Botão Para Imprimir",                   ;
                           "Imprimir Dados da Proposta  ", 1, CLR_WHITE, CLR_CYAN }

   REDEFINE BUTTONBMP oSaida ID 320 OF oDlg RESOURCE "154" TEXTRIGHT         ;
      ACTION ( oDlg:End() ) CANCEL

   oSaida:cTooltip := { "Click no Botão Para Sair",                          ;
                        "Saida - Exit - Cancelar ", 1, CLR_WHITE, CLR_CYAN }

   ACTIVATE DIALOG oDlg CENTERED ON INIT CTRLS_COLORS( oDlg )

   IF Set( _SET_INSERT, ! Set( _SET_INSERT ) )
      Set( _SET_INSERT, ! Set( _SET_INSERT ) )
   ENDIF

   oFnt:End()
   oFont:End()
   oFont1:End()
   oFont2:End()
   oFont3:End()

   HB_GCALL( .T. ) // PARA LIMPAR A MEMORIA

RETURN NIL


FUNCTION EXCLUIR_CLIENTES( oLbx )

   MsgInfo( "Aguarde desenvolvimento...", "Aguarde desenvolvimento..."  )

RETURN NIL
// TROCA O INDICE DOS CLIENTES EM TEMPO REAL. Joao.
FUNCTION TROCA_INDICE_CLIEN( nOpcRadioClien, cAlias, oLbx )

   IF nOpcRadioClien == 2 //-> Por Nome

      DbSelectArea( cAlias )

      SET INDEX TO IPDRINS2 // POR NOME DO CLIENTE.

   ELSEIF nOpcRadioClien == 1 //-> Por Codigo Cliente/Instituicao

      DbSelectArea( cAlias )

      SET INDEX TO IPDR_INS // POR CODIGO DO NIPDR

   ENDIF

   oLbx:Refresh()

RETURN NIL
// LOCALIZA UMA PROPOSTA RAPIDA
FUNCTION LOCALIZA_NIPRD( aGet, nNProposta, oLbx )

   LOCAL nRecno, cAlias, nnBuscaIpdr

   IF GETASYNCKEY( VK_UP )  // set para cima - Impedimento.

      RETURN( .F. )

   ENDIF

   IF GETASYNCKEY( VK_DOWN ) // set para baixo vai para a Listbox

      RETURN( .T. )

   ENDIF

   // MUDEI EM: 15/09/2020 nao estava indo correto a ListBox
   IF GETASYNCKEY( VK_RETURN ) ; // <ENTER>/MOUSE
      .AND. EMPTY( nNProposta )

      RETURN( .T. )

   ENDIF

   IF EMPTY( nNProposta ) //= 0

      RETURN( .T. )

   ENDIF

   SELECT( DBIPDR_INS ) // CLIENTES / INSTITUICOES - 08/04/2023 - Joao.

   SET INDEX TO IPDR_INS // POR CODIGO DO NIPDR

   SET SOFTSEEK ON

   SEEK( VAL( nNProposta ) )

   IF FOUND()

      cAlias := ALIAS()

      nRecNo := ( cAlias )->( RecNo() )
      GoTo( nRecNo )

   ELSE  // NAO ACHOU, VAI APROXIMAR AO MAXIMO.

      SET SOFTSEEK ON

      SEEK( nNProposta )

      IF FOUND()
         // NADA A FAZER - ACHOU.
      ELSE

         MsgInfo( OemToAnsi( "ATENۂO:                          " )+CRLF+ ;
                  OemToAnsi( "I.P.D.R NÇO LOCALIZADO. VERIFIQUE:" )+CRLF+ ;
                  OemToAnsi( "O NéMERO DO éLTIMO I.P.D.R CRIADO." ),      ;
                  OemToAnsi( "I.P.D.R NÇO LOCALIZADO. VERIFIQUE!" ) )

         SET SOFTSEEK OFF

         nnBuscaIpdr := SPACE(06)

         aGet[1]:VARPUT( nnBuscaIpdr )
         aGet[1]:Refresh()

         oLbx:GoTop()
         oLbx:Refresh()
         oLbx:GoBottom()

         XFOCUS( aGet[1] )

         RETURN( .F. )

      ENDIF

   ENDIF

   oLbx:Refresh()
   oLbx:SetFocus()

   SET SOFTSEEK OFF

RETURN( .T. )
//-> FUNCTION ipdr0110() - LINHA 724 DE SISIPDR.PRG
FUNCTION GETCLIENTES( lAppend, oLbx, oWnd )

   LOCAL cAlias, cTitle
   LOCAL oDlg, oFld, iDcor, oIco, oJump, oHand, oGravar, oSaida, oGroup, oFnt,;
         oFont, oFontF, nRecNo, aGet := ARRAY(30), oBrush, BtnPrint, oRect
   LOCAL nBottom   := 42 // 42
   LOCAL nRight    := 128.5 // 123.2  // largura da tela
   LOCAL nWidth    :=  Max( nRight * DLG_CHARPIX_W, 180 )  // 180
   LOCAL nHeight   := nBottom * DLG_CHARPIX_H  // altura do dialogo 94

   LOCAL aBitmaps  := { "C:\FWH1905\bitmaps\32x32\users.bmp", ;
                        "C:\FWH1905\bitmaps\32x32\delete.bmp", ;
                        "C:\FWH1905\bitmaps\32x32\fivetech.bmp", ;
                        "C:\FWH1905\bitmaps\32x32\quit.bmp", }

   // INCLUSAO/EXCLUSAO DECLARACAO DAS VARIAVEIS PUBLICAS PARA JA. MDI(Futuro)
   PUBLIC WTEL_DDD, WTEL_NUM, WTEL_RAMAL, WTEL_OBS, WFAX_NUM, WFAX_RAMAL, ;
          WFAX_OBS, WTEL2_NUM, WTEL2_RAMAL, WTEL2_OBS, WTEL3_NUM, WTEL3_RAMAL, ;
          WTEL3_OBS
   PUBLIC MTIPO, WDATA, WTEL_DDD, WTEL_NUM, WTEL_RAMAL, WTEL_OBS, WFAX_NUM,   ;
          WFAX_RAMAL, WFAX_OBS, WTEL2_NUM, WTEL2_RAMAL, WTEL2_OBS, WTEL3_NUM, ;
          WTEL3_RAMAL, WTEL3_OBS, WRCNEN, WCXPOST, WINST, WSETOR, WENDER,     ;
          WCEP, WBAIRRO, WCITY, WD1_APLIC, WD2_APLIC, WUF, WAPLIC, WRESP1,    ;
          WCPF, WNCPF, WOLD, WRESP2, WVENC, WMES, WEMAIL, WEMAILF, WIDPJ,     ;
          WCIPDR, WTROCA, WTIPO_INST, WAREA_INST, WAPLIC_PRI, WAPLIC_SEC,     ;
          WTIP, WNIPDR, WPAR, ALT, WTPN_INST, WAUX1, oMemo

   cAlias := ALIAS()


   // Inicializa as variaveis se opcao = InclusÆo
   MTIPO := lAppend // WTPSOL // lAppend // INCLUSAO OU ALTERACAO NO ORIGINAL
   WDATA := Date()

   IF lAppend // Inclusao

      // INCLUSAO

      WTEL_DDD    := SPACE( 2 )
      WTEL_NUM    := SPACE( 8 )
      WTEL_RAMAL  := SPACE( 4 )
      WTEL_OBS    := SPACE( 20 )
      WFAX_NUM    := SPACE( 8 )
      WFAX_RAMAL  := SPACE( 4 )
      WFAX_OBS    := SPACE( 20 )
      WTEL2_NUM   := SPACE( 8 )
      WTEL2_RAMAL := SPACE( 4 )
      WTEL2_OBS   := SPACE( 20 )
      WTEL3_NUM   := SPACE( 8 )
      WTEL3_RAMAL := SPACE( 4 )
      WTEL3_OBS   := SPACE( 20 )
      WRCNEN      := SPACE( 11 )
      WCXPOST     := SPACE( 6 )
      WINST       := SPACE( 80 )
      WSETOR      := SPACE( 40 )
      WENDER      := SPACE( 60 )
      WCEP        := SPACE( 8 )
      WBAIRRO     := SPACE( 20 )
      WCITY       := SPACE( 35 )
      WD1_APLIC   := SPACE( 80 )
      WD2_APLIC   := SPACE( 80 )
      WUF         := "  "
      WAPLIC      := "  "
      WRESP1      := SPACE( 80 )
      WCPF        := " "
      WNCPF       := SPACE( 11 )
      WOLD        := SPACE( 11 )
      WRESP2      := SPACE( 40 )
      WVENC       := "      "
      WMES        := UMES
      WEMAIL      := SPACE( 50 )
      WEMAILF     := SPACE( 50 )
      WIDPJ       := SPACE( 14 )  // CNPJ ou CPF
      WCIPDR      := "IPDR." + SPACE( 6 )
      WTROCA      := SPACE( 1 )
      WTIPO_INST  := SPACE( 1 )
      WAREA_INST  := SPACE( 1 )
      WAPLIC_PRI  := SPACE( 2 )
      WAPLIC_SEC  := SPACE( 2 )
      //Validar e apresentar os codigos de tipo de Institui‡Æo*/
      WTPN_INST   := ""

      /*
      USE IPDR_PAR ALIAS IPDR_PAR SHARED NEW
      GO 1
      WNIPDR := ULTNUM_INS + 1
      WPAR   := ULTNUM_INS + 1
      */



     // REABRO O CADASTRO DE CLIENTES

   ELSE // Alteracao

      nRecNo := ( cAlias )->( RecNo() ) //-> CADPROPO.DBF
      GoTo( nRecNo )

      //BROWSE()

     
      MTIPO   := TIPO
      WTIP    := TIPO
      NRE     := RecNo()
      WDATA   := DATA
      WRCNEN  := RCNEN
      WINST   := INST
      WSETOR  := SETOR
      WENDER  := ENDERECO
      WBAIRRO := BAIRRO
      WCEP    := CEP
      WCXPOST := CXPOST
      WCITY   := CIDADE
      WUF     := UF
      WAPLIC  := APLIC
      WRESP1  := RESP1
      WCPF    := CPF
      WNCPF   := NCPF
      WOLD    := NCPF
      WATIVO  := ATIVO
      WVENC   := VENC
      WMES    := MESMOV
      WEMAIL  := EMAIL
      WEMAILF := EMAILF
      WIDPJ   := CNPJ_CPF     // CNPJ ou CPF
/* // REVER ISTO
//      WCIPDR  := "IPDR." + space( 6 )
//      WCIPDR := "IPDR." + strzero( WNIPDR, 6, 0 )
//      WCIPDR  := "IPDR." + NIPDR
*/
      WTROCA     := TROCA
      WD1_APLIC  := DESC_APLI1
      WD2_APLIC  := DESC_APLI2
      WTIPO_INST := TIPO_INST
      WAREA_INST := AREA_INST
      WAPLIC_PRI := APLIC_PRI // A5, I5 por exemplo
      WAPLIC_SEC := APLIC_SEC

      WTEL_DDD   := TEL_DDD
      WTEL_NUM   := TEL_NUM
      WTEL_RAMAL := TEL_RAMAL
      WTEL_OBS   := TEL_OBS
      WFAX_NUM   := FAX_NUM
      WFAX_RAMAL := FAX_RAMAL
      WFAX_OBS   := FAX_OBS
      WTEL2_NUM  := TEL2_NUM
      WTEL2_RAMAL:= TEL2_RAMAL
      WTEL2_OBS  := TEL2_OBS
      WTEL3_NUM  := TEL3_NUM
      WTEL3_RAMAL:= TEL3_RAMAL
      WTEL3_OBS  := TEL3_OBS


      /* // VERIFICAR ISTO
      ALT := 0

      IF WMES = UMES .AND. MTIPO = "I"
         ALT := 1
      ELSEIF WMES = UMES .AND. MTIPO = "C"
         ALT := 2
      ENDIF
      */

      /* // DUPLICADO, REVER
      WRCNEN  := RCNEN
      WINST   := INST
      WSETOR  := SETOR
      WENDER  := ENDERECO
      WBAIRRO := BAIRRO
      WCEP    := CEP
      WCXPOST := CXPOST
      WCITY   := CIDADE
      WUF     := UF
      WAPLIC  := APLIC
      WRESP1  := RESP1
      WCPF    := CPF
      WNCPF   := NCPF
      WOLD    := WNCPF
      WATIVO  := ATIVO
      WVENC   := VENC
      WDATA   := DATA
      XK_IPDR := NIPDR
      MTIPO   := TIPO
      WTIP    := TIPO
      WMES    := MESMOV
      WEMAIL  := EMAIL
      WIDPJ   := CNPJ_CPF     // CNPJ ou CPF
      WTROCA  := TROCA
      WEMAILF := EMAILF
      WD1_APLIC := DESC_APLI1
      WD2_APLIC := DESC_APLI2
      WTIPO_INST  := TIPO_INST
      WAREA_INST  := AREA_INST
      WAPLIC_PRI  := APLIC_PRI
      */
      //Validar e apresentar os codigos de tipo de Institui‡Æo*/
      WAUX1 := WTIPO_INST

      IF WAUX1 = "4"
         
         WTPN_INST = "Privada"
            
      ELSEIF WAUX1 = "5"

         WTPN_INST = "Pessoa Física"

      ELSEIF WAUX1 = "6"

         WTPN_INST = "Economia Mista"

      ELSEIF WAUX1 = "7"

         WTPN_INST = "Pública"

      ELSE
         
         WTPN_INST = "Inválido"
            
      ENDIF

   ENDIF

   IF lAppend
      cTitle := OemToAnsi( "IPDR: INCLUSÇO NO CADASTRO DE CLIENTES  - INSTITUI€åES - Folder." )
   ELSE
      cTitle := OemToAnsi( "IPDR: ALTERAۂO NO CADASTRO DE CLIENTES - INSTITUIیES - Folder." )
   ENDIF

   DEFINE ICON oIco  NAME "ICONE"
   DEFINE FONT oFont  NAME "Ms Sans Serif"  SIZE 00, -14 BOLD
   DEFINE FONT oFontF NAME "Ms Sans Serif"  SIZE 00, -16 BOLD // estoura o folder.
   DEFINE FONT oFnt   NAME "Ms Sans Serif"  SIZE 00, -12 BOLD

   /* // Prefiro da segunda forma, tenho controle total do Dialogo/Folder.
   DEFINE DIALOG oDlg SIZE nWidth, nHeight PIXEL TRUEPIXEL RESIZABLE         ;
      COLOR CLR_BLACK, CLR_WHITE TITLE cTitle FONT oFont ICON oIco TRANSPARENT
   */
   //                 LARG  ALT - 1024 X 768 - RESOLUCAO
   DEFINE DIALOG oDlg SIZE 1020, 560 PIXEL TRUEPIXEL RESIZABLE TRANSPARENT   ;
      COLOR CLR_BLACK, CLR_WHITE TITLE cTitle FONT oFont ICON oIco
      
   oDlg:lHelpIcon := .F.

   // BITMAPS aBitmaps                           ;
   /*
   @ 3, 3 FOLDEREX oFld  PIXEL STRETCH           ;
      PROMPT "&Cadastro", "Futuro"               ;
      ON PAINT TAB PaintTab( Self, nOption )     ;
      TAB HEIGHT 35 ROUND 5                      ;
      BITMAPS "FERRARI", "FERRARI2"              ;
      TOP ALIGN FLDBMP_LEFT, FLDBMP_LEFT         ;
      OPTION 1                                   ;
      COLOR CLR_GREEN FONT oFont
   */
   @ 3, 3 FOLDEREX oFld  PIXEL STRETCH           ;
      PROMPT "&Cadastro", "Futuro"               ;
      TAB HEIGHT 35 ROUND 5                      ;
      BITMAPS "FERRARI", "FERRARI2"              ;
      TOP ALIGN FLDBMP_LEFT, FLDBMP_LEFT         ;
      OPTION 1                                   ;
      COLOR CLR_GREEN FONT oFont


   oFld:nLayOut := 1 //2 -> LEFT

   oFld:aEnable[2] := .F.
   /*
   oFld:EnableTab( nOption ) / oFld:DisableTab( nOption )
   https://forums.fivetechsupport.com/viewtopic.php?f=3&t=19543&start=30
   */

   @ 15, 00 SAY "CNPJ:" OF oFld:aDialogs[1] PIXEL SIZE 30, 12 RIGHT UPDATE   ;
      COLORS CLR_WHITE, CLR_BLACK TRANSPARENT FONT oFont

   // 06, 09 soma: 21
   IF lAppend // inclusao

      @ 15, 34 GET aGet[3] VAR WIDPJ OF oFld:aDialogs[1] PIXEL SIZE 080, 12   ;
         PICTURE "@R 99999999999999" CENTER UPDATE COLORS CLR_BLACK, CLR_WHITE;
         FONT oFont WHEN( lAppend )
      // PICT     spict VALID ver_IDPJ( WIDPJ )

   ELSE // alteracao

      @ 15, 34 GET aGet[3] VAR WIDPJ OF oFld:aDialogs[1] PIXEL SIZE 080, 12   ;
         PICTURE "@R 99.999.999/9999-99" UPDATE COLORS CLR_BLACK, CLR_WHITE   ;
         CENTER FONT oFont WHEN( lAppend )

   ENDIF

   aGet[3]:lBtnTransparent := .T.       // transparent button get oGet3
   aGet[3]:lAdjustBtn      := .T.       // Button Get Adjust Witdh oGet3
   aGet[3]:lDisColors      := .F.       // Deactive disable color
   aGet[3]:nClrTextDis     := CLR_WHITE // Color text disable status
   aGet[3]:nClrPaneDis     := CLR_HBLUE  // Color Pane disable status

   // na frente do GET do CNPJ - 29 somei: 81
   @ 15, 110 SAY "Tipo:" OF oFld:aDialogs[1] PIXEL SIZE 30, 12 RIGHT UPDATE  ;
      COLORS CLR_WHITE, CLR_BLACK TRANSPARENT FONT oFont

   // 34 -> ERA SOMEI: 110
   @ 15, 144 GET aGet[4] VAR WTIPO_INST OF oFld:aDialogs[1] PIXEL SIZE 030, 12;
      PICTURE "@R 9" UPDATE COLORS CLR_WHITE, CLR_HBLUE CENTER FONT oFont     ;
      VALID ( WTIPO_INST $ "4,5,6,7" ) // nao achei o 8 "[Inv lido]" ?
      // VALID TipoInst( WTIPO_INST ) // depois ver isto.

   aGet[4]:cTooltip := { "Escolha um Tipo de Instituição:                 ", ;
                         "4 = [Privada] " +CRLF+ "5 = [Pessoa Física] "+CRLF+;
                         "6 = [Economia Mista] " +CRLF+ "7 = [Pública] ", 1, ;
                         CLR_WHITE, CLR_HBLUE }

   // @ 06, 36 SAY WTPN_INST SOMEI: 144
   @ 15, 180 SAY WTPN_INST OF oFld:aDialogs[1] PIXEL SIZE 50, 16 UPDATE      ;
      COLORS CLR_ORANGE, CLR_WHITE TRANSPARENT FONT oFont

   // @ 06, 53 SAY "Área:" // somei: 157
   @ 15, 210 SAY "Área:" OF oFld:aDialogs[1] PIXEL SIZE 30, 12 RIGHT UPDATE  ;
      COLORS CLR_WHITE, CLR_BLACK TRANSPARENT FONT oFont

   //   @ 06, 58 GET WAREA_INST PICT "@!" VALID FUN110c( WAREA_INST )
   @ 15, 245 GET aGet[5] VAR WAREA_INST OF oFld:aDialogs[1] PIXEL SIZE 030, 12;
      PICTURE "@!" UPDATE COLORS CLR_WHITE, CLR_HBLUE CENTER FONT oFont

   // @ 06, 81 SAY "Aplic."// 194
   @ 15, 275 SAY "Aplic.:" OF oFld:aDialogs[1] PIXEL SIZE 30, 12 RIGHT UPDATE ;
      COLORS CLR_WHITE, CLR_BLACK TRANSPARENT FONT oFont

   // SOMEI: 222
   // @ 06, 88 GET WAPLIC_PRI PICT "@!" VALID !empty( WAPLIC_PRI )
   @ 15, 310 GET aGet[6] VAR WAPLIC_PRI OF oFld:aDialogs[1] PIXEL SIZE 030, 12;
      PICTURE "@ !!" UPDATE COLORS CLR_WHITE, CLR_HBLUE CENTER FONT oFont

   // @ 06, 91 GET WAPLIC_SEC PICT "@!" valid ( WAPLIC_SEC != WAPLIC_PRI )
   @ 15, 345 GET aGet[7] VAR WAPLIC_SEC OF oFld:aDialogs[1] PIXEL SIZE 030, 12;
      PICTURE "@ !!" UPDATE COLORS CLR_WHITE, CLR_HBLUE CENTER FONT oFont     ;
      VALID ( WAPLIC_SEC != WAPLIC_PRI )

   //@ 08, 00 SAY "Descr. Aplic."//14
   @ 35, 00  SAY "Descr. Aplic.:" OF oFld:aDialogs[1] PIXEL SIZE 50, 12 RIGHT ;
      UPDATE COLORS CLR_WHITE, CLR_BLACK TRANSPARENT FONT oFont

   //@ 08, 14 GET WD1_APLIC MEMO nao ficou legal nao. Joao
   // @ 35, 55 GET oMemo VAR WD1_APLIC MEMO OF oFld:aDialogs[1] PIXEL LEFT       ;
   //    SIZE 300, 12 UPDATE COLORS CLR_WHITE, CLR_HBLUE CENTER FONT oFont
   @ 35, 55 GET aGet[8] VAR WD1_APLIC OF oFld:aDialogs[1] PIXEL SIZE 300, 12  ;
      PICTURE "@" UPDATE COLORS CLR_WHITE, CLR_HBLUE FONT oFont

   //@ 09, 14 GET WD2_APLIC
   @ 47, 55 GET aGet[9] VAR WD2_APLIC OF oFld:aDialogs[1] PIXEL SIZE 300, 12  ;
      PICTURE "@" UPDATE COLORS CLR_WHITE, CLR_HBLUE FONT oFont

   //@ 11, 00 SAY "Nome da Inst."  // NOME DO CLIENTE AQUI
   @ 65, 00  SAY "Nome da Instituição:" OF oFld:aDialogs[1] PIXEL SIZE 75, 12 ;
      RIGHT UPDATE COLORS CLR_WHITE, CLR_BLACK TRANSPARENT FONT oFont

   //@ 11, 14 GET WINST   PICT '@!' VALID !empty( WINST )
   @ 65, 80 GET aGet[10] VAR WINST OF oFld:aDialogs[1] PIXEL SIZE 370, 12     ;
      PICTURE "@!" UPDATE COLORS CLR_WHITE, CLR_HBLUE FONT oFont              ;
      VALID .NOT. EMPTY( WINST )

   //@ 12, 00 SAY "Nome do Setor"
   @ 80, 00  SAY "Nome do Setor:" OF oFld:aDialogs[1] PIXEL SIZE 75, 12       ;
      RIGHT UPDATE COLORS CLR_WHITE, CLR_BLACK TRANSPARENT FONT oFont

   //@ 12, 14 GET WSETOR  PICT '@!'
   @ 80, 80 GET aGet[11] VAR WSETOR OF oFld:aDialogs[1] PIXEL SIZE 205, 12    ;
      PICTURE "@!" UPDATE COLORS CLR_WHITE, CLR_HBLUE FONT oFont

   //@ 12, 72 SAY "Troca: C,M,R"//85
   @ 80, 290 SAY "Troca: C,M,R:" OF oFld:aDialogs[1] PIXEL SIZE 50, 12        ;
      RIGHT UPDATE COLORS CLR_WHITE, CLR_BLACK TRANSPARENT FONT oFont

   //@ 12, 85 GET WTROCA  PICT "@!" VALID chktroca( WTROCA )
   @ 80, 350 GET aGet[12] VAR WTROCA OF oFld:aDialogs[1] PIXEL SIZE 30, 12    ;
      PICTURE "@!" UPDATE COLORS CLR_WHITE, CLR_HBLUE FONT oFont CENTER       ;
      VALID ( WTROCA $ "C,M,R" )

   aGet[12]:cTooltip := { "Escolha uma Opção:                    ",           ;
                          "(C)=CORREIO - (M)=EM MÃOS - (R)=RETIRA", 1,        ;
                          CLR_WHITE, CLR_HBLUE }

   //@ 13, 00 SAY "End. do Setor"//14
   @ 95, 00 SAY "Endereço do Setor:" OF oFld:aDialogs[1] PIXEL SIZE 75, 12    ;
      RIGHT UPDATE COLORS CLR_WHITE, CLR_BLACK TRANSPARENT FONT oFont

   //@ 13, 14 GET WENDER  PICT '@!' VALID !empty( WENDER )
   @ 95, 80 GET aGet[13] VAR WENDER OF oFld:aDialogs[1] PIXEL SIZE 280, 12    ;
      PICTURE "@!" UPDATE COLORS CLR_WHITE, CLR_HBLUE FONT oFont              ;
      VALID .NOT. EMPTY( WENDER )

   //@ 13, 77 SAY "Cx.Postal"
   @ 95, 355 SAY "Cx.Postal:" OF oFld:aDialogs[1] PIXEL SIZE 50, 12           ;
      RIGHT UPDATE COLORS CLR_WHITE, CLR_BLACK TRANSPARENT FONT oFont

   // @ 13, 88 GET WCXPOST PICT '@R 999999'
   @ 95, 410 GET aGet[14] VAR WCXPOST OF oFld:aDialogs[1] PIXEL SIZE 50, 12   ;
      PICTURE "@R 999999" UPDATE COLORS CLR_WHITE, CLR_HBLUE FONT oFont CENTER

   // @ 14, 00 SAY "Bairro"
   @ 110, 03 SAY "Bairro:" OF oFld:aDialogs[1] PIXEL SIZE 45, 12              ;
      UPDATE COLORS CLR_WHITE, CLR_BLACK TRANSPARENT FONT oFont

   // @ 14, 14 - 7 GET WBAIRRO PICT '@!'
   @ 110, 032 GET aGet[15] VAR WBAIRRO OF oFld:aDialogs[1] PIXEL SIZE 110, 12  ;
      PICTURE "@!" UPDATE COLORS CLR_WHITE, CLR_HBLUE FONT oFont

   //@ 14, 30 SAY "Cep" // 175
   @ 110, 115 SAY "Cep:" OF oFld:aDialogs[1] PIXEL SIZE 50, 12                ;
      RIGHT UPDATE COLORS CLR_WHITE, CLR_BLACK TRANSPARENT FONT oFont

   //@ 14, 34 GET WCEP PICT '@R 99999-999' VALID !empty( WCEP ) .AND. len( alltrim( WCEP ) ) = 8
   @ 110, 170 GET aGet[16] VAR WCEP OF oFld:aDialogs[1] PIXEL SIZE 50, 12     ;
      PICTURE "@R 99999-999" UPDATE COLORS CLR_WHITE, CLR_HBLUE FONT oFont    ;
      CENTER VALID .NOT. EMPTY( WCEP )

   //@ 14, 45 SAY "Cidade"
   @ 110, 205 SAY "Cidade:" OF oFld:aDialogs[1] PIXEL SIZE 50, 12             ;
      RIGHT UPDATE COLORS CLR_WHITE, CLR_BLACK TRANSPARENT FONT oFont

   //@ 14, 52 GET WCITY   PICT '@!' VALID !empty( WCITY )
   @ 110, 260 GET aGet[17] VAR WCITY OF oFld:aDialogs[1] PIXEL SIZE 180, 12   ;
      PICTURE "@!" UPDATE COLORS CLR_WHITE, CLR_HBLUE FONT oFont

   //@ 14, 89 SAY "UF"//92
   @ 110, 440 SAY "UF:" OF oFld:aDialogs[1] PIXEL SIZE 20, 12                 ;
      RIGHT UPDATE COLORS CLR_WHITE, CLR_BLACK TRANSPARENT FONT oFont
   
   //@ 14, 92 GET WUF PICT '@! AA' VALID !empty( WUF ) .AND. len( alltrim( WUF ) ) = 2
   @ 110, 467 GET aGet[18] VAR WUF OF oFld:aDialogs[1] PIXEL SIZE 30, 12      ;
      PICTURE "@! AA" UPDATE COLORS CLR_WHITE, CLR_HBLUE FONT oFont CENTER    ;
      VALID .NOT. EMPTY( WUF )

   //@ 15, 00 SAY "Tel. Monit."//11
   @ 126, 03 SAY "Tel. Monit.:" OF oFld:aDialogs[1] PIXEL SIZE 45, 12              ;
      UPDATE COLORS CLR_WHITE, CLR_BLACK TRANSPARENT FONT oFont

   //@ 15, 11 GET WTEL_DDD PICT "99" valid ( len( alltrim(WTEL_DDD ) ) = 2 .AND. val( WTEL_DDD ) > 10 )
   @ 126, 47 GET aGet[19] VAR WTEL_DDD OF oFld:aDialogs[1] PIXEL SIZE 030, 12 ;
      PICTURE "@ 99" UPDATE COLORS CLR_WHITE, CLR_HBLUE FONT oFont CENTER

   //@ 15, 14 GET WTEL_NUM PICT "XX999999" VALID FUN110e( 0, WTEL_NUM )
   @ 126, 83 GET aGet[20] VAR WTEL_NUM OF oFld:aDialogs[1] PIXEL SIZE 050, 12 ;
      PICTURE "XX999999" UPDATE COLORS CLR_WHITE, CLR_HBLUE FONT oFont CENTER


   //@ 15, 22 SAY "r"


   //@ 15, 23 GET WTEL_RAMAL PICT "9999" VALID FUN110e( 4, WTEL_RAMAL )


   //@ 15, 27 SAY "-"


   //@ 15, 28 GET WTEL_OBS PICT "XXXXXXXXXXXXXXXXXXXX"





   // Botoes
   @ 195, 250 BUTTONBMP oGravar RESOURCE "FLOPPY2" TEXTRIGHT FONT oFont      ;
      PROMPT "&Gravar" SIZE 100, 30 PIXEL OF  oDlg                           ;
      TOOLTIP { "Click no Botão Para Incluir",                               ;
                "Incluir Um Novo Cliente... ", 1, CLR_WHITE, CLR_CYAN }      ;
      ACTION ( oDlg:End( IDOK ) ) WHEN( .F. )

   @ 195, 250 BUTTONBMP oSaida RESOURCE "154" TEXTRIGHT FONT oFont           ;
      PROMPT "&Saida" SIZE 100, 30  PIXEL OF  oDlg                           ;
      TOOLTIP { "Click no Botão Para Sair",                                  ;
                        "Saida - Exit - Cancelar ", 1, CLR_WHITE, CLR_CYAN } ;
      ACTION  ( oDlg:End( IDCANCEL ) ) //CANCEL

   // CONTROLES DO OBJETOS
   oDlg:bResized := < ||
   oRect         := oDlg:GetCliRect()

   oFld:nWidth   := oRect:nRight  -  4 // 20 ajusta o folder Largura
   oFld:nHeight  := oRect:nBottom - 45 // 60 altura do folder?

   oGravar:nTop  := oRect:nBottom - 38 // 34 diminui a Linha
   oGravar:nLeft := oRect:nRight - 260 // coluna

   oSaida:nTop   := oRect:nBottom - 38 // 34 diminui a Linha
   oSaida:nLeft  := oRect:nRight - 140 // coluna

   RETURN NIL
   >

   ACTIVATE DIALOG oDlg CENTERED ON INIT ( Eval( oDlg:bResized ) )

   oFont:End()
   oFontF:End()
   oFnt:End()

RETURN NIL

/*
Function : TipoInst
Finalidade : Validar e apresentar os codigos de tipo de Institui‡Æo*/
 
FUNCTION TipoInst( WAUX1 )

   /*
   IF ( ( len(alltrim(WIDPJ ) ) = 11 .AND. WAUX1 != "5" ) .OR. ( len(alltrim(WIDPJ ) ) != 11 .AND. WAUX1 == "5" ) )
		 	  
      MENS_ANT := savescreen( 23, 00, 24, 95 )
      MENS2324( "O Tipo de Institui‡Æo ‚ inconsistente com o valor de CNPJ/CPF", ;
         "tecle [ENTER] para prosseguir" )
      inkey( 0 )
      restscreen( 23, 00, 24, 95, MENS_ANT )
      RETURN .F.
			  
   ENDIF
   */

   WTPN_INST = "[Inv lido]"

   IF WAUX1 = "4"
         
      WTPN_INST = "[Privada]"
            
   ELSEIF WAUX1 = "5"
         
      WTPN_INST = "[Pessoa F¡sica]"
            
   ELSEIF WAUX1 = "6"
         
      WTPN_INST = "[Economia Mista]"
            
   ELSEIF WAUX1 = "7"
         
      WTPN_INST = "[P£blica]"
   ELSE
         
      RETURN .F.
            
   ENDIF
         
RETURN( WTPN_INST )

// FIN / END - kapiabafwg@gmail.com - Joao Santos - Sao Paulo - Brasil.
Regards, saludos.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Porque eu uso xHarbour the Best?

Mensagem por JoséQuintas »

Kapiaba escreveu:Um pouco de código para vocês verem que dureza converter CLIPPER CONSOLE, para @SAY... Em WORKSHOP.exe the best, isto é muito simples e prático, a velocidade de desenvolvimento, é outro nível. Más, vamos que vamos, estou aprendendo.
Ele tá escrevendo fonte fivewin....
Tá uma merd. escrever fonte fivewin pra criar telas.....
Por isso ele prefere usar workshop, um editor de telas da Borland....

Criar tela em fivewin é uma merd.... mas o problema não é fivewin, é o console.
Criar tela no Borland Workshop torna tudo mais fácil... mas a vantagem não é o Workshop, é o fivewin

Só uma coisa a dizer: Put.a que pari.u


GTWVG e GTWVW são libs do harbour que também conseguem fazer telas feias iguais a essas, com esses recursos simples.

Quanto ao fonte... que tristeza...
Mostra falhas do fivewin e do programador.
Parece que o programador usa o EDIT do Windows 98, tá uns 25 anos atrasado com a ferramenta que usa.
Por um momento fiquei na dúvida... será esse é o fonte novo ou é o fonte velho ? Deve ser o novo, afinal, tá usando fivewin...
25 anos atrasado, mas é o fonte novo....

Não reclame, apenas se atualize, vai gostar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Porque eu uso xHarbour the Best?

Mensagem por Kapiaba »

kkkkkkkkkk, Mostre alguma coisa "Moderna" que o senhor usa. kkkkkkkkkkkkkkkkk

Reagrdas, saludos.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Porque eu uso xHarbour the Best?

Mensagem por JoséQuintas »

tela.png
Tá vendo aí o fonte ?
Tem acentuação.
Na tela sai direitinho.

Não é por ser console, porque tela GTWVG é a mesma tela GUI, que é o mesmo texto windows.
É porque o editor usa ANSI.

OemToAnsi() é quando não está usando ANSI no editor de textos, e por isso precisa ficar convertendo.
Entendeu?
Tá usando editor errado ou de forma errada.
ansi.png
Tá vendo ali: ANSI
OemToAnsi() converte de OEM pra ANSI, converte de americano pra ANSI, converte de fonte criado em formato americano pra ANSI
Se o fonte já está em ANSI, não precisa converter nada, não precisa ficar colocando OemToAnsi() em todo fonte.

E o principal: se está usando OemToAnsi(), significa que o fivewin já aceita tudo em ANSI, é só usar o fonte em ANSI

Convém lembrar que isso é para o SEU CASO do FIVEWIN, e MEU CASO da GTWVG.
Acho que não é a mesma coisa pra quem usa GTWVW, versões de harbour antigas, versões de xharbour antigas, outras codepages pra exibição de tela, telas console, etc.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Porque eu uso xHarbour the Best?

Mensagem por JoséQuintas »

Só que tem outro problema:

A BASE DE DADOS QUE JÁ EXISTE

Duas opções:

- Converter tudo antigo das bases de dados. Acho a melhor opção porque resolve de vez.

- Pelo menos NO HARBOUR existe a opção de usar uma codepage pra tela e outra pra gravação, não sei se no xharbour existe isso.

Esqueci deste detalhe no post anterior.
Precisa analisar isso também antes de mexer.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Porque eu uso xHarbour the Best?

Mensagem por Kapiaba »

Mister Quintas, sua resposta é SIM. o FiveWin sempre me dá duas ou três opções para eu programar, como não gosto de EDITOR FOR WINDOWS, pois pode danificar meus OLHOS SENSÍVEIS(kkkkkkk) eu uso o Editor MODO CONSOLE e o COMANDO: OemToAnsi/AnsiToOem(), para acentuar, é só uma questão de GOSTO, cada programador escolhe como fazer. Muitos usam o XDEV.exe STÚDIO do Mestre Vailton Renato, eu uso somente para buscas dentro dos meus .PRGs, entende? Mestre Quintas, se desejar, eu posso ir ai na ZL, para a gente "brincar" de FiveWin for xHabour.

Obg. abs.

Regards, saludos.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Porque eu uso xHarbour the Best?

Mensagem por JoséQuintas »

Já que gosta de desenhar..... que tal ajudar numa coisa.....

PDF de boleto
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Porque eu uso xHarbour the Best?

Mensagem por Kapiaba »

Bom dia, use o MRBOLETO.PRG ou o ACBR BOLETO, o pessoal usa muito no forum fivewin.

Abs.

Regards, saludos.
Anexos
MRBOLETO.rar
(1.49 MiB) Baixado 33 vezes
Responder