AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi mit pdf-Tool nur Teil einen Stringgrid drucken
Thema durchsuchen
Ansicht
Themen-Optionen

mit pdf-Tool nur Teil einen Stringgrid drucken

Ein Thema von tom_po · begonnen am 7. Mai 2006 · letzter Beitrag vom 10. Mai 2006
Antwort Antwort
Seite 2 von 2     12   
tom_po

Registriert seit: 5. Feb 2006
137 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: mit pdf-Tool nur Teil einen Stringgrid drucken

  Alt 8. Mai 2006, 13:07
super, jetzt klappt alles sehr gut, hast mir wirklich sehr geholfen.

ich habe jetzt noch im string eine 4. spalte eingefügt und wollte dort automatisch beim laden den Inhalt von meinem dbedit holen, geht das nicht?

habe es so versucht:

Delphi-Quellcode:
Stringgrid1.Cells[1,0]:='Peç./Lo.';
Stringgrid1.Cells[2,0]:='Tam.';
Stringgrid1.Cells[3,0]:='Cõr';
Stringgrid1.Cells[0,0]:='N°.Lote';
Stringgrid1.Cells[3,1]:=lote.farbe.Text;
Stringgrid1.Cells[0,1]:='1';
Stringgrid1.Cells[0,2]:='2';
es geht um die celle 3,1, es kompiliert zwar, kommt aber beim laden der form eine fehlermeldung....
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#12

Re: mit pdf-Tool nur Teil einen Stringgrid drucken

  Alt 8. Mai 2006, 13:15
Vielleicht wählst du den Zeitpunkt zum Initialisieren des Grid falsch. Auf Farbe.Text kannst du wohl erst zugreifen, wenn die zugehörige Tabelle auch geöffnet ist.

marabu
  Mit Zitat antworten Zitat
tom_po

Registriert seit: 5. Feb 2006
137 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: mit pdf-Tool nur Teil einen Stringgrid drucken

  Alt 8. Mai 2006, 15:19
ich denke nicht, denn ich führe das query zum aufruf der daten schon in der hauptform aus, beim auswählen des menupunktes, der die form lote aufruft...
das heisst, die daten werden schon angezeigt, wen die form lote offen ist, aber eben nur in der dbedit.

hast du eine Idee, marabu, an was es sonst noch liegen könnte, dass im grid der Inhalt von farbe.text nicht erscheint?
  Mit Zitat antworten Zitat
tom_po

Registriert seit: 5. Feb 2006
137 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: mit pdf-Tool nur Teil einen Stringgrid drucken

  Alt 10. Mai 2006, 08:42
Hallo Marabu, du hast mir ja so sehr geholfen beim Ausdruck mit den labels, der Code sieht jetzt so aus wie folgt.
wenn ich jetzt 3 labels nebeneinander auf der DIN A4-Seite möchte, was muss ich in der Funktion ändern (ausser den Positionen der einzelnen Angaben)

Delphi-Quellcode:
function LabelToPage(pt: Tpoint; index: Integer): TPoint;
const
  PageLeft = 20;
  PageTop = 30;
  LabelWidth = 600; //Original-Label-Masse
  LabelHeight = 120;
begin
  Result := Point(
              pt.X + PageLeft + (index mod 2) * LabelWidth,
              pt.Y + PageTop + (index div 2) * LabelHeight
            );
end;

procedure Tlote.Button1Click(Sender: TObject);
const
  ptArtikel: TPoint = (X: 0; Y: 0); // Werte für DIN A4
  ptFarbe: TPoint = (X: 150; Y: 0);
  ptColumn2: TPoint = (X: 400; Y: 0);
  ptOrder: TPoint = (X: 0; Y: 50);
  ptCode: TPoint = (X: 125; Y: 32);
  ptColumn0: TPoint = (X: 285; Y: 50);
  ptColumn1: TPoint = (X: 415; Y: 50);
 var
  iRow, iLabel: Integer;
begin
  deletetmppdf;
  with printpdf1 do
  begin
    FileName:=gettemppathd+'tmppdf'+Inttostr(random(5000))+'.pdf';
    PageWidth:=1224; // Origanl-DIN A4
    PageHeight:=1725; // Origanl-DIN A4
    BeginDoc;
    Font.Name:=poTimesBoldItalic;
    Font.Size:=24; //alt 24
  end;

  iLabel := 0;
  with StringGrid1, printpdf1 do
    for iRow := 0 to 15 do
      if Trim(Cells[1, iRow+1]) <> 'then
      begin
        with LabelToPage(ptArtikel, iLabel) do
          TextOut(X, Y, 'Artigo: ' + lote.Artikel.Text);
        with LabelToPage(ptFarbe, iLabel) do
          TextOut(X, Y, 'Côr: ' + Cells[3, FixedRows + iRow]);
          //TextOut(X, Y, 'Côr: ' + lote.Farbe.Text); //von DB
        with LabelToPage(ptColumn2, iLabel) do
          TextOut(X, Y, 'Tam.: ' + Cells[2, FixedRows + iRow]);
        with LabelToPage(ptOrder, iLabel) do
          TextOut(X, Y,'N.P.: '+lote.order.text);
        with LabelToPage(ptCode, iLabel) do
          pdfcodedrucken(X, Y, lote.Order.Text, False);
        with LabelToPage(ptColumn0, iLabel) do
          TextOut(X, Y, 'N°./Lo: ' + Cells[0, FixedRows + iRow]);
        with LabelToPage(ptColumn1, iLabel) do
          TextOut(X, Y, 'Peç/Lo: ' + Cells[1, FixedRows + iRow]);
        Inc(iLabel);
        end;

        with printpdf1 do
         begin
          EndDoc;
         end;

  ShellExecute(Application.Handle, 'open', PChar(printpdf1.FileName), nil, nil, SW_NORMAL);

end;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: mit pdf-Tool nur Teil einen Stringgrid drucken

  Alt 10. Mai 2006, 09:11
Hallo Tom,

die Zahl der Labels, die nebeneinander ausgegeben werden sollen, kannst du über eine Konstante steuern:

Delphi-Quellcode:
function LabelToPage(pt: Tpoint; index: Integer): TPoint;
const
  PageLeft = 20;
  PageTop = 30;
  LabelWidth = 600; // Original-Label-Maße
  LabelHeight = 120;
  LabelCols = 3;
begin
  Result := Point(
              pt.X + PageLeft + (index mod LabelCols) * LabelWidth,
              pt.Y + PageTop + (index div LabelCols) * LabelHeight
            );
end;
Aber bei einer Label-Breite von 600 und deiner eingestellten Seitenbreite von 1224 wird das wohl nicht passen.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
tom_po

Registriert seit: 5. Feb 2006
137 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: mit pdf-Tool nur Teil einen Stringgrid drucken

  Alt 10. Mai 2006, 10:04
bevor du geantwortet hast, habe ich selbst noch probiert und es so gemacht, dabei auch die Labelbreit geändert, passt jetzt wunderbar: (einfach mod und div in 3 geändert)

Delphi-Quellcode:
function LabelToPage(pt: Tpoint; index: Integer): TPoint;
const
  PageLeft = 20; //Orig 20
  PageTop = 30;
  LabelWidth = 400; //Original-Label-Masse 600 - 120
  LabelHeight = 120;
begin
  Result := Point(
              pt.X + PageLeft + (index mod 3) * LabelWidth, //orig mod 2
              pt.Y + PageTop + (index div 3) * LabelHeight //orig div 2
            );
end;
was meinst du?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#17

Re: mit pdf-Tool nur Teil einen Stringgrid drucken

  Alt 10. Mai 2006, 10:43
Nimm lieber die Konstante, so wie ich es dir gezeigt habe. Und denke daran, dass das Label-Layout angepasst werden muss, wenn du die Label-Abmessungen veränderst.

Delphi-Quellcode:
const
  ptArtikel: TPoint = (X: 0; Y: 0); // Werte für DIN A4
  ptFarbe: TPoint = (X: 150; Y: 0);
  ptColumn2: TPoint = (X: 400; Y: 0);
  ptOrder: TPoint = (X: 0; Y: 50);
  ptCode: TPoint = (X: 125; Y: 32);
  ptColumn0: TPoint = (X: 285; Y: 50);
  ptColumn1: TPoint = (X: 415; Y: 50);
Da sehe ich auf Anhieb X-Positionen, die sich nicht mit deiner Label-Breite von 400 Pixel vertragen. Überprüfe das mal.

marabu
  Mit Zitat antworten Zitat
tom_po

Registriert seit: 5. Feb 2006
137 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: mit pdf-Tool nur Teil einen Stringgrid drucken

  Alt 10. Mai 2006, 11:30
du hast Recht, zwischenzeitlich habe ich das korrigiert, es ist jetzt wirklich toll mit der Konstanten, warst mir so ein grosse hilfe, danke nochmals
werde jetzt DIN A4 label-Papier kaufen, muss vermutlich dann alles nochmals anpassen

der Code sieht jetzt so aus:

Delphi-Quellcode:
function LabelToPage(pt: Tpoint; index: Integer): TPoint;
const
  PageLeft = 20;
  PageTop = 20;
  LabelWidth = 400; // Original-Label-Maße
  LabelHeight = 130;
  LabelCols = 3;
begin
  Result := Point(
              pt.X + PageLeft + (index mod LabelCols) * LabelWidth,
              pt.Y + PageTop + (index div LabelCols) * LabelHeight
            );
end;

procedure Tlote.Button1Click(Sender: TObject);
const
  ptArtikel: TPoint = (X: 280; Y: 0);
  ptFarbe: TPoint = (X: 0; Y: 50);
  ptColumn2: TPoint = (X: 250; Y: 50);
  ptOrder: TPoint = (X: 165; Y: 0);
  //ptCode: TPoint = (X: 95; Y: 32);
  ptColumn0: TPoint = (X: 0; Y: 0);
  ptColumn1: TPoint = (X: 80; Y: 0);
usw.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz