Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Reportbuilder Image Komponente (https://www.delphipraxis.net/16390-reportbuilder-image-komponente.html)

Pseudemys Nelsoni 20. Feb 2004 06:59

Re: Reportbuilder Image Komponente
 
ausserdem sollen threads nicht innerhalb von 24std gepusht werden...

AgentAS 23. Feb 2004 11:44

Re: Reportbuilder Image Komponente
 
Hallo,

also die Bilder sind alle gleich. Hier erstmal der Code.

Delphi-Quellcode:

var
  frmFotoanlage: TfrmFotoanlage;
  Gi : integer;

implementation

{$R *.dfm}


procedure TfrmFotoanlage.FileListBoxClick(Sender: TObject);
begin
  Image.Picture.LoadFromFile(FileListBox.FileName);
end;

procedure TfrmFotoanlage.FileListBoxDblClick(Sender: TObject);
begin
  ListBox.AddItem(FileListBox.FileName,FileListBox);
end;

procedure TfrmFotoanlage.CBVorschauClick(Sender: TObject);
begin
  if CBVorschau.Checked then
  begin
    GroupBoxVorschau.Visible := True;
  end
  else
  begin
    GroupBoxVorschau.Visible := False;
  end;
end;

procedure TfrmFotoanlage.FormCreate(Sender: TObject);
begin

  frmFotoanlage.Caption := 'Fotoanlagen Ver. 1.0 --' + DateToStr(Date);

  EditText.Text := '';
  EditGANr.Text := '';

end;

procedure TfrmFotoanlage.FormShow(Sender: TObject);
begin
   EditGANr.SetFocus;
end;

procedure TfrmFotoanlage.btnDruckenClick(Sender: TObject);
begin

  if CBDruckvorschau.Checked then
  begin
    Fotoanlage.Print;
  end
  else
  begin
    Fotoanlage.DeviceType := dtScreen;
    Fotoanlage.Print;
  end;

end;

procedure TfrmFotoanlage.FotoanlagePreviewFormCreate(Sender: TObject);
begin
  Fotoanlage.PreviewForm.WindowState := wsMaximized;
end;

procedure TfrmFotoanlage.FotoanlageBeforePrint(Sender: TObject);
var i : integer;
    hPfad, hschluessel : string;
begin

  if CBMitKopf.Checked then
  begin
    ppRegionKopf.Visible := True;
  end
  else
  begin
    ppRegionKopf.Visible := False;
  end;

  if EditGANr.Text <> '' then
  begin
    ppLblGANr.Caption := 'Fotoanlage zur GutachtenNr. ' + EditGANr.Text;
  end
  else
  begin
    ppLblGANr.Caption := '';
  end;

  for Gi := 0 to ListBox.Items.Count - 1 do
  begin
    hPfad := Trim(ListBox.Items.Strings[Gi]);
    hSchluessel := QuotedStr('1');

    ADOFotoInsert.Close;
    ADOFotoInsert.SQL.Clear;

    ADOFotoInsert.SQL.Add('INSERT INTO tblFOTO(schluessel, pfad)');
    ADOFotoInsert.SQL.Add('            VALUES('+ hschluessel + ', ' + QuotedStr(hPfad) + ')');

    ADOFotoInsert.ExecSQL;
  end;

  PfadSELECT;

  while not ADOFotoSELECT.Eof do
  begin
    ppImageDetail.Picture.LoadFromFile(Trim(ADOFotoSELECT.FieldByName('pfad').AsString));
    ADOFotoSELECT.Next;
  end;

end;

procedure TfrmFotoanlage.mnuLoeschenClick(Sender: TObject);
begin
  ListBox.Items.Delete(ListBox.ItemIndex);
end;

procedure TfrmFotoanlage.PfadSELECT;
begin
  ADOFotoSELECT.Close;
  ADOFotoSELECT.SQL.Clear;

  ADOFotoSELECT.SQL.Add('SELECT * FROM tblFOTO');

  ADOFotoSELECT.Open;
end;

procedure TfrmFotoanlage.FotoDELETE;
begin
  ADOFotoDELETE.Close;
  ADOFotoDELETE.SQL.Clear;

  ADOFotoDELETE.SQL.Add('DELETE FROM tblFOTO');

  ADOFotoDELETE.ExecSQL;
end;

procedure TfrmFotoanlage.FotoanlagePreviewFormClose(Sender: TObject);
begin
  // Löscht Datenbank nach Druck
  FotoDELETE;
end;

procedure TfrmFotoanlage.pplblBildNrPrint(Sender: TObject);
begin
  pplblBildNr.Caption := 'Bild-Nr. ' + IntToStr(Gi);
end;


Gruss AS

Mario 23. Feb 2004 13:08

Re: Reportbuilder Image Komponente
 
So wird dass natürlich nix :?

Du erzeugst im OnBeforePrint die Datenmenge neu und lädst jeden Datensatz in das aktuelle Bild. Am Ende dieser Routine ist wieder nur das letzte Bild im Image?

Du musst nur einmal die Datenmenge erzeugen (vorm Report) und dann immer nur das aktuelle Bild laden...

AgentAS 23. Feb 2004 14:01

Re: Reportbuilder Image Komponente
 
Hallo,

musst entschuldigen weiss aber nicht genau was Du meinst. Ich brauche doch eine Schleife um alle Datensätze aus der Datenbank zu bekommen.
Hättest Du vielleicht ein Beispiel, kann mir leider nichts genaueres unter Deiner Aussage vorstellen.

Gruß AS

Mario 23. Feb 2004 14:10

Re: Reportbuilder Image Komponente
 
Nein, Du brauchst keine Schleife.

Du hast eine Datenbank mit einer beliebigen Anzahl von Datensätzen. Diese verbindest Du mit Deinem Report bzw. Deinem SubReport. Der Report wird bei der Preview bzw. beim Druck den Detail-Bereich automatisch solange wiederholen, wie Du Datensätze hast. Wenn Du DBText-Elemente rein plazierst, werden dann ja auch automatisch die Daten angezeigt. Du kannst ja mal statt dem Bild erst mal nur ein DBText auf den Detail-Bereich setzen und mit dem Feld von Deiner DB verbinden. Siehst Du dann alle in der Datenbank enthaltenen Sätze in der Preview?

AgentAS 23. Feb 2004 15:25

Re: Reportbuilder Image Komponente
 
Hallo,

wenn ich ein ppdbText Komponente in den Detailbereich setze dann sehe ich jeweils 5 verschiedene Datensätze.

Gruß AS

Mario 23. Feb 2004 15:30

Re: Reportbuilder Image Komponente
 
Und sind diese 5 Datensätze auch in der Datenbank?

AgentAS 23. Feb 2004 15:44

Re: Reportbuilder Image Komponente
 
ja sind sie. Aber ich verstehe immer noch nicht ganz wie Du mit dem Pfad die Komponente füllen kannst. Wenn ich nämlich der ppdbImage Komponente das Feld zuweise bringt Sie mir gar nichts.

Mario 23. Feb 2004 15:52

Re: Reportbuilder Image Komponente
 
Ja aber genau hier kommt Deine Routine im OnBeforePrint ins Spiel. Mache doch mal folgendes:

Plaziere ein normales Text-Element rein und schreibe ins OnBeforePrint einfach:
Delphi-Quellcode:
MyText.Caption := TableFeld.Value;
Dann solltest Du den gleichen Effekt wie beim DBTExt haben, oder?

AgentAS 23. Feb 2004 15:59

Re: Reportbuilder Image Komponente
 
jupp geht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz