Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

andrepapel

Salvar em Jpeg no Firebird

Recommended Posts

Bom dia Pessoal, Gostaria de uma ajuda, olha so eu tenho aqui meu banco de dados em firebird e estou tentando salvar uma figura em jpg, so que ele so reconhece bmp, o componente q eu uso é o DBImage, e ele so reconhece Bmp, tem como eu colocar p ele tb salvar em Jpg???ObrigadoAndré

Compartilhar este post


Link para o post
Compartilhar em outros sites

me ajudem por favor,exsite algum componente q eu use p salvar imagem jpeg no delphi esto uusando o dbimage mas so salva em bmp, pof favor me ajudemandré luiz

Compartilhar este post


Link para o post
Compartilhar em outros sites

o negocio é q eu sou iniciante ai é q o bicho pega, se tivesse um componente igual ao dbimage q carrega bmp direto seria uma boa, mas agradeço sua ajudaandré

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas já tentou alguma coisa no desenvolvimento ? Em que ponto esta ?

Marcio olha so eu por um lado consegui e por nao consegui, veja bem eu instalei aqui um componente chamado DBLoadImage e ele salva normal em jpg sem nem uma linha de codigo, ate ai tudo bem mas quando eu fechei minha aplicação deu essa mensagem "Projct SisMob.exe raised exception class EAaccessViolation with message ‘Access violation at address 005e4655 in module ’ read of address 0000001C’ process stopped"Tem como você me ajudar com essa msn de erro???Obrigado André

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... Complica, mas deve de ser alguma coisa aberta na memória que esta tentando fechar, veja se não criou alguma coisa e acaba deixando em aberto, nos procedimentos de saída do formulário se ele não gera nada para emitir o erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... Complica, mas deve de ser alguma coisa aberta na memória que esta tentando fechar, veja se não criou alguma coisa e acaba deixando em aberto, nos procedimentos de saída do formulário se ele não gera nada para emitir o erro.

Bom quando eu coloquei o componente novo ele gerou esse codigo, entao eu pergunto ao senhor, o erro so acontece quando eu abro a tela de cadastro de funcionario, nesse codigo eu preciso fechar algum item quando o form for fechado?? e outra eu fiz um teste aqui e coloquei o seguinte, que quando o form fosse fechado eu tb fechasse a query e nao deu erro, so q ao pedir p fechar o mesmo, ele fica no canto da tela minimizado, e nao fecha vai entender, eu te agradeço a atençãoprocedure TDBLoadImage.CreateParams(var Params: TCreateParams);begin inherited CreateParams(Params); if FBorderStyle = bsSingle then if (NewStyleControls) and (Ctl3D) then Params.ExStyle := Params.ExStyle or WS_EX_CLIENTEDGE else Params.Style := Params.Style or WS_BORDER; Params.WindowClass.style := Params.WindowClass.style and not(CS_HREDRAW or CS_VREDRAW);end;procedure TDBLoadImage.DataChange(Sender: TObject);var Buf: Word; Path: String;begin if Assigned(FDataLink.Field) and (FDataLink.Field.IsBlob) then if FDataLink.Field.IsNull then begin PictureLoaded := False; FImage.Picture.Assign(nil); end else begin PictureLoaded := True; Path := ExtractFilePath(ParamStr(0)); MemSt.Clear; TBlobField(FDataLink.Field).SaveToStream(MemSt); MemSt.Position := 0; MemSt.Read(Buf,SizeOf(Buf)); case Buf of $0000: Path := Path + 'Foto.ico'; $4D42: Path := Path + 'Foto.bmp'; $4947: Path := Path + 'Foto.gif'; $CDD7: Path := Path + 'Foto.wmf'; $D8FF: Path := Path + 'Foto.jpg'; end; MemSt.SaveToFile(Path); FImage.Picture.LoadFromFile(Path); end;end;destructor TDBLoadImage.Destroy;begin FDataLink := nil; Jpg := nil; MemSt := nil; inherited;end;procedure TDBLoadImage.DoEnter;begin inherited; Color := EnterColor;end;procedure TDBLoadImage.DoExit;begin inherited; Color := ExitColor;end;function TDBLoadImage.GetDataField: String;begin Result := FDataLink.FieldName;end;function TDBLoadImage.GetDataSource: TDataSource;begin Result := FDataLink.DataSource;end;function TDBLoadImage.GetField: TField;begin Result := FDataLink.Field;end;function TDBLoadImage.GetPalette: HPALETTE;begin Result := 0; if Assigned(FImage.Picture.Graphic) then Result := FImage.Picture.Graphic.Palette;end;function TDBLoadImage.GetReadOnly: Boolean;begin Result := FDataLink.ReadOnly;end;procedure TDBLoadImage.Notification(AComponent: TComponent; Operation: TOperation);begin inherited Notification(AComponent, Operation); if ((Operation = opRemove) and (FDataLink <> nil)) and (AComponent = DataSource) then DataSource := nil;end;procedure TDBLoadImage.ClickMenuFDisk(Sender: TObject);begin if (FOPDialog.Execute) and (FOPDialog.FileName <> '') then begin PictureLoaded := True; FImage.Picture.LoadFromFile(FOPDialog.FileName); end else PictureLoaded := False;end;procedure TDBLoadImage.ClickMenuSSource(Sender: TObject);var SourceIndex: Integer; Source: TTwainSource;begin FDTwain.LibraryLoaded := True; FDTwain.SourceManagerLoaded := True; SourceIndex := FDTwain.SelectSource(); if (SourceIndex <> -1) then begin Source := FDTwain.Source[sourceIndex]; Source.Loaded := True; Source.Enabled := True; end;end;procedure TDBLoadImage.ImageClick(Sender: TObject);var Point: TPoint;begin if not Focused then SetFocus; if Assigned(FDataLink.Field) and (FDataLink.DataSet.State in [dsInsert, dsEdit]) then begin GetCursorPos(Point); FPopUp.Popup(Point.X, Point.Y); end;end;procedure TDBLoadImage.OnSourceAcquire(Sender: TObject; const Index: Integer; Image: TBitmap; var Cancel: Boolean);begin PictureLoaded := True; FImage.Picture.Assign(Image); Cancel := True;end;procedure TDBLoadImage.Paint;var Size: TSize; R: TRect; S: String; Form: TCustomForm;begin Inherited; Canvas.Brush.Style := bsSolid; Canvas.Brush.Color := Color; Canvas.FillRect(ClientRect); if (PictureLoaded) or (csPaintCopy in ControlState) then begin SetRect(R, 0, 0, Width, Height); Canvas.StretchDraw(R, FImage.Picture.Graphic); end else begin Canvas.Font := Self.Font; if Assigned(FDataLink.Field) then if FDataLink.DataSource.State in [dsInsert,dsEdit] then S := 'Clique aqui para carregar a imagem' else S := FDataLink.Field.DisplayLabel else S := Name; S := '(' + S + ')'; Size := Canvas.TextExtent(S); R := ClientRect; Canvas.TextRect(R, (R.Right - Size.cx) div 2, (R.Bottom - Size.cy) div 2, S); end; Form := GetParentForm(Self); if ((Form <> nil) and (Form.ActiveControl = Self)) and (not (csDesigning in ComponentState) and not (csPaintCopy in ControlState)) then begin Canvas.Brush.Color := clWindowFrame; Canvas.FrameRect(ClientRect); end;end;procedure TDBLoadImage.PictureChange(Sender: TObject);begin if FDataLink.DataSet.State in [dsInsert, dsEdit] then if (PictureLoaded) and (ConvertImage) then FDataLink.Modified; Invalidate;end;procedure TDBLoadImage.SetBorderStyle(Value: TBorderStyle);begin if FBorderStyle <> Value then begin FBorderStyle := Value; RecreateWnd; end;end;procedure TDBLoadImage.SetDataField(const Value: String);begin FDataLink.FieldName := Value;end;procedure TDBLoadImage.SetDataSource(Value: TDataSource);begin if not (FDataLink.DataSourceFixed and (csLoading in ComponentState)) then FDataLink.DataSource := Value; if Value <> nil then Value.FreeNotification(Self);end;procedure TDBLoadImage.SetReadOnly(Value: Boolean);begin FDataLink.ReadOnly := Value;end;procedure TDBLoadImage.UpdateData(Sender: TObject);begin try MemSt.Clear; Jpg.SaveToStream(MemSt); MemSt.Position := 0; TBlobField(FDataLink.Field).LoadFromStream(MemSt); except FDataLink.Field.Clear; end;end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio

olha so eu consegui resolver aquela bronca, bom em primeiro lugar o componente DBLoadImage, faz referencia claro a query, so q tem um probelma, quando eu fechava o form de cadastro, dava o erro de que ainda o componente fazia referencia a query e ainda matinha a query em execução, em conseguencia disso, vinha o erro e acabbava com tudo, entao o q foi q eu fiz eu pensei q de algum modo eu deveria fechar a query junto com form, e foi o q eu fiz coloquei a seguinte codificação

 

procedure TCadFuncionario.FormCloseQuery(Sender: TObject;

var CanClose: Boolean);

begin

sqlCadFunc.Close;

end;

 

e com isso eu fecho e uso o meu form sem dar erro nem um.

espero q essa tenha sido a solução correta, e tb como eu recebi ajuda no forum estou retornando dizendo como foi resolvido, quem sabe nao pode ser a duvida de outros

 

 

Valew

andré

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos eu também estou com esse mesmo problema no dbLoadImage, porém ainda não consegui resolver. Comigo acontece o seguinte: Tenho um formulário de pesquisa com o dbgrid onde está linkado a uma ibquery, nesse formulário de pesquisa também existem os botões de visualizar, incluir, editar, excluir. Quando eu faço uma pesquisa e clico por exemplo no botão editar o sitema irá abrir um formulário de inclusão, edição e visualização. O problema é que não posso fechar a ibquery quando fecho esse formulário e edição porque senão eu iria perder os dados que foram pesquisados na ibquery. Mas acontece que ao abrir esse formulário de edição e ao fechá-lo ocorre o erro mencionado nesse tópico. Como poderei resolver meu problema, alguém poderia me ajudar?Grato,Vandeir

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas fez o esquema de destruir a qry quando sair ?

Amigo, não deu certo, será que você não podia me passar o código completo, ou então eu não poderia mandar minhas fontes para você olhar?Grato,Vandeir

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.