Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi mit pdf-Tool nur Teil einen Stringgrid drucken (https://www.delphipraxis.net/68869-mit-pdf-tool-nur-teil-einen-stringgrid-drucken.html)

tom_po 7. Mai 2006 02:38


mit pdf-Tool nur Teil einen Stringgrid drucken
 
Ich benutze ein externes pdf-Tool zum Ausdrucken von Labels.
Dabei kommt ein Teil der Infos aus einem Stringgrid, der andere Teil von Datenbank-Tabellen.

Ich möchte nun nur die Labels ausdrucken, wo ich im Stringgrid in der 1. Spalte (nicht die fixe Spalte 0) etwas eingetragen habe.
Der Stringgrid hat eine feste Zeile und eine feste Spalte.

Hat jemand eine Idee?

Hier ist der Code:
Delphi-Quellcode:
Delphi-Quellcode:
procedure Tlote.Button1Click(Sender: TObject);
begin
deletetmppdf;
printpdf1.FileName:=gettemppathd+'tmppdf'+Inttostr(random(5000))+'.pdf';
printpdf1.PageWidth:=1224;
printpdf1.PageHeight:=1725;
printpdf1.BeginDoc;
printpdf1.Font.Name:=poTimesBoldItalic;
printpdf1.Font.Size:=24;
//1.Etiquett
printpdf1.TextOut(20,40,'Artigo: '+Artikel.text);
printpdf1.TextOut(170,40,'Côr: '+farbe.text);
printpdf1.TextOut(420,40,'Tam.: '+stringgrid1.cells[2, 1]);
printpdf1.TextOut(20,90,'N.P.: '+order.text);
pdfcodedrucken( 135,72,order.Text,false);
printpdf1.TextOut(280,90,'N°./Lo: '+stringgrid1.cells[0, 1]);
printpdf1.TextOut(420,90,'Peç/Lo: '+stringgrid1.cells[1, 1]);
//2.Etiquett
printpdf1.TextOut(620,40,'Artigo: '+Artikel.text);
printpdf1.TextOut(800,40,'Côr: '+farbe.text);
printpdf1.TextOut(1080,40,'Tam.: '+stringgrid1.cells[2, 2]);
printpdf1.TextOut(620,90,'N.P.: '+order.text);
pdfcodedrucken( 740,72,order.Text,false);
printpdf1.TextOut(900,90,'N°./Lo: '+stringgrid1.cells[0, 2]);
printpdf1.TextOut(1080,90,'Peç/Lo: '+stringgrid1.cells[1, 2]);
printpdf1.LineWidth:=2;
printpdf1.DrawLine(0,120,1224,120);
//3.Etiquett
printpdf1.TextOut(20,160,'Artigo: '+Artikel.text);
printpdf1.TextOut(170,160,'Côr: '+farbe.text);
printpdf1.TextOut(420,160,'Tam.: '+stringgrid1.cells[2, 3]);
printpdf1.TextOut(20,215,'N.P.: '+order.text);
pdfcodedrucken( 135,195,order.Text,false);
printpdf1.TextOut(280,215,'N°./Lo: '+stringgrid1.cells[0, 3]);
printpdf1.TextOut(420,215,'Peç/Lo: '+stringgrid1.cells[1, 3]);
//4.Etiquett
printpdf1.TextOut(620,160,'Artigo: '+Artikel.text);
printpdf1.TextOut(800,160,'Côr: '+farbe.text);
printpdf1.TextOut(1080,160,'Tam.: '+stringgrid1.cells[2, 4]);
printpdf1.TextOut(620,215,'N.P.: '+order.text);
pdfcodedrucken( 740,195,order.Text,false);
printpdf1.TextOut(900,215,'N°./Lo: '+stringgrid1.cells[0, 4]);
printpdf1.TextOut(1080,215,'Peç/Lo: '+stringgrid1.cells[1, 4]);
printpdf1.LineWidth:=2;
printpdf1.DrawLine(0,240,1224,240);
//5.Etiquett
printpdf1.TextOut(20,280,'Artigo: '+Artikel.text);
printpdf1.TextOut(170,280,'Côr: '+farbe.text);
printpdf1.TextOut(420,280,'Tam.: '+stringgrid1.cells[2, 5]);
printpdf1.TextOut(20,325,'N.P.: '+order.text);
pdfcodedrucken( 135,305,order.Text,false);
printpdf1.TextOut(280,325,'N°./Lo: '+stringgrid1.cells[0, 5]);
printpdf1.TextOut(420,325,'Peç/Lo: '+stringgrid1.cells[1, 5]);
//6.Etiquett
printpdf1.TextOut(620,280,'Artigo: '+Artikel.text);
printpdf1.TextOut(800,280,'Côr: '+farbe.text);
printpdf1.TextOut(1080,280,'Tam.: '+stringgrid1.cells[2, 6]);
printpdf1.TextOut(620,325,'N.P.: '+order.text);
pdfcodedrucken( 740,305,order.Text,false);
printpdf1.TextOut(900,325,'N°./Lo: '+stringgrid1.cells[0, 6]);
printpdf1.TextOut(1080,325,'Peç/Lo: '+stringgrid1.cells[1, 6]);
printpdf1.LineWidth:=2;
printpdf1.DrawLine(0,355,1224,355);
//7.Etiquett
printpdf1.TextOut(20,450,'Artigo: '+Artikel.text);
printpdf1.TextOut(170,450,'Côr: '+farbe.text);
printpdf1.TextOut(420,450,'Tam.: '+stringgrid1.cells[2, 7]);
printpdf1.TextOut(20,500,'N.P.: '+order.text);
pdfcodedrucken( 135,480,order.Text,false);
printpdf1.TextOut(280,500,'N°./Lo: '+stringgrid1.cells[0, 7]);
printpdf1.TextOut(420,500,'Peç/Lo: '+stringgrid1.cells[1, 7]);
//8.Etiquett
printpdf1.TextOut(620,450,'Artigo: '+Artikel.text);
printpdf1.TextOut(800,450,'Côr: '+farbe.text);
printpdf1.TextOut(1080,450,'Tam.: '+stringgrid1.cells[2, 8]);
printpdf1.TextOut(620,500,'N.P.: '+order.text);
pdfcodedrucken( 740,480,order.Text,false);
printpdf1.TextOut(900,500,'N°./Lo: '+stringgrid1.cells[0, 8]);
printpdf1.TextOut(1080,500,'Peç/Lo: '+stringgrid1.cells[1, 8]);
printpdf1.LineWidth:=2;
printpdf1.DrawLine(0,530,1224,530);


printpdf1.EndDoc;
ShellExecute(Application.Handle,
                 'open',
                 PChar(printpdf1.FileName),
                 Nil, Nil, SW_NORMAL);
end;

marabu 7. Mai 2006 08:17

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
Hallo,

wenn du deinen Code besser organisierst, dann entkommst du vielleicht dem maintenance blues:

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

procedure TDemoForm.Button1Click(Sender: TObject);
const
  ptArtikel: TPoint = (X: 0; Y: 0);
  ptFarbe: TPoint = (X: 150; Y: 0);
  ptColumn2: TPoint = (X: 400; Y: 0);
  ptOrder: TPoint = (X: 0; Y: 50);
  ptCode: TPoint = (X: 115; Y: 32);
  ptColumn0: TPoint = (X: 260; Y: 50);
  ptColumn1: TPoint = (X: 400; Y: 50);
var
  iRow, iLabel: Integer;
  pdf: TCanvas;
  Artikel, Farbe, Order: TEdit;
begin
  deletetmppdf;
  with printpdf1 do
  begin
    FileName:=gettemppathd+'tmppdf'+Inttostr(random(5000))+'.pdf';
    PageWidth:=1224;
    PageHeight:=1725;
    BeginDoc;
    Font.Name:=poTimesBoldItalic;
    Font.Size:=24;
  end;

  iLabel := 0;
  with StringGrid1, printpdf1 do
    for iRow := 0 to 7 do
      if Trim(Cells[FixedCols, iRow]) <> '' then
      begin
        with LabelToPage(ptArtikel, iLabel) do
          TextOut(X, Y, 'Artigo: ' + Artikel.Text);
        with LabelToPage(ptFarbe, iLabel) do
          TextOut(X, Y, 'Côr: ' + Farbe.Text);
        with LabelToPage(ptColumn2, iLabel) do
          TextOut(X, Y, 'Tam.: ' + Cells[2, FixedRows + iRow]);
        with LabelToPage(ptArtikel, iLabel) do
          TextOut(20,90,'N.P.: '+order.text);
        with LabelToPage(ptArtikel, iLabel) do
          {pdfcodedrucken(X, Y, 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
    LineWidth := 2;
    DrawLine(0, 530, 1224, 530);
    EndDoc;
  end;

  ShellExecute(Application.Handle, 'open', PChar(printpdf1.FileName), nil, nil, SW_NORMAL);
end;
Getippt und nicht getestet.

Freundliche Grüße vom marabu

tom_po 8. Mai 2006 09:53

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo marabu!

zunächst einmal ein ganz grosses Dankeschön für deine überaus grosse Mühe, die du für mich gemacht hast.
bin ganz baff.
Ich bin aber noch ein ziemlicher Laie in Delphi, will mich aber immer weiterbilden. Dein Code sieht natürlich professionell aus, muss mich aber erst darin zurechtfinden.
Habe mal kompiliert und Folgendes festgestellt:
Die Wert artikel.text, farbe.text, order.text (als Zahl) und order.text (als Barcode) erscheinen jetzt nicht mehr auf dem pdf-Ausdruck. Diese Werte habe ich ja in meiner Form in DBEdits, die aus einer Datenbanktabelle kommen. Siehe Screen-Print arbeitskarte-neu.jpg
Wie es in meinem alten Code vorher aussah, sende ich im nächsten Posting im Bild arbeitskart-alt.jpg
Auch würde ich gerne jeweils nach 2 Labeln eine Linie haben.

Nochmals danke für deine grossartige Hilfe

tom_po 8. Mai 2006 09:54

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
Liste der Anhänge anzeigen (Anzahl: 1)
hier ein bild wie es mit dem alten Code aussah

tom_po 8. Mai 2006 10:10

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
marabu, ich habe inzwischen keine fixe Spalte mehr und den Code leicht abgeändert, jetzt druckt es nur die Labels aus, wo in Spalte 1 eine Zahl steht, so wie ich es will:
Delphi-Quellcode:
with StringGrid1, printpdf1 do
    for iRow := 0 to 7 do
      if Trim(Cells[1, iRow+1]) <> '' then
     //if Trim(Cells[FixedCols, iRow]) <> '' then
      begin
        with LabelToPage(ptArtikel, iLabel) do
          TextOut(X, Y, 'Artigo: ' + Artikel.Text);
Allerdings erscheinen eben artikel, farbe und order nicht, beim Kompilieren kommt die Meldung, dass sich nicht initialisiert wurden:
[Warnung] loteunit.pas(488): Variable 'Order' ist möglicherweise nicht initialisiert worden

fkerber 8. Mai 2006 10:12

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
Hi!

Wie sieht denn der Bereich um Zeile 488 aus?


Ciao Frederic

marabu 8. Mai 2006 10:26

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
Wie ungeschickt von mir - ich habe bei einem Syntax-Test TEdit-Komponenten als lokale Variablen vereinbart, die natürlich wieder entfernt werden müssen. Und auch die lokale Variable pdf kann entfernt werden.

marabu

tom_po 8. Mai 2006 10:29

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
Liste der Anhänge anzeigen (Anzahl: 1)
bin jetzt selbst einen Schritt weiter gekommen, habe vor artikel, farbe usw. lote gesetzt, jetzt kommen die Daten, bis auf lote.order.text kommt nur beim ersten label dann nicht mehr, siehe Bild arbeitskarten-neu1.jpg
musste auch die Position des Barcodes anpassen, habe ich das richtig gemacht?

der Code sieht jetzt so aus:

Delphi-Quellcode:
const
  ptArtikel: TPoint = (X: 0; Y: 0);
  ptFarbe: TPoint = (X: 150; Y: 0);
  ptColumn2: TPoint = (X: 400; Y: 0);
  ptOrder: TPoint = (X: 0; Y: 50);
  ptCode: TPoint = (X: 250; Y: 50);
  ptColumn0: TPoint = (X: 260; Y: 50);
  ptColumn1: TPoint = (X: 400; Y: 50);
var
  iRow, iLabel: Integer;
  pdf: TCanvas;
  Artikel, Farbe, Order: TEdit;
begin
  deletetmppdf;
  with printpdf1 do
  begin
    FileName:=gettemppathd+'tmppdf'+Inttostr(random(5000))+'.pdf';
    PageWidth:=1224;
    PageHeight:=1725;
    BeginDoc;
    Font.Name:=poTimesBoldItalic;
    Font.Size:=24;
  end;

  iLabel := 0;
  with StringGrid1, printpdf1 do
    for iRow := 0 to 7 do
      if Trim(Cells[1, iRow+1]) <> '' then
     //if Trim(Cells[FixedCols, iRow]) <> '' then
      begin
        with LabelToPage(ptArtikel, iLabel) do
          TextOut(X, Y, 'Artigo: ' + lote.Artikel.Text);
        with LabelToPage(ptFarbe, iLabel) do
          TextOut(X, Y, 'Côr: ' + lote.Farbe.Text);
        with LabelToPage(ptColumn2, iLabel) do
          TextOut(X, Y, 'Tam.: ' + Cells[2, FixedRows + iRow]);
        with LabelToPage(ptArtikel, iLabel) do
          TextOut(20,90,'N.P.: '+lote.order.text);
        with LabelToPage(ptArtikel, iLabel) do
          pdfcodedrucken(X+120, Y+30, 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
    LineWidth := 2;
    DrawLine(0, 530, 1224, 530);
    EndDoc;
  end;

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

end;

tom_po 8. Mai 2006 10:32

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
ok, habe die variablen entfernt, sieht jetzt noch so aus:
Delphi-Quellcode:
var
  iRow, iLabel: Integer;
allerdings habe ich nach wie vor das Problem, dass die Order (order.text) nur beim ersten Label erscheint...??

marabu 8. Mai 2006 10:47

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
Sorry - da sind noch zwei Fehler in meinem Code-Beispiel, die ich durch Copy und Paste erzeugt habe:

Delphi-Quellcode:
with LabelToPage(ptOrder, iLabel) do
  TextOut(X, Y, 'N.P.: '+order.text);
with LabelToPage(ptCode, iLabel) do
  pdfcodedrucken(X, Y, Order.Text, False)};
marabu

tom_po 8. Mai 2006 12:07

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
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....

marabu 8. Mai 2006 12:15

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
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

tom_po 8. Mai 2006 14:19

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
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?

tom_po 10. Mai 2006 07:42

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
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;

marabu 10. Mai 2006 08:11

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
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

tom_po 10. Mai 2006 09:04

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
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?

marabu 10. Mai 2006 09:43

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
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

tom_po 10. Mai 2006 10:30

Re: mit pdf-Tool nur Teil einen Stringgrid drucken
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:12 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