Delphi Can
Seçili satırı ayrı, ayrı çıktı alma - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Mobil Platform - FireMonkey (FMX) (https://www.delphican.com/forumdisplay.php?fid=7)
+--- Konu Başlığı: Seçili satırı ayrı, ayrı çıktı alma (/showthread.php?tid=4329)



Seçili satırı ayrı, ayrı çıktı alma - BGNew - 19-12-2019

Merhaba;

Listviewde seçili olan satırları databaseden verileri alıp word'e yazdırıyorum.
Fakat birden fazla seçili satırı seçtiğimde, her seçilen satırın ayrı, ayır word'e nasıl yazılmasını sağlarım?


procedure TForm1.BtnPLPrintersClick(Sender: TObject);
var
  MyRect: TRectF;
  I, J: Integer;
  FDQ: TFDQuery;
  Must, Title, Led: String;
begin
  if ListView.Selected = Nil then // Seçili değilse çık
    Exit;
  FDQ := TFDQuery.Create(Nil);
  try
    Printer.BeginDoc();
    try
      for I := Pred(ListView.ItemCount) downto 0 do
      begin
        if ListView.Items[I].Data['Select'].AsInteger = 2 then
        begin
          FDQ.Connection := FDConnection;
          FDQ.Active := False;
          FDQ.Close;
          FDQ.SQL.Clear;
          FDQ.SQL.Add('Select * From Liste Where Id=:Id');
          FDQ.ParamByName('ID').AsInteger := ListView.Items[I].Data['Id'].AsInteger;
          FDQ.Prepared := True;
          FDQ.Open;
          Must := FDQ.FieldByName('Must').AsString + #13;
          Title := FDQ.FieldByName('Title').AsString + #13;
          News := FDQ.FieldByName('Led').AsString;

          ListView.Items[I].Data['Select'] := NumberConvert(1); // Seçimi iptal et

          MyRect := TRectF.Create(20, 20, Printer.PageWidth, Printer.PageHeight);
          Printer.Canvas.Font.Family := 'Calibri';
          Printer.Canvas.Stroke.color := TAlphaColorRec.Black;
          Printer.Canvas.Font.Style := [];
          Printer.Canvas.Font.Size := 75;
          Printer.Canvas.FillText(MyRect, Must + Title +Led, False, 1, [], TTextAlign.Leading, TTextAlign.Leading);
        end;
      end;
    finally
      Printer.EndDoc;
    end;
  except
    if Printer.Printing then
      Printer.Abort();
  end;
end;