Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-03-2023
tiqui_loquito tiqui_loquito is offline
Miembro
 
Registrado: oct 2013
Posts: 56
Poder: 11
tiqui_loquito Va por buen camino
Buenos días Casimiro

Lo que deseo hacer es lo siguiente:

Desde una aplicación propia llamo para que se ejecute SimpleGraph.exe, en ese aplicativo el usuario puede realizar su gráfica la cual se guarda con una extensión .sgp

Una vez el usuario cierra SimpleGraph.exe puede continuar llenado alguna otra información en el otro aplicativo. Cuando vaya a guardar todo, la idea es que se tome ese archivo creado por SimpleGraph.exe
y lo guarde en un campo de la BD.

Si cancela la consulta, se elimina el archivo se que creo.


Si luego ingresa a la consulta, entonces se descarga el archivo de la BD, para que dese SimpleGraph.exe se pueda acceder y modificar si esta aun en edición, sino para que solo se pueda ver.


Es posible hacer esto?


He intentado que desde SimpleGraph se gaurde como Jpeg o Jpg, pero al tratar de abrirlo por otra aplicación me sale error, pero desde SimpleGraph si lo abre.

No se si me estoy complicando o pido mucho

gracias
Responder Con Cita
  #2  
Antiguo 20-03-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.046
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Lee los mensajes #2 y #4 de este mismo hilo, ahí tienes cómo guardar y recuperar
Responder Con Cita
  #3  
Antiguo 20-03-2023
tiqui_loquito tiqui_loquito is offline
Miembro
 
Registrado: oct 2013
Posts: 56
Poder: 11
tiqui_loquito Va por buen camino
La idea sería entonces:

Grabar todos los objetos en el .ini, luego, si desde el otro aplicativo lo guardo, tomo ese .ini y lo guardo en un campo de mi BD. Si doy cancelar borro el .ini y no grabo nada en BD

Luego, si quiero ver la imagen descargo el .ini, lo recorro y lo visualizo en SimpleGraph

Ya probé el guardado en el .ini y funciono, debo agregar las otras propiedades y lectura de otros objetos.


Ahora me surge otra pregunta

Si quiero imprimir la imagen creada en SimpleGraph desde otro aplicativo puedo hacer lo siguiente:

Guardar el .ini en un campo y en otro campo guardo el impr pant(aun no se que función de delphi me hace esto). Ahora, al momento de imprimir desde un reporteador desde mi aplicación me coloque
el campo impr pant en una de las secciones de mi historia clinica.

O que me suguieres?


Gracias
Responder Con Cita
  #4  
Antiguo 21-03-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.046
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo recordar que SimpleGraph tiene un método "Print", echa un vistazo.
Responder Con Cita
  #5  
Antiguo 21-03-2023
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.288
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por tiqui_loquito Ver Mensaje
...
Si luego ingresa a la consulta, entonces se descarga el archivo de la BD, para que dese SimpleGraph.exe se pueda acceder y modificar si esta aun en edición, sino para que solo se pueda ver.
Es posible hacer esto?

He intentado que desde SimpleGraph se gaurde como Jpeg o Jpg, pero al tratar de abrirlo por otra aplicación me sale error, pero desde SimpleGraph si lo abre.
...
Yo creo que la idea en sí es buena, pero la ejecución es incorrecta.
Puedes guardar el gráfico en un fichero SGP y recuperarlo en tu programa.
Puedes guardarlo en Base de Datos. Para ello utiliza campos BLOB, binarios o si te da problemas, siempre puedes convertirlo a base64 y guardarlo en un campo de texto.

Lo que no me queda claro es que intentes guardarlo como JPEG/JPG. Un gráfico de simplegraph está compuesto por múltiples obetos que almacenan sus propiedades, junto con las propiedades del propio gráfco. Puedes expotarlo como JPEG/JPG, pero si lo haces así y lo guardas así, cuando lo recuperes simplemente tendrás una imagen. No podrás modificar nada más de ese gráfico (habrás perdido toda la información).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 21-03-2023
tiqui_loquito tiqui_loquito is offline
Miembro
 
Registrado: oct 2013
Posts: 56
Poder: 11
tiqui_loquito Va por buen camino
Gracias por la orientación Neftali y Casimiro

Por si alguien puede interesarle, realice lo siguiente:

Es un código para probar lo que necesito

Código Delphi [-]
procedure Form1.btn1Click(Sender: TObject);
var
  hInst: Cardinal;
  Paramt,path: string;

  BlobField: TBlobField;
begin
  Paramt := 'HC';
  path := ExtractFilePath(Application.ExeName) + 'Ecograma.exe';

  // Verifica si el archivo existe en la ubicación especificada
  if not FileExists(path) then
  begin
    ShowMessage('El archivo "Ecograma.exe" no se encuentra en la ubicación especificada.');
    Exit;
  end;

  //Aquí envío un parametro para poder ejecutar Ecograma.exe desde mí aplciativo
  //y no cuando le den clic directamenbet a Ecograma.exe
  hInst :=ShellExecute(0, 'open', PChar(path), PChar(Paramt), nil, SW_SHOWNORMAL);


  //Por si no se pudo abrir Ecograma.exe se informa al usuario
  if hInst <= 32 then
  begin
    case hInst of
      ERROR_FILE_NOT_FOUND:
        ShowMessage('El archivo no se encontró.');
      ERROR_PATH_NOT_FOUND:
        ShowMessage('La ruta especificada no se encontró.');
      ERROR_BAD_FORMAT:
        ShowMessage('El formato del archivo no es válido.');
      else
        ShowMessage('Se produjo un error al ejecutar el archivo.');
    end;
  end;

  //Se creo el campo ECOGRAMA en la BD
 IBQuery1.Close;
 IBQuery1.ParamByName('ECOGRAMA').DataType := ftGraphic;
 IBQuery1.ParamByName('ECOGRAMA').LoadFromFile('D:\mychart.sgp', ftBlob);
 IBQuery1.Open;

 IBQuery1.Transaction.CommitRetaining;

 IBQuery2.Close;
 IBQuery2.Open;

 BlobField := TBlobField(IBQuery2.FieldByName('ECOGRAMA'));
 SaveBlobToFile(BlobField, 'C:\mychart.sgp');

end;


//Procedimeinto para guardar el archivo que se descarga de BD
procedure form1.SaveBlobToFile(Blob: TBlobField;
  const FileName: string);
var
  Stream: TFileStream;
begin
  Stream := TFileStream.Create(FileName, fmCreate);
  try
    Blob.SaveToStream(Stream);
  finally
    Stream.Free;
  end;
end;


Con ese trozo de código hago lo siguiente:

Llamo a Ecograma.exe desde mi aplicativo y no permito que se ejecute si le doy doble click a Ecograma.exe, ya que este va a estar en la misma carpeta de mi aplicativo, además si quieren llevarlo
a otro pc y abrirlo no lo podrán hacer.

Código Delphi [-]
  Paramt := 'HC';  //en simplegra

  hInst :=ShellExecute(0, 'open', PChar(path), PChar(Paramt), nil, SW_SHOWNORMAL);

Una vez se abra Ecograma.exe, se guarde el diagrama (aquí debo modificar para que guarde el diagrama con ciertas condiciones), se guarda el fichero en BD(debo modificarlo para que lo guarde cuando le de guardar desde mi aplicativo, ingresando a la ubicación donde se guarda el diagrama ).

Código Delphi [-]
 IBQuery1.Close;
 IBQuery1.ParamByName('ECOGRAMA').DataType := ftGraphic;
 IBQuery1.ParamByName('ECOGRAMA').LoadFromFile('D:\mychart.sgp', ftBlob);
 IBQuery1.Open;

 IBQuery1.Transaction.CommitRetaining;


Finalmente se consulta el campo donde se guardo el fichero y se descarga en C: (aquí también debo hacer varios ajustes).

Código Delphi [-]
 IBQuery2.Close;
 IBQuery2.Open;

 BlobField := TBlobField(IBQuery2.FieldByName('ECOGRAMA'));
 SaveBlobToFile(BlobField, 'C:\mychart.sgp');



//Procedimeinto para guardar el archivo que se descarga de BD
procedure form1.SaveBlobToFile(Blob: TBlobField;
  const FileName: string);
var
  Stream: TFileStream;
begin
  Stream := TFileStream.Create(FileName, fmCreate);
  try
    Blob.SaveToStream(Stream);
  finally
    Stream.Free;
  end;
end;

Probé abrir el fichero descargado y me abre normal y lo puedo editar.


Aun hay trabajo por hacer, pero por ahora va todo viento en popa

Gracias por su colaboración
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Guardar y recuperar imagen en bd Lizette Varios 17 26-11-2009 15:49:59
SQL Server - Grabar / Recuperar Imagen _Willa MS SQL Server 1 17-12-2008 13:37:30
Grabar imagen spia Tablas planas 4 12-03-2008 20:47:53
Recuperar IMAGEN de un QUERY natalinuyo Gráficos 31 12-02-2007 23:22:22
Cargar y recuperar imagen en bd MySQL??? burasu MySQL 2 22-08-2004 22:40:18


La franja horaria es GMT +2. Ahora son las 15:58:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi