Jump to content
Fivewin Brasil

Cezar

Membros
  • Posts

    106
  • Joined

  • Last visited

Everything posted by Cezar

  1. Ola Gsilve, Conferi os meus parametros de acordo com que me indicou. Eu já uso o Buildh.bat que veio com FWH 2.4, meu problema esta em substituir a classe TPrinter. Gerei um pequeno relatório; ele aparece na tela, imprimo e tudo mais, mas preciso aprender a mexer com classes. Por exemplo; na classe TPrinter tem mensagens que estão em inglês, quero muda-las para o português! Como faço?? Eu imagino que seja da seguinte forma: Copiei \FWH\SOURCE\CLASSE\Printer.prg para o diretório da minha aplicação e alterei as mensagens e usei o .bat abaixo para compilar.. Com este .bat, compilo o programa, gera o Exe, rodo o programa, mas no relatório dá erro no comando PAGE, diz que a variável oPrinter não existe. Este relatório esta listado num dos tópicos acima. Se o amigo puder dar uma verificada se tem algo errado neste .Bat, agradeço. Um abraço. @ECHO OFF CLS ECHO ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ECHO ³ FiveWin for Harbour 2.4 - January 2002 Harbour development power ³Ü ECHO ³ © FiveTech, 1993-2002 for Microsoft Windows 95/98/NT/2000/ME and XP ³Û ECHO ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ECHO ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ECHO BuildScr Compiling... set fwdir=c:\fwh set hdir=c:\harbour set bcdir=c:\bcc55 %hdir%\bin\harbour prg001 /m/n /i%fwdir%\include;%hdir%\include %2 %3 > clip.log %hdir%\bin\harbour printer /m/n /i%fwdir%\include;%hdir%\include %2 %3 > clip.log REM %hdir%\bin\harbour rpreview /m/n /i%fwdir%\include;%hdir%\include %2 %3 > clip.log REM %hdir%\bin\harbour tdosprn /m/n /i%fwdir%\include;%hdir%\include %2 %3 > clip.log %bcdir%\bin\bcc32 -M -c -O2 -I%hdir%\include prg001.c > b32.bc %bcdir%\bin\bcc32 -M -c -O2 -I%hdir%\include printer.c > b32.bc REM %bcdir%\bin\bcc32 -M -c -O2 -I%hdir%\include rpreview.c > b32.bc REM %bcdir%\bin\bcc32 -M -c -O2 -I%hdir%\include tdosprn.c > b32.bc IF EXIST scr.rc %bcdir%\bin\brc32 -r scr echo c0w32.obj + > b32.bc echo prg001.obj + >> b32.bc echo printer.obj, + >> b32.bc REM echo rpreview.obj + >> b32.bc REM echo tdosprn.obj, + >> b32.bc echo %1.exe, + >> b32.bc echo %1.map, + >> b32.bc echo %fwdir%\lib\FiveH.lib %fwdir%\lib\FiveHC.lib + >> b32.bc REM echo d:\fivewin\lib\Objects.lib echo %hdir%\lib\rtl.lib + >> b32.bc echo %hdir%\lib\vm.lib + >> b32.bc echo %hdir%\lib\gtwin.lib + >> b32.bc echo %hdir%\lib\lang.lib + >> b32.bc echo %hdir%\lib\macro.lib + >> b32.bc echo %hdir%\lib\rdd.lib + >> b32.bc echo %hdir%\lib\dbfntx.lib + >> b32.bc echo %hdir%\lib\dbfcdx.lib + >> b32.bc echo %hdir%\lib\debug.lib + >> b32.bc echo %hdir%\lib\common.lib + >> b32.bc echo %hdir%\lib\pp.lib + >> b32.bc echo %hdir%\lib\ace32.lib + >> b32.bc echo %hdir%\lib\rddads.lib + >> b32.bc echo %bcdir%\lib\cw32.lib + >> b32.bc echo %bcdir%\lib\import32.lib + >> b32.bc echo %bcdir%\lib\psdk\odbc32.lib, >> b32.bc IF EXIST %1.res echo %1.res >> b32.bc %bcdir%\bin\ilink32 -Gn -aa -Tpe -s @b32.bc IF ERRORLEVEL 1 GOTO LINKERROR ECHO * Application successfully built GOTO EXIT ECHO :LINKERROR GOTO EXIT :EXIT Fim************
  2. Ola Marllon, Recompilei conforme orientou-me, mas tambem não funcionou. Este é o .BAT que usei, é o .BAT que está no livro do Vilian. Mais um vez, grato. @ECHO OFF CLS ECHO ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ECHO ³ FiveWin for Harbour 2.4 - January 2002 Harbour development power ³Ü ECHO ³ © FiveTech, 1993-2002 for Microsoft Windows 95/98/NT/2000/ME and XP ³Û ECHO ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ ECHO ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß ECHO BuildScr Compiling... set fwdir=c:\fwh set hdir=c:\harbour set bcdir=c:\bcc55 %hdir%\bin\harbour prg001 /m/n /i%fwdir%\include;%hdir%\include %2 %3 > clip.log %hdir%\bin\harbour printer /m/n /i%fwdir%\include;%hdir%\include %2 %3 > clip.log %hdir%\bin\harbour rpreview /m/n /i%fwdir%\include;%hdir%\include %2 %3 > clip.log %hdir%\bin\harbour tdosprn /m/n /i%fwdir%\include;%hdir%\include %2 %3 > clip.log %bcdir%\bin\bcc32 -M -c -O2 -I%hdir%\include prg001.c > b32.bc %bcdir%\bin\bcc32 -M -c -O2 -I%hdir%\include printer.c > b32.bc %bcdir%\bin\bcc32 -M -c -O2 -I%hdir%\include rpreview.c > b32.bc %bcdir%\bin\bcc32 -M -c -O2 -I%hdir%\include tdosprn.c > b32.bc IF EXIST scr.rc %bcdir%\bin\brc32 -r scr echo c0w32.obj + > b32.bc echo prg001.obj + >> b32.bc echo printer.obj + >> b32.bc echo rpreview.obj + >> b32.bc echo tdosprn.obj, + >> b32.bc echo %1.exe, + >> b32.bc echo %1.map, + >> b32.bc echo %fwdir%\lib\FiveH.lib %fwdir%\lib\FiveHC.lib + >> b32.bc echo %hdir%\lib\rtl.lib + >> b32.bc echo %hdir%\lib\vm.lib + >> b32.bc echo %hdir%\lib\gtwin.lib + >> b32.bc echo %hdir%\lib\lang.lib + >> b32.bc echo %hdir%\lib\macro.lib + >> b32.bc echo %hdir%\lib\rdd.lib + >> b32.bc echo %hdir%\lib\dbfntx.lib + >> b32.bc echo %hdir%\lib\dbfcdx.lib + >> b32.bc echo %hdir%\lib\debug.lib + >> b32.bc echo %hdir%\lib\common.lib + >> b32.bc echo %hdir%\lib\pp.lib + >> b32.bc echo %hdir%\lib\ace32.lib + >> b32.bc echo %hdir%\lib\rddads.lib + >> b32.bc echo %bcdir%\lib\cw32.lib + >> b32.bc echo %bcdir%\lib\import32.lib + >> b32.bc echo %bcdir%\lib\psdk\odbc32.lib, >> b32.bc IF EXIST %1.res echo %1.res >> b32.bc %bcdir%\bin\ilink32 -Gn -aa -Tpe -s @b32.bc IF ERRORLEVEL 1 GOTO LINKERROR ECHO * Application successfully built GOTO EXIT ECHO :LINKERROR GOTO EXIT :EXIT
  3. Marllon, bom dia. O amigo tem toda razão! Seguindo sua orientação, fiz este teste: Na listagem abaixo, coloquei Msginfo( .. ) para saber até onde o programa chega. Não compilando junto as classes Printer, RPreview e TDosPrn que estão em na pasta \FWH\SOURCE\CLASSE do meu FWH, o relatório é apresentado na tela e vai para impressora. Compilando desta forma dá erro! #include "FiveWin.ch" Func Main() ... Return nil Func xxx() Return nil #include "prg01.prg" #include "printer.prg" #include "rpreview.prg" #include "tdosprn.prg" Ou as classes que recebi estão diferentes do LIB ou não sei modificar uma classe. Pra incluir uma nova classe ou substituir uma existente; não é só compilar junto ??? Grato pela atenção. FUNCTION RCli() local oPrn, nTam, nPag:=0, nLen, nTamPag,; nTamRel, nLin, oFnt Abre( 60 ) PRINT oPrn ; NAME "Listagem do cadastro de clientes" PREVIEW nTam := 0 nTamRel := 100 nTamPag := 60 // ISTO NÃO VALE MAIS!! //oPrn:Setup() //calcula o tamanho da fonte //DO WHILE .T. //DEFINE FONT oFnt NAME "ARIAL" SIZE nTam,-10 OF oPrn //oPrn:SetFont(oFnt) //nLen := oPrn:GetTextWidth("B",oFnt) //If oPrn:nHorzRes()/nLen < nTamRel //nTam -= 0.05 //oFnt:End() //Else //Exit //Endif //ENDDO // *** definindo a fonte *** DEFINE FONT oFnt NAME "ARIAL" SIZE 0,-4 OF oPrn oPrn:SetFont(oFnt) //verifica se a impres. está ativa If Empty(oPrn:hDC) MsgStop("Impressora não pronta!") Return Nil Endif GO TOP DO WHILE !Cadcli->( Eof() ) Msginfo( "Chego até aqui!!!") // ********* PAGE Msginfo( "Daqui não passo!!" ) // ********* nPag ++ nLin := 7 // Imprime cabeçalho oPrn:CharSay(01,01,"DEMONSTRAÇÃO LTDA.") oPrn:CharSay(01,72,"EM - "+Dtoc(Date()),"D") oPrn:CharSay(02,01,"LISTAGEM DO CADASTRO DE LIENTES") oPrn:CharSay(02,72,"AS - "+Time(),"D") oPrn:CharSay(03,72,"PÃGINA - "+Str(nPag,4),"D") oPrn:CharSay(04,01,Replicate("-",85),"F") oPrn:CharSay(05,01,"CÓDIGO") oPrn:CharSay(05,11,"CLIENTE") oPrn:CharSay(04,01,Replicate("-",85),"F") // Detalhes DO WHILE nLin <= nTamPag .AND. !Cadcli->( Eof() ) oPrn:CharSay(nLin,01,Str(Cadcli->CodCli,6)) oPrn:CharSay(nLin,11,Cadcli->NomCli) nLin++ Cadcli->( DbSkip() ) ENDDO If Cadcli->( Eof() ) oPrn:CharSay(nLin,01,Replicate("=",85),"F") Endif ENDPAGE ENDDO ENDPRINT Fecha( 60 ) RETURN nil //Fim da listagem ********************************************** ********************************************** citação:Cezar, bom dia o fato do programa estar funcionando não significa que esteja certo!!! Ok aconselho a voce retirar a definicao do Font de dentro do While! citação:O programa listado acima, FUNCIONA!, com as classes originais. Por favor, leiam a pergunta inicial. Nova pergunta. Vamos supor que eu modifiquei na classe TPrinter as mensagens para o português; como faço para incluir ou melhor substituir pela atual. Desculpe-me a insistência, ainda aprendo. Grato. ****************************************O ***************************************** citação:Sua definição do FONT, está dentro do While, ou seja, cria a todo momento. Oliveira, Sérgio A. PERSONAL - LINS personal@personal.com.br id=quote>id=quote> id=quote>id=quote>Marllon Figueiredo Analista de Sistemas ERP/CRM Porto Alegre - RS marllonfigueiredo@globo.com id=quote>id=quote>Editado por - Cezar on 30/05/2003 13:09:48
  4. O programa listado acima, FUNCIONA!, com as classes originais. Por favor, leiam a pergunta inicial. Nova pergunta. Vamos supor que eu modifiquei na classe TPrinter as mensagens para o português; como faço para incluir ou melhor substituir pela atual. Desculpe-me a insistência, ainda aprendo. Grato. ****************************************O ***************************************** citação:Sua definição do FONT, está dentro do While, ou seja, cria a todo momento. Oliveira, Sérgio A. PERSONAL - LINS personal@personal.com.br id=quote>id=quote>
  5. Ola Gilmer, Não entendi a pergunta ??? ************************************************** citação:Olá, Porque vc fica crindo o fonte a todo momento ? citação:DO WHILE .T. DEFINE FONT oFnt NAME "ARIAL" SIZE nTam,-10 OF oPrn oPrn:SetFont(oFnt) nLen := oPrn:GetTextWidth("B",oFnt) If oPrn:nHorzRes()/nLen < nTamRel nTam -= 0.05 oFnt:End() Else Exit Endif ENDDO id=quote>id=quote> id=quote>id=quote>
  6. Olá Vagner, Eu mudei para oPrn para oPrinter, mas não resolveu, dá o mesmo erro! Grato. *************************************************** citação:Olá Cezar, Mude oPrn para oPrinter :þ) Abraços Vagner Wirts São Paulo-Brasil id=quote>id=quote>
  7. Ola, Conforme sugestão do Karinh, testei com LOCAL oPrinter, mas deu o mesmo erro! Listagem da rotina do relatório: FUNCTION RCli() local oPrn, nTam, nPag:=0, nLen, nTamPag,; nTamRel, nLin, oFnt Abre( 60 ) PRINT oPrn ; NAME "Listagem do cadastro de clientes" PREVIEW nTam := 0 nTamRel := 100 nTamPag := 60 //oPrn:Setup() //calcula o tamanho da fonte DO WHILE .T. DEFINE FONT oFnt NAME "ARIAL" SIZE nTam,-10 OF oPrn oPrn:SetFont(oFnt) nLen := oPrn:GetTextWidth("B",oFnt) If oPrn:nHorzRes()/nLen < nTamRel nTam -= 0.05 oFnt:End() Else Exit Endif ENDDO //verifica se a impres. está ativa If Empty(oPrn:hDC) MsgStop("Impressora não pronta!") Return Nil Endif GO TOP DO WHILE !Cadcli->( Eof() ) PAGE nPag ++ nLin := 7 // Imprime cabeçalho oPrn:CharSay(01,01,"DEMONSTRAÇÃO LTDA.") oPrn:CharSay(01,72,"EM - "+Dtoc(Date()),"D") oPrn:CharSay(02,01,"LISTAGEM DO CADASTRO DE LIENTES") oPrn:CharSay(02,72,"AS - "+Time(),"D") oPrn:CharSay(03,72,"PÃGINA - "+Str(nPag,4),"D") oPrn:CharSay(04,01,Replicate("-",85),"F") oPrn:CharSay(05,01,"CÓDIGO") oPrn:CharSay(05,11,"CLIENTE") oPrn:CharSay(04,01,Replicate("-",85),"F") // Detalhes DO WHILE nLin <= nTamPag .AND. !Cadcli->( Eof() ) oPrn:CharSay(nLin,01,Str(Cadcli->CodCli,6)) oPrn:CharSay(nLin,11,Cadcli->NomCli) nLin++ Cadcli->( DbSkip() ) ENDDO If Cadcli->( Eof() ) oPrn:CharSay(nLin,01,Replicate("=",85),"F") Endif ENDPAGE ENDDO ENDPRINT Fecha( 60 ) RETURN nil Grato. id=size2>id=size1>
  8. Todo mundo já sabe que uso FWH 2.4. O pessoal do forum, esclareceram-me algumas dúvidas sobre impressão no FW, TPrinter, RPreview e TDosPrn.... Inicialmente montei um pequeno relatório com as classes originais do meu FWH e funcionou! Para treino, copiei de \Fwh\Source\Classes as classes Tprinter, RPreview e TdosPrn originais para o diretório da minha aplicação, troquei algumas mensagens para o português e na compilação deu os seguintes erros: ERROR E0004 STATIC DECLARATION FOLLHOWS EXECUTABLE STATEMENT Troquei as variáveis STATIC por PUBLIC; compilou e linkou. Executando o relatório deu erro: ERROR BASE/1003 Variable Does Not Exist: oPrinter called from PageBegin(0) Será que essas classes que copiei não são originais?? Por onde começo a procurar o erro???
  9. Karinh, bom dia! Recebi e vou estudar. Muito grato. ***************************************** citação:Cezar... seu pedido já foi atendido a contento, verifique sua caixa postal no Bol. CEZAR.ZIP Abraços. João Santos São Paulo-Brasil (11) 3106-2832 a Noite karinhannah@ubbi.com.br id=quote>id=quote>
  10. Ola Karinh, Tentei baixar em dicas, mas o link tá com problemas, poderia me enviar, se for possivel. vczz@bol.com.br Grato. *************************************** citação:Cezar, eu uso TdosPrn.prg e é muito boa, baixe nas dicas + dicas, tem exemplos de como usa-la... Dúvidas avise-nos. João Santos São Paulo-Brasil (11) 3106-2832 a Noite karinhannah@ubbi.com.br id=quote>id=quote>Editado por - Cezar on 26/05/2003 16:37:25
  11. Ola Karinh, Entendi, mas minha dúvida é o seguinte; depois que o relatório vai pra tela, se decidir que a impressão será na matricial, quero que ela seja igual ao DOS ( ex.: Nota fiscal )não gráfica e mais rápida?? Parece que tem uma classe TDOSPRN que faz isso?? Se não for abusar, poderia me dar uma idéia de como uso?? Grato. ****************************************************** citação:Use um Botão Radio Para Fazer a Escolha se é Matricial ou Jato. O usuário é quem escolhe o que é melhor. João Santos São Paulo-Brasil (11) 3106-2832 a Noite karinhannah@ubbi.com.br id=quote>id=quote>
  12. Ola, Estou precisando de uma orientação dos amigos sobre impressão no FW. Eu estou usando o FW for Harbour 2.4! Como novato em FW, gerei um pequeno relatório, uma simples listagem de clientes. O programa mostrou o relatório na tela, dei um zoom prá (+) e prá (-) e parece normal. No clipper, antes de gerar os relatórios eu perguntava se queria imprimir na tela ou direto na impressora. Se fosse na tela, o relatório ia pra tela ( set device to teste ) como se fosse num editor de textos e o operador tem opção de: IMPRIMIR ou gravar em ARQUIVO. Imaginando que um relatório tanto poderia ser impresso numa jato de tinta ou numa matricial como "DOS", poderiam me dar uma idéia de como fazer isso?? Grato. Editado por - Cezar on 26/05/2003 00:37:35
  13. Uso o FW for Harbour 2.4: 1. Usando MDICHILD com DLG incrustado. Quando abre a tela abaixo, o listbox e apresentado 2 vezes , como se abrise um livro 2 vezes na mesma pagina, parecendo que tem coisa errada. 2. Usando só MDICHILD esse efeito não acontece, mas a resolução na tela é de menor qualidade , por exemplo; a linha de titulos dos campos não se une com a barra HSCROLL, o relevo não está acentuado. Que comandos poderia usar para eliminar a dupla apresentação?? Agradeço a ajuda!! Exemplo do código: ========================== Function Cli_1b() local oDlg, oIco, oBrw, oBtn := Array( 10 ) local nWnd := 5 If ValType( oChilds[nWnd] ) == "O" Beep() oChilds[nWnd]:SetFocus() oChilds[nWnd]:Restore() oChilds[nWnd]:Refresh() Return Nil Endif Abre( 60 ) DEFINE FONT oFnt NAME "MS Sans Serif" SIZE 0,-12 OF oDlg DEFINE WINDOW oChilds[nWnd] MDICHILD OF oJanPri ; TITLE "Clientes (1)"; PIXEL ; FONT oFnt ; COLOR rgb( 255, 255, 255 ), rgb( 192,192,192 ) ; FROM 03,05 TO 380,627 NOMAXIMIZE oChilds[nWnd]:SetIcon( TIcon():New( ,, "ICON_1" ) ) oChilds[nWnd]:bGotFocus := {|| oDlg:SetFocus() } DEFINE DIALOG oDlg OF oChilds[nWnd] ; STYLE WS_CHILD ; PIXEL ; FROM 03,05 TO 380,627 @ 03,04 LISTBOX oBrw ; FIELDS STRZERO(Cadcli->CodCli,6),; CadCli->NomCli,; Cadcli->NomFan,Cadcli->Endere ; OF oDlg ; FIELDSIZES 50,180,120,180 ; HEADERS " Código "," Nome do cliente ",; " Apelido "," Endereço " ; ALIAS "CADCLI" ; SIZE 300,150 PIXEL //oBrw:aJustify := { .F., .F., .F., .F. } //oBrw:nClrBackHead := Rgb( 192, 192, 192 ) //oBrw:nClrBackFocus := Rgb( 0, 0, 125 ) //oBrw:nClrNfBack := oBrw:nClrBackFocus //oBrw:nClrLine := Rgb( 192, 192, 192 ) //oBrw:nLineStyle := 1 //oBrw:nLineHeight := 15 //oBrw:nHeaderHeight := 17 //oBrw:GoTop() @ 162,126 BUTTON oBtn[1] PROMPT "&Incluir" ; PIXEL SIZE 30,10 OF oDlg @ 162,161 BUTTON oBtn[2] PROMPT "&Alterar" ; PIXEL SIZE 30,10 OF oDlg @ 162,196 BUTTON oBtn[3] PROMPT "&Excluir" ; PIXEL SIZE 30,10 OF oDlg @ 162,231 BUTTON oBtn[4] PROMPT "&Consultar" ; PIXEL SIZE 30,10 OF oDlg @ 162,266 BUTTON oBtn PROMPT "&Sair" ; ACTION oDlg:End() ; PIXEL SIZE 30,10 ACTIVATE DIALOG oDlg NOWAIT ; ON INIT oDlg:Move( 0, 0 ) ; VALID ( oChilds[nWnd]:End(), .t. ) ACTIVATE WINDOW oChilds[nWnd] ; ON INIT oChilds[nWnd]:SetSize(nWidth,oDlg:nHeight,.t.) ; VALID ( oBrw:End(), SysRefresh(),; Fecha( 60 ), ; oChilds[nWnd] := Nil,.T. ) Return Nil Editado por - Cezar on 22/05/2003 10:11:00
  14. Ola! Voces me deram algumas orientações sobre o problema que eu estou com telas MDI/MDICHILD, usando a classe TDBF "nativa" do F.W.Harbour, mas não estou conseguindo fazer funcionar. Acho que é falha da classe TDBF nativa, pois o mesmo código com o comandos normais "Cadcli->Codcli" funciona. Essa falha está no fechamento do DBF. Grato. /////////////////////////////////////////////////////// tente o seguinte: ACTIVATE WINDOW oChilds[nWnd] ; ON INIT oChilds[nWnd]:SetSize(oDlg:nWidth,oDlg:nHeight,.t.); VALID( FchCli(), oChilds[nWnd]:End() ) /// provoca GPF! Return Nil *********************************************************** Function FchCli() oDbf:Close() /// Dá erro! Return .t. Elias Abrão Júnior Indaiatuba - SP eajunior.sp@terra.com.br
  15. Ola, Karinh Coloquei oDbf:Close() no ACTIVATE DIALOG mas não funcionou, porque se trata da colagem da Dialog na janela MDICHILD, portanto qdo voce fecha no X da janela filha o comando não é executado. Se voce abre e fecha, qdo abre pela segunda vez o arquivo ainda tá aberto. Experimentei colocar oDlg:End() no VALID da MDICHILD, mas provoca outro tipo de erro qdo. fecho pela X da janela pai. Agora, de tanto testar, observei que quando uma janela Filha está aberta, se fechar no X da janela pai, a clásula VALID da janela filha não é executadada. Parece que MDI/MDICHILD em Fivewin não funciona, o que será uma frustação. O que pensa o amigo?? Grato.
  16. Ola, Karinh e Evandro. Entendi que o "TDBF" não vem no pacote, mas existe uma classe para Database no FWH . Estou tentando utilizá-la, mas apresenta um erro que não consegui entender. Veja o programa abaixo; abro a tela, consigo movimentar os registros e clicando no X da tela filha ela se fecha sem erro, mas, se clico X da tela pai mostra o erro: BASE/1005 Message Not Found TDATABASE:CODCLI Se voces tiverem alguma idéia, agradeço. Um abraço. *********************************************************** * PRG200.prg *********************************************************** #include "Fivewin.ch" *********************************************************** Function Cli1() local oDlg, oIco, oBtn := Array( 3 ), oDbf, oDbf1 local nWnd := 1 // controla abertura janelas mdichild If ValType( oChilds[nWnd] ) == "O" Beep() oChilds[nWnd]:SetFocus() oChilds[nWnd]:Restore() oChilds[nWnd]:Refresh() Return Nil Endif Abre( 60 ) // abre arq. clientes // "60" não é número da área', é so // controle no case de abertura. // 60 = clientes, 70 fornec., etc.. DATABASE oDbf oDbf:SetOrder( "Ind1" ) oDbf:GoTop() DEFINE WINDOW oChilds[nWnd] MDICHILD OF oJanPri ; TITLE "Clientes 1"; FROM 0.5, 0.5 TO 0.5, 0.5 NOMAXIMIZE oChilds[nWnd]:SetIcon( TIcon():New( ,, "ICON_1" ) ) oChilds[nWnd]:bGotFocus := {|| oDlg:SetFocus() } DEFINE DIALOG oDlg RESOURCE "CADCLI" OF oChilds[nWnd] oDlg:Cargo := .F. REDEFINE GET oDbf:CodCli ID 201 OF oDlg UPDATE PICTURE "999999" REDEFINE GET oDbf:NomCli ID 202 OF oDlg UPDATE REDEFINE GET oDbf:Endere ID 203 OF oDlg UPDATE REDEFINE BUTTON oBtn[1] ID 301 OF oDlg ; ACTION ( Navega( 1, oDbf ), oDlg:Update() ) REDEFINE BUTTON oBtn[2] ID 302 OF oDlg ; ACTION ( Navega( 2, oDbf ), oDlg:Update() ) REDEFINE BUTTON oBtn[3] ID 303 OF oDlg ACTIVATE DIALOG oDlg NOWAIT ; ON INIT ( oDlg:Move( 0, 0 ) ) ; VALID ( oChilds[nWnd]:End(), .t. ) oBtn[2]:SetFocus() //oChilds[nWnd]:bKeyDown:= {|nKey| MinhaFunc( Key )} ACTIVATE WINDOW oChilds[nWnd] ; ON INIT oChilds[nWnd]:SetSize(oDlg:nWidth,oDlg:nHeight,.t.); VALID( FchCli(), oDbf:Close(), oChilds[nWnd] := Nil, .t. ) Return Nil *********************************************************** Function FchCli() //Fecha( 60 ) Return .t. *********************************************************** Function Navega( n, oDbf ) DO CASE CASE n = 0 oDbf:Gotop() CASE n = 1 IF !Bof() oDbf:Skip( -1 ) Endif CASE n = 2 oDbf:Skip() IF oDbf:Eof() oDbf:GoBottom() Endif CASE n = 3 oDbf:GoBottom() ENDCASE Return Nil *********************************************************** Aqui faz o fechamento do programa. *********************************************************** Function Fim() If nFim = 0 IF !MsgYesNo("Finalizar2 o programa!","S.A.C.") Return .F. Endif Stop() Endif Return .T. *********************************************************** Function Stop() If Usuari->( DBSEEK(cUsuSis) ) If Usuari->( RegLock() ) Usuari->Conect := .F. Usuari->( DbUnlock() ) EndIf EndIf // FechaBase() Return Nil ***********************************************************
  17. Como principiante em F.W.Harbour, já escrevi um programa utilizando os comandos normais para abertura, atualização de arquivos; USE, APPEND, etc... Como faço para utilizar a lib/classe TDBF; no pacote que adquiri do FWH não veio! Agradeço a orientação! Editado por - Cezar on 01/05/2003 13:22:08
  18. Obrigado pessoal, tá clareando, vou testar. Gimer, melhorando a explicação. Toda vez que entro para cadastrar o cliente, apresento na tela do cadastro, os dados do último cliente. O cursor estará focado no botões de alteração, inclusão, proxímo/anterior, etc.. Se o cursor estiver focado no botão exclusão e quizer ir para o cliente seguinte, não precisarei clicar o botão seguinte, basta o operador pressionar a tecla seta prá baixo. Espero ter clareado, grato.
  19. Karinh, relendo tá confuso mesmo! Como principiante em FWH, estou seguindo o mesmo raciocinio na contrução da tela do cadastro de cliente e outras que uso no clipper. A idéia é o seguinte: Ao entrar no cadastro, tem-se os dados do ultimo cliente cadastrado na tela, gets estão inativos não posso altera-los. Comandos para atualização: Inclusão: pressiono o botão incluir ou INS; limpa os gets e habilita para digitar do novo cliente. Alteração: pressiono o botão alterar ou ENTER; habilita gets e altera. Se ao invés de Incluir ou alterar, quero ir para o cliente seguinte ou anterior: alem das opcões dos botões, poderia usar as setas pra Baixo/Cima. Para isso, em conjunto com dos botões, caso algumas das teclas, INS, ENTER, setas pra cima/baixo fossem pressionadas, executaria as functions dos botões correspondentes. Espero de esclarecido melhor?? Me parece que deveria utilizar o oDlg:bKeyDown ( inkey() do clipper ), se não for possivel, parto para outra solução. Se o amigo tiver alguma dica, agradeço. Um abraço. Editado por - Cezar on 29/04/2003 03:11:35
  20. Como poderia resolver este problema?? DEFINE WINDOW oWin MDICHILD... ... DEFINE DIALOG oDlg OF oWin.... REDEFINE GETs ....... REDEFINE BUTTONs .....INC. ALT. EXC., etc.. ACTIVATE WINDOW oDlg ... ACTIVATE WINDOW oWin ... Como interceptar nesta tela as teclas de seta prá-cima, prá-baixo, INS, etc... Agradeço a dica!
  21. Como novato em FWH, também tenho dúvidas sobre WS porque já tive vários problemas com ele, mas para inicio de aprendizado resolvi usá-lo apenas para uma agilidade inicial pois meus problemas ainda são fixar os conceitos dos comando e as manhas da linguagem. Se descobrir que é mais eficiente não utilizá-lo pelo menos vou listar o .RC e aproveitar as posicões. Já peguei vários desses geradores de programas, mas são meios confusos, voce instala e dá um monte de erros. Talvez não esteja sabendo utilizá-los. Um abraço.
  22. Ola Marllon, Sou novo em FWH, e neste inicio tive bastante problemas com o workshop. Montava uma dialog, compilava e funcionava, qdo volta ao workshop dava erro, só melhorou qdo. desabilitei o parametro para criação automática do "Identificador". Também estou achando não muito funcional. O sistema que pretendo converter é grande, lendo seu comentários para o colega Riosys, me deixa mais indeciso em utilizar o workshop. Pela sua experiência é mais seguro gastar um pouco mais de tempo e desenhar na mão mesmo??? Agradeço a sua opnião. Editado por - Cezar on 15/04/2003 16:30:25
  23. Defini a minha barra de mensagens da seguinte forma: PUBLIC cDados := "\SISTEMA\DADOS" SET MESSAGE OF oJanPri TO cDados KEYBOARD DATE CLOCK Depois de validar a entrada do usuário CEZAR, quero colocar o nome do usuário CEZAR na barra de mensagens numa caixa como o | CEZAR | KEYBOARD | DATE | CLOCK |. Não sei se deu prá entender , estou lendo os manuais mas ainda não descobri como modificar. Se alguém tiver uma dica eu agradeço.
  24. Estou usando FWH 2.4. Já desinstalei e reinstalei cópias do workshop 4.5 do disco do delphi, do cd do livro FW, apaguei os .RC, fiz varredura de virus e continuo com o seguinte problema. 1.) Crio um .RC com uma dialog, bitmaps, icom, salvo o .RC, compilo o prg com o .RC e funciona. Quando volto para workshop as vezes deparo com a seguinte mensagem: Resource workshop: UA5 detected! Resource workshop has detected that an unrecoverable application error or other abnormal termination has occured on a previous instance of resource workshop. 2.) Outra vez, carrego o .RC anterior e quando dou um clique em uma dialog já criada mostra o seguinte erro: Whorkshop causou um erro de divisão no módulo USER.EXE em 0004:00005f67 .... Esvaziamento de pilha... AGRADEÇO A AJUDA DOS COLEGAS!!!
  25. Estou usando FW Harbour 2.4 . 1.) No Workshop, qdo. carrego essa DLL o unico controle que carrega é o Folder; não deveria carregar mais controles ??? Segundo o livro FWH deveria! 2.)Uma vez instalada essa DLL o BUTTONBAR não funciona! A barra cinza permanece, mas os botoes desaparecem; se desintalo essa DLL do Workshop, a BUTTONBAR volta apresentar os botões. Como carrego mais controles no Workshop e existe problemas dessa DLL com FW Harbour 2.4?? Agradeço as dicas dos colegas.
×
×
  • Create New...