Ir para conteúdo
Fórum Script Brasil

DiabloX3

Membros
  • Total de itens

    143
  • Registro em

  • Última visita

Sobre DiabloX3

DiabloX3's Achievements

0

Reputação

  1. Em nenhum momento nos listings dele ele tá usando TStream e como diminuir a qualidade de um arquivo em stream.. será que eu vi errado? O que mais se aproxima do que to qurendo é o listing 3 mas lá so fala de quality e compress.. Até +
  2. Agora o link está ok! Encontrei aí um tópico legal que você fala sobre compressão de imagem e já adaptei pro meu caso. Só que fiquei com uma dúvida. Analisando o código que postei acima: eu tenho um IF se a imagem for .jpg ou .jpeg e um else se for outra extensão. No meu caso eu tenho a variável TJPEGImage declarada mas eu apenas utilizo-a no ELSE, ou seja, se não for .JPG. Acontece que as duas linhas que adaptei no código só funcionam (aparentemente) com esse tipo de variável ImageJPG.CompressionQuality := 75; ImageJPG.Compress; Só que eu queria deixar essa compressão habilitada também no caso da JPG ser muito grande e assim diminuí-la. 75 achei uma qualidade boa e reduziu e muito o tamanho de umas imagens BMP que eu tinha aqui. Queria fazer o mesmo com o JPG mas eu utilizo TStream e TFileStream no prmeiro IF. Como posso definir qualidade então? Abraço
  3. Jhonas, obrigado por postar. Único problema é que os 3 links que me passou redirecionam para a home page do ScriptBrasil ehehe Abraço
  4. Olá, tenho pesquisado mas por se tratar de um tópico o qual estou juntando 2 combinações de programação que encontrei seja mais difícil uma resposta exata. O caso é que tenho um form com cadastro e nele posso adicionar a foto do cidadão. Quero gravar e depois visualizá-la de volta no form ou gerar o relatório com ela e imprimi-lá. A diferença é que quando clico no botão selecionar foto eu vou fazer uma verificação da extensão da minha img. Se ela for ".jpg" eu simplesmente quero gravá-la no BD. Caso seja qualquer outra extensão eu quero convertê-la antes de gravar. Estou usando Delphi 7, Firebird 2.5, Campos Blob sub_type 0, clientdataset e dbexpress Botão Selecionar foto ----------------- var ImageJPG: TJPEGImage; BlobStream: TStream; FileStream: TFileStream; begin if OpenPictureDialog1.Execute then if (ExtractFileExt(OpenPictureDialog1.FileName) = '.jpg') or (ExtractFileExt(OpenPictureDialog1.FileName) = '.jpeg') then begin FileStream := TFileStream.Create(OpenPictureDialog1.FileName, fmOpenRead or fmShareDenyWrite); BlobStream := dmCadastro.cdsCadAlu.CreateBlobStream(dmCadastro.cdsCadAluALU_FOTO,bmWrite); ImgFoto.Picture.LoadFromFile(OpenPictureDialog1.FileName); edtCaminhoImg.Text := OpenPictureDialog1.FileName; try BlobStream.CopyFrom(FileStream,FileStream.Size); finally FileStream.Free; BlobStream.Free; end; end else begin ImageJPG := TJPEGImage.Create; try if ConvertImage(OpenPictureDialog1.FileName, ImageJPG) then begin ImgFoto.Picture.Assign(ImageJPG); dmCadastro.cdsCadAluALU_FOTO.Assign(ImageJPG); edtCaminhoImg.Text := OpenPictureDialog1.FileName; end; finally ImageJPG.Free; end; end; Função usada pra converter imagem --------------- function TfrmCadAlu.ConvertImage(SrcName: string; DstPic: TGraphic): Boolean; var Picture: TPicture; ImageBMP: TBitmap; begin Result := False; Picture := TPicture.Create; try Picture.LoadFromFile(SrcName); ImageBMP := TBitmap.Create; try ImageBMP.Width := Picture.Width; ImageBMP.Height := Picture.Height; ImageBMP.Canvas.Draw(0, 0, Picture.Graphic); DstPic.Assign(ImageBMP); Result := True; finally ImageBMP.Free; end; finally Picture.Free; end; end; Não estou muito certo sobre o funcionamento dela e por isso não estou muito confiante, por isso a dúvida. Como devo fazer pra gravar sempre JPG no banco? Resolvi assim pra tentar não deixar o banco muito grande Abraço
  5. Ah legal! Obrigado pela dica Jhonas. Abrço
  6. Certo, no segundo caso posso fazer sem o try except mas e quanto ao qual ser mais garantido?
  7. Tenho uma dúvida sobre codificação na hora de gravar estou com o seguinte código try dmCadastro.cdsCadastro1.Post; dmCadastro.cdsCadastro1.ApplyUpdates(0); dmCadastro.cdsCadastro2.Post; dmCadastro.cdsCadastro2.ApplyUpdates(0); except on E:Exception do begin raise Exception.Create('Erro ao gravar:' + E.message); dmCadastro.cdsCadastro1.CancelUpdates; dmCadastro.cdsCadastro2.CancelUpdates; end; end; Uma outra forma de fazer (que eu vinha fazendo) é try dmCadastro.cdsCadastro1.Post; if dmCadastro.cdsCadastro1.ApplyUpdates(0) <> 0 then dmCadastro.cdsCadastro1.CancelUpdates dmCadastro.cdsCadastro2.Post; if dmCadastro.cdsCadastro2.ApplyUpdates(0) <> 0 then dmCadastro.cdsCadastro2.CancelUpdates o except seria igual só que sem o cancelupdates Dúvida: Qual dos dois métodos é mais garantido? Se levar em conta que o cursor vai chegar no IF <> 0 e pular diretamente pro except então não vai entrar na linha de CancelUpdates eu teria que por o Cancel no Except, porém fazendo um teste aqui eu vi que tendo os 2 Cancel no Except, um deles não é executado... o delphi pula um dos Cancel... Qual seria o correto?
  8. OK, de acordo! Obrigado Abraços
  9. Na verdade estava acontecendo outra coisa aqui... não tenho certeza mas acho que era porque estava usando uma versão Alpha do FB e ÀS VEZES quando dava Connect ele conectava de uma forma que entendia a instrução, ÀS VEZES conectada de uma forma que não entendia... muito estranho.. agora troquei a versão e parece estar funcionando normal.
  10. aheuah vai parecer mentira, mas agora funcionou!! Ontem eu tentei essa forma + de 10x e nada. Anyway, obrigado Jhonas! edit: Walah... instalei o IBExpert 2011 e configurei o server pra Firebird 2.5 e ... Invalid token. Dynamic SQL Error. SQL error code = -104. Token unknown - line 1, char 13. 1. o mesmo de antes quando postei o tópico.. como pode isso?
  11. Achei meio confusa sua explicação, Jhonas. Você acabou falando as coisas meio juntas e eu acabei por não saber qual eu deveria usar (fiquei na mesma) e o por que não estou conseguindo usar o win_ptbr com o FB 2.5 (não veio junto() e se tem alguma coisa a ver com a versão do interbase (ODS version - e talvez como atualizá-la). Esse primeiro exemplo que você deu eu tinha encontrado em um tópico seu anteriormente mas assim como cara falou não tem como prever tudo o que a pessoa vai digtar, tem que usar collate mesmo. Eu fiz um teste com o pxw_intl850 e consegui ordernar da maneira que eu quero e também consegui digitar "A" e me trouxe registros com "Á Ã" mas se isso deu certo e é isso que o win_ptbr faz, eu posso usar o pxw_intl850 sempre?
  12. Por que todos os sites, inclusive apostilas do FB falam que o banco suporta o comando First (1) ou First 1 (sem o parenteses) + nome do campo form tabela e aqui esse sql dá como First UNKNOWN ou o "1" como unknown? Eu mesmo me lembro de ter usado uma vez mas agora não ta funcionando mais, do nada ... como isso? Abraços
  13. Olá to com um probleminha aqui. tenho o ibexpert 2007 e firebird 2.5 instalados. fiz um form de consulta no delphi com edit e nele a pessoa pode digitar acentos de todos os tipos e no meu BD eu defini como charset win1252 e o collate automaticamente foi para win1252. acontece que ele está diferenciando palavras acentuadas das não acentuadas. pesquisei até agora mas não vi um tópico solucionando o meu problema. todo mundo fala pra definir o campo como collate win_ptbr. para isso eu tenho q ter essa opção disponível, o que não é meu caso... quando tento criar um campo "nome varchar(10) collate win_ptbr dá erro e fala que esse collate é desconhecido, e pra alterar sem ser via codigo, aparece 5 opções com PXW no começo e + essa Win1252. O que eu quero é saber porque isso esta acontecendo e porque SÓ EU não tenho como trocar e como resolver isso pra poder pesquisar josé = jose = JoSé Não sei se tem alguma coisa a ver com o problema mas andei vendo que para o fb2.5 o ib deveria mostrar ODS 11.2 no entando o meu esta mostrando 10.1 abraços
  14. Na imagem do Line/Fast Line do gráfico aparecem duas linhas, uma vermelha e uma azul e estou tentando implementar as duas no sistema mas o máximo que consigo é fazer aparecer uma só mudando de cor no decorrer do eixo X. Gostaria de 2 exatamente como no exemplo mas não consegui inseri-las desse modo. Alguém tem uma dica? O código que estou usando é este while not qry_mov_contas.Eof do begin valor := qry_mov_contas.FieldByName('TOTAL_MOV_C').AsFloat; data_grafico := qry_mov_contas.FieldBYName('MX_DATA_EMISSAO').AsString; if qry_mov_contas.FieldByName('TIPO').AsString = '0' then cor := clBlue else cor := clRed; BarraMov.AddY(valor, data_grafico, cor); LinhaMov.AddY(valor, data_grafico, cor); qry_mov_contas.Next; end; Agora um probleminha quanto as barras. Eu tenho uma sql que me retorna Créditos e Débitos de um período. No gráfico sai no eixo do X as datas que eu selecionei. Então no dia 01/01 por exemplo eu tenho uma barra azul com crédito e no mesmo dia uma barra vermelha com o débito e teria que ter até uma terceira com o saldo. Acontece que não consigo colocar o label "01/01" no meio dessas 3 barras sem se repetir. Do modo que fiz fica 01/01 pra cada barra. Tem como juntar tudo e centralizar a descrição do eixo X? abraço
×
×
  • Criar Novo...