Ir para conteúdo
Fórum Script Brasil

Micheus

Veteranos
  • Total de itens

    3.189
  • Registro em

  • Última visita

Tudo que Micheus postou

  1. Pirambu!, qual é a estrutura e nome da tabela em questão?
  2. Eder, faz um teste com estes dois programa anexos. Cada um utiliza uma versão do quickreport (2k e 3.5). Aqui na empresa, com a impressora padrão (na rede) desligada funciona perfeitamente. ImprimeEdit.zip
  3. Eder, se o campo tem exatamente este formato e tamanho, então é fácil resolver: SELECT CTRC.NUMERO_CTRC, CTRC.DATA_EMISSAO, CTRC.PAG_CNPJ, LANCA.CTRCKEL, LANCA.FRETERED FROM CTRC, LANCA WHERE (SUBSTRING(CTRC.NUMERO_CTRC FROM 1 FOR 6) = LANCA.CTRCKEL)Substring retornará uma string de 6 caracteres, começando no 1º. Abraços
  4. Churc, talvez você tenha algum outro parecer sobre esta questão, mas vou comentar aqui baseado na minhas experiências com o QuickReport. ;) Eder, já que é com o quick, acho estranho que isto ocorra, porque eu utilizo o QuickReport e nunca tive este tipo de problema. Observe que este erro deveria, então, ocorrer mesmo com uma impressora local desligada, não acha?! E é como eu trabalho - ela está sempre desligada, mas consigo visualizar meus relatórios normalmente e até imprimí-los (é claro que daí ficam na lista do spool de impressão). Como você chegou a conclusão de onde estava o problema?
  5. Churc, só comentei porque em algum post que andei lendo por aí, parece que tem algum componente que tenta obter informação da impressora padrão de qualquer jeito (digamos assim). Se não me engano, o Forte tem um lance de mostrar as margens físicas, da impressora padrão, na cor cinza. Assim, o cara poder desenhar seu relatório na área útil do papel. Poderia ser um caso - na verdade é especulação. Vamos esperar o Eder dar um retorno. ;)
  6. Micheus

    Fazer Backup

    Dê uma espiada neste post do Churc. É utilizando o zLib. Eu dei uma procurada e tem um componente ZLBArchive (link disponível em www.inf.ufsc.br\~prass) - um componente para compressão de arquivos utilizando o algoritmo ZLIB (cria arquivos .ZIP), com instalação para a versão 4 e 5 do Delphi. Veja se lhe ajuda.
  7. Bom, como está implementado (no form principal) e pelo fato de a mensagem (TMessage) recebida no evento OnMessage só temos o handle da janela, a saída seria definir este procedimento apenas no form onde tem o Grid onde você quer utilizar o recurso. Então, você teria que colocar o procedimento AppEventsMessage no form desejado, atribuí-lo ao evento da aplicação no OnCreate deste form, bem com removê-lo no OnDestroy. Tem também que fazer o teste para saber se a janela que enviou a mensagem é o grid: type TFormComOGrid = class(TForm) private procedure AppEventsMessage(var Msg: TMsg; var Handled: Boolean); end; ... procedure TFormComOGrid.AppEventsMessage(var Msg: TMsg; var Handled: Boolean); var Sentido: SmallInt; begin if Msg.message = WM_MOUSEWHEEL then if Msg.hwnd = DBGrid1.Handle then // *** <=== AQUI você testa o handle do DBGRID em questão begin Msg.message := WM_KEYDOWN; Msg.lParam := 0; Sentido := HiWord(Msg.wParam); if Sentido > 0 then Msg.wParam := VK_UP else Msg.wParam := VK_DOWN; end; end; procedure TFormComOGrid.FormCreate(Sender: TObject); begin ... Application.OnMessage := AppEventsMessage; // *** <==== AQUI end; procedure TFormComOGrid.FormDestroy(Sender: TObject); begin Application.OnMessage := nil; // *** <==== AQUI ... end; =============================== robinhocne, me ocorreu uma segunda forma de contornar o seu problema, e bem mais simples. (não removi a resposta anterior porque pode servir a alguém) Na situação atual (aquele em que você diz que até os edit's estão "rolando") você faz apenas as seguintes alterações: procedure TCadTesteDBEdit.AppEventsMessage(var Msg: TMsg; var Handled: Boolean); var Sentido: SmallInt; WndClass :array[0..128] of char; // ***** <==== INCLUI ESTA LINHA begin if Msg.message = WM_MOUSEWHEEL then begin // ***** <==== INCLUI ESTA LINHA GetClassName(Msg.hwnd, WndClass, SizeOf(WndClass)-1); // ***** <==== INCLUI ESTA LINHA if StrComp(WndClass, 'TDBGrid') = 0 then // ***** <==== INCLUI ESTA LINHA begin Msg.message := WM_KEYDOWN; Msg.lParam := 0; Sentido := HiWord(Msg.wParam); if Sentido > 0 then Msg.wParam := VK_UP else Msg.wParam := VK_DOWN; end; end; // ***** <==== INCLUI ESTA LINHA
  8. Churc, está parecendo que há algum form com relatório (com um componente tipo o Fortes ou similar) que está sendo criado automaticamente (ficou na lista de auto-create). Se for isto, seria interessante criar este tipo de form em runt-time para dar chance ao programa de "entrar no ar", e só depois verificar as condições da impressora antes de uma impressão. Senão, o cara não vai conseguir entrar no programa enquanto não tiver a impressora - isso não parece legal.
  9. Pirambu!, utilizando um arquivo temporário e, é claro, aquela estrutura já citada (ordenação pelo campo em questão) daria para fazer isto de forma simples: procedure TForm1.Button1Click(Sender: TObject); var SLTree :TStringList; IdxPoint :Integer; StrAux, StrNivel :string; TmpFileName :array[0..256] of char; begin ... QryHierarquia.Open; GetTempFileName('.', 'tre', 0, TmpFileName); // obter nome p/ arquivo temporário SLTree := TStringList.Create; try StrAux := ''; while not QryHierarquia.EOF do begin StrNivel := ''; // armazena os TAB equivalente a níveis StrAux := QryHierarquiaNOM_NIVEL.AsString; // aqui vai o campo que contém 1;1.1;1.2;... IdxPoint := Pos('.', StrAux); // localiza marcador de nível if IdxPoint > 0 then repeat Delete(StrAux, 1, IdxPoint +1); StrNivel := StrNivel +#9; IdxPoint := Pos('.', StrAux); until IdxPoint = 0; SLTree.Add(StrNivel +QryHierarquiaNOM_NIVEL.AsString); QryHierarquia.Next; end; SLTree.SaveToFile(TmpFileName); // grava no arquivo temporário Treeview1.LoadFromFile(TmpFileName); // carrega árvore do arquico Treeview1.FullExpand; // mostra arvore expandida DeleteFile(TmpFileName); // elimina arquivo temporário finally SLTree.Free; end; QryHierarquia.Close; end; Veja se você consegue compreender e implementar. Veja se o resultado é o esperado. Se for utilizar um algorítmo para inclusão em níveis, então fica um pouco mais complexo, mas tem como.
  10. Significa que a coluna DATA não existe na sua tabela EXAME. Tem certeza que o nome do campo é este mesmo? Verifique!
  11. Utilizei isso e a rodinha do mouse não funciona, só as teclas. acho que você não leu a segunda parte do meu comentário. No OnCreate do seu form principal (deve ser o mesmo form em que você colocou o código acima) você terá que fazer a atribuição do procedimento ao evento OnMessage:procedure TCadTesteDBEdit.FormCreate(Sender: TObject); begin // declara um tratador de eventos para a aplicação // com o objetivo de tratar o evento MouseWheel Application.OnMessage := AppEventsMessage; // *** <================== AQUI end;
  12. Então, se você está utilizando o Writeln não tem mistério - a string que você manda imprimir na verdade contém a sequencia de caracteres que mencionei:Vou assumir a LPT1 como sua variável (handle) da impressora: ... Write(LPT1, #27'@'); // ESC é o caracter #27, seguido do caracter '@' conforme instrução do manual (sugiro não usar o avanço de linha) writeln(LPT1, 'Título do relatório a ser impresso no cabeçalho'); ... Captou, o envio dos caracteres de controle não difere muito do envio de uma string normal (é uma sequencia de caracteres, também)
  13. Você está enviando os comandos para LPT1 usando o Write/Writeln ou algum componente específico? De qualquer modo, sempre que utilizei escrita direta na impressora, tomei por habito sempre enviar na primeira linha, o comando de reset.
  14. dê uma olhada neste tutorial (seção Tutoriais & Dicas), onde também é explicado o uso da mensagem WM_MOUSEWHEEL. Localize o texto "Vamos ao código".Voce codifica AppEventsMessage e sua inicialização em FormCreate, no seu form principal e o efeito irá ser aplicado a todos os Grids, Memos,... componentes que façam uso do scroll. Veja se você consegue implementar em seu código.
  15. Thiago, você está fazendo uso de impressão direta na LPT1:, enviando códigos de controle para a impressora, ou impressão (normal do Windows) via spool? Se for o primeiro caso, no manual de usuário da impressora (Donwload em suporte Epson), lá em Appendix->Command Sumary->Sending Printer Commanding, você acha esta Printer Operation - o comando é a seqüência ESC@. Este ESC é o caracter 27, ou seja #27, no Delphi. Que coisas esquisitas estão ocorrendo? Se o problema não estiver relacionado ao seu programa, sugiro que você post esta dúvida em outra sessão do forum.
  16. Jonas, realmente este é um aspecto que as vezes não é levado em conta. Em alguns casos a conexão deve ser configurada para utilizar os mesmos char set e collate definidos no banco para evitar problemas com acentuação. Mas, observando a imagem exemplo, você não acha estranho que numa lista de 4 itens, apenas um deles esteja com o problema, já que supostamente o problema deveria ocorrer para cada registro gravado? Abraços
  17. eu não disse que esse codigo era meu ( mas caso voce não saiba codigos transcritos na net são de dominio publico a menos que o autor explicitamente diga ao contrario ). INPI é verdade, não disse, mas quando você não cita referências, pode dar a entender que seja.Quanto a ser de domínio público, realmente você tem razão. Entretanto, ainda acho que por uma questão de respeito a quem teve o trabalho e tempo gastos para escrevê-lo, uma referência é o mínimo que podemos fazer como incentivo e reconhecimento. Abraços
  18. André, leia e veja os casos abaixo e você haverá de convir que seria algo meio complicado de ser feito nesta imagem, não acha? Estas aqui seriam mais simples, bastaria você fazer uso de um editor e remover ou pintar toda a área a ficar transparente de uma mesma cor, já que atualmente elas possuem uma gama de cores similares, o que não deixaria o recurso de transparência funcionar (até mesmo a transparência oferecida pelo componente TImage, quanto mais outro algorítmo qualquer). Este tipo de intervenção já foi mencionado pelo pessoal nos posts iniciais. Veja como elas devem ficar para que o esquema de transparência (em qualquer uso) funcione: Também é importante ter em mente que, em geral, a cor a ser tratada como sendo a de transparência é a cor do 1º pixel (o superior, mais a esquerda) ou aquele definido na propriedade TransparentColor (até alterei a procedure CreateRegion para refletir esta alteração que não foi prevista inicialmente pelo autor do código - já atualizei o anexo lá em cima no post#30). Abraços
  19. É sempre de bom hábito dar crédito a quem é de direito, não é mesmo?! Este código tem como origem o artigo Interação entre Delphi e servidor de e-mail (ref. ActiveDelphi) e também foi transcrito no site EPOPÉIA por Gislaine com os devidos créditos. ;) Eu não gostaria de ver alguma dica/artigo meu por aí, assinado por outra pessoa, esta é minha opnião - será que alguém gosta? Abraços p.s. opnião do usuário Micheus, não do moderador.
  20. Para este caso você talvez encontre resposta no exemplo que uso. O que ocorre é que você adiciona ao seu projeto (form ou datamodule principal) um TDataBase, configura o drive (standard para paradox), define um nome na propriedade DataBasename, certo?! Então, nos componentes em questão (table e query), você liga eles ao tal componente database como se ele fosse um dos seu alias do BDE (é só procurar que ele estará na lista). Deste modo, basta apenas que antes de ativar o componente DataBase, você inicialize a o caminho em Params. Tá lá no exemplo. Se tiver dúvida é só postar. Abraços
  21. Essa imagem é BMP?Voce colocou ela no exemplo que anexei? Faz o seguinte, este form que você tá usando como Splash (com a sua imagem), hospeda ele em algum site de compartilhamento para que a gente possa baixá-lo.
  22. Jonas, é isto aí. A melhor opção e ideal é a primeira - utilizando um alias, você faz todo o programa em função deste alias e antes de utilizá-lo inicializa o caminho do mesmo. Já se tiver que alterar o path em cada componente.... Tem algum tempo (dez/2006) eu havia feito um exemplo de uso para Alias Dinâmico. Se interessar, no link do 4Share (alí embaixo na minha assinatura), na pasta Programacao tem um carinha chamado BDEAlias-Dinamico.zip.
  23. Bom, demorei para responder, mas agora já foi. Como é uma abordagem um pouco diferente, espero que sirva a alguém. Abraços
  24. Vou tantar dar uma forcinha para ver se esse tópico encerra, ok?! Seguinte, como já disse antes, acho que a solução está no código existente no link que postei lá encima. Então, segue anexo um exemplo, já com executável para ser testado (tem só que renomear porque se deixar como exe, tem anti-virus que não abre) A estrutura é a seguinte: - 2 janelas de Splashs (uSplashPuma.pas e uSplashAsas.pas) que são mostradas simultaneamente; -> ambas possuem um TImage para "abrigar" a imagem em questão, no formato BMP; -> ambas possuem a propriedade BorderStyle = bsNone; -> ambas possuem um timer para em 10 segundos fechar a janela -> um evento OnClick no TImage para fechar a janela ao clicar na imagem antes dos 10 segundos; - 1 Form principal (uMainForm.pas) a ser mostrado ao final da apresentação das janelas Splash; -> este form não tem nada. - 1 unit (uRegionUtils.pas) onde coloquei o código listado no link; Alterações no Source do projeto: - o fonte do projeto foi alterado para mostrar as janelas sem incluí-las na lista de forms da aplicação; - a primeira janela (puma) é apresentada com Show, para que a segunda janela possa ser apresentada independentemente da primeira ser fechada. Já esta segunda, é apresentada com ShowModal, o que causará uma pausa antes que a janela principal possa ser mostrada pelo método padão. O resultado: Aparecerão duas janelas de Splash (lado a lado) como mencionei, sendo que a área transparente não faz parte da janela, ou seja, o formato da janela será o da imagem. Assim, clicar na área onde você enxerga o fundo, resulta em perder o foco. Não é uma questão de deixar o form transparente, mas sim de remover a área transparente do form - é como se ali o form que você usou em design-time (retangular) não existisse mais. É testar para entender melhor. Abraços TestaSplash.zip
  25. ôôô homem de pouca fé. As vezes só parece difícil. Não tem até a indicação de exemplo para download?! é isso aí!!! Eu não costumo utilizar este recurso, então não posso opinar. Mas com certeza eles fizeram o próprio viewer (não é o que o programa deles é?!). Dá uma olhada lá nos exemplos, vou passar mastigadinho: para o QuickReport 3 => QR3CSTD3.ZIP (tem que informar e-mail) para o QuickReport 2 => custprev.zip (download direto) Abraços
×
×
  • Criar Novo...