Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   generar e imprimir catalogo (https://www.clubdelphi.com/foros/showthread.php?t=25939)

fartycl 08-10-2005 04:34:08

generar e imprimir catalogo
 
Hola aqui pidiendo ayuda de nuevo.

me gustaria ver si alguien me puede dar un empujon necesito realizar un informe con imagenes los datos del informe los tengo en una base de datos pero las imagenes en una carpeta y si es que se puede hacer con quickreport
me gustaria si me pueden dar un ejemplo.

lo que quiero hacer es un catalogo ya que tengo un administrador de productos donde ingreso los datos y en un campo coloco la ubicacion de la imagen ("c:\img\silla.jpg") y necesito generar listados donde me aparesca la imagen y la descripcion del producto y imprimirla.

si es que me pueden ayudar gracias

luisgutierrezb 08-10-2005 16:19:03

Pues si mal no recuerdo, en la propiedad OnPrint de la imagen, puedes asignarla al momento de imprimir, la otra, que seme ocurre es que hagas un campo calculado, y en el evento OnCalcFields asignes la imagen, y en tu reporte usas un componente para imagen de bases de datos...

fartycl 11-10-2005 02:54:26

Es que soy medi lento me gustaria ver si me pudieran mostrar un ejemplo para asi poser entender mejor :confused:

lento manu 11-10-2005 17:57:35

opción DB to HTML de Marco Cantu
 
Te pego código aquí para q valores esta opción. Lo difícil es paginar el Explorer, pero basando en cm el patrón, se consiguen resultados excelentes. Asimismo, puedes usar el componente TPageProcucer, o sus primos DB, como si fuera un servidor web, pero pasas el htm directamente al explorer. Los resultados son los mismos.
Con el ejemplo de Cantu he podido generar listados de sitios web enteros, así como impresión matricial.
Todos los méritos de Marco Cantu (unidad HTMLstr.pas):
Código:

unit HtmlStr;
interface
uses
  Classes, DB;
type
  THtmlStrings = class (TStringList)
  public
        procedure AddHeader (Title: string);
        procedure AddFooter;
        procedure OutputTable (Data: TDataSet);
  private
        procedure AddTableContents (Data: TDataSet);
  end;
implementation
uses
  SysUtils;
procedure THtmlStrings.AddHeader (Title: string);
begin
  Clear;
  Add ('<HTML>');
  Add ('<HEAD>');
  Add ('<TITLE>' + Title + '</TITLE>');
  Add ('</HEAD>');
  Add ('<BODY>');
  Add ('<H1><CENTER>' + Title + '</CENTER></H1>');
end;
procedure THtmlStrings.AddFooter;
begin
  Add ('<HR>');
  Add ('Generado por el programa ' +
        ExtractFileName (ParamStr(0)));
  Add ('</BODY>');
  Add ('</HTML>');
end;
procedure THtmlStrings.OutputTable (Data: TDataSet);
var
  I: Integer;
begin
  // iniciamos la tabla con bordes
  Add('<table border>');
  // nueva fila, con las cabeceras de tabla (etiqueta <th>)
  Add('<tr>');
  for I := 0 to Data.FieldCount - 1 do
        if Data.Fields[i].Visible then
          Add('<th>' + Data.Fields[i].FieldName + '</th>');
  Add('</tr>');
  // nueva fila para cada registro, con los campos apropiados
  AddTableContents (Data);
  // hecho
  Add('</table>');
end;
procedure THtmlStrings.AddTableContents (Data: TDataSet);
var
  Bookmark: TBookmark;
  I: Integer;
begin
  // inhabilitamos el UI
  Data.DisableControls;
  try
        // almacenamos la posición actual
        Bookmark := Data.GetBookmark;
        try
          // exploramos la tabla de base de datos
          Data.First;
          while not Data.EOF do
          begin
                Add('<tr>'); // nueva fila, con los datos de la tabla (etiqueta <td>)
                for I := 0 to Data.FieldCount - 1 do
                  if Data.Fields[i].Visible then
                        Add('<td>' + Data.Fields[i].DisplayText + '</td>');
                Add('</tr>');
                Data.Next;
          end;
        finally
          // volvemos a la anotación y la destruimos
          Data.GotoBookmark (Bookmark);
          Data.FreeBookmark (Bookmark);
        end;
  finally
        // rehabilitamos los controles
        Data.EnableControls;
  end;
end;
end.

He tenido que quitar las etiquetas Delphi, ya q se veía destrozado el texto. Ahora el método para llamar a esta unidad y generar la salida pre_impresa:
Código Delphi [-]
procedure TMainForm.SpeedButton2Click(Sender: TObject);
var
  Str: THtmlStrings;
begin
  SaveDialog1.FileName := ChangeFileExt (
    Table1.TableName, '.htm');
  if SaveDialog1.Execute then
  begin
    Str := THtmlStrings.Create;
    try
      Str.AddHeader (Caption);
      Str.OutputTable (Table1);
      Str.AddFooter;
      Str.SaveToFile (SaveDialog1.Filename);
      if CheckBox1.Checked then
        ShellExecute (Handle, 'open',
          PChar (SaveDialog1.FileName),
          '', '', sw_ShowNormal);
    finally
      Str.Free;
    end;
  end;
end;
Enseguida entenderas como funciona y es un método perfectamente extensible. He generado Facturación y más listados a PRN matricial, y va estupendo. Además no tienes ningún problema con las imágenes gif o JPG.
Tambien estan los comonentes para listados de HTMLreport. La versión de prueba no tiene limitación de uso, solo firma el documento de salida. Hace lo mismo de otra manera. Su sitio es http://www.htmlreport.com pero parece colgada.
Espero q te sirva.


La franja horaria es GMT +2. Ahora son las 19:11:19.

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