AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tlistview drucken

Ein Thema von TheReaper · begonnen am 27. Feb 2003 · letzter Beitrag vom 28. Feb 2003
Antwort Antwort
Seite 1 von 2  1 2      
TheReaper

Registriert seit: 27. Feb 2003
Ort: chemnitz
90 Beiträge
 
Delphi 2005 Personal
 
#1

Tlistview drucken

  Alt 27. Feb 2003, 21:58
Wie kann man eine Tlistview mit subitems drucken und formatieren?
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#2
  Alt 27. Feb 2003, 22:14
Hallo und willkommen im Forum!

Schau Dir mal folgende sachen in der OH an:
AssignFile, WriteLn, CloseFile, AssignPrn.
Du musst einfach eine Schleife bauen, bezogen auf die Anzahl der Items in der LV.
Delphi-Quellcode:
for i := 0 to ListView1.Items.Count -1 do
begin
  //Hier dann den Code zum schreiben.
end;
Vor der Schleife öffnest Du die Datei zum Drucken.
Also zwischen dem begin und end brauchst Du einfach diese WriteLn.
Hier mal ein Beispiel aus einem Programm von mir.
Delphi-Quellcode:
procedure TMainFormMC2004.DruckenErweitertClick(Sender: TObject);
//Daten Drucken; Im erweiterten Format
var
  tf: TextFile; //tf = Variable zum Datei Schreiben
  pt: TextFile; //pt = Variable zum Datei Drucken
  p: string; //Stringvariable für die Druckdatei
  s, t, r, i, n, g: string; //String für LOKS
  a, b, c: string; //Strings für FUNKTIONEN
  iLok, iFkt{, iWei, iWeiSch, iWeiTri, iMtr, iMtrLok}: integer;
begin
  if PrintDialog.Execute then
  begin
    AssignFile(tf, ExtractFilePath(ParamStr(0)) + 'DatenErweitert.mce');
    ReWrite(tf); //Datei zum Schreiben Öffnen
    WriteLn(tf, '--------------------- LOKS ---------------------');
    WriteLn(tf, '------------------------------------------------');
    WriteLn(tf, ' ID: Name: Adr: Träg: Beschl: Verzög: ');
    WriteLn(tf, '------------------------------------------------');
    for iLok := 0 to ListViewKKLok.Items.Count -1 do
    begin
      s := ListViewKKLok.Items.Item[iLok].Caption;
      t := ListViewKKLok.Items.Item[iLok].SubItems[0];
      r := ListViewKKLok.Items.Item[iLok].SubItems[1];
      i := ListViewKKLok.Items.Item[iLok].SubItems[2];
      n := ListViewKKLok.Items.Item[iLok].SubItems[3];
      g := ListViewKKLok.Items.Item[iLok].SubItems[4];
      while Length(s) < 5 do //Falls die ID weniger als 5 Stellen hat
      begin
        s := s + ' '; //Mit Leerstellen füllen
      end;
      while Length(t) < 10 do //Falls der Name weniger als 10 Stellen hat
      begin
        t := t + ' '; //Mit Leerstellen füllen
      end;
      while Length(r) < 3 do //Falls die Adresse weniger als 3 Stellen hat
      begin
        r := r + ' '; //Mit Leerstellen füllen
      end;
      WriteLn(tf, ' ' + s + ' ' + t + ' ' + r + ' ' + i + ' ' + n + ' ' + g);
    end;
    Writeln(tf); //2 Leerzeilen zur Trennung
    Writeln(tf); //zwischen Loks und Funktionen
    WriteLn(tf, '------------------ FUNKTIONEN ------------------');
    WriteLn(tf, '------------------------------------------------');
    WriteLn(tf, ' ID: Name: Adr: ');
    WriteLn(tf, '------------------------------------------------');
    for iFkt := 0 to ListViewKKFkt.Items.Count -1 do
    begin
      a := ListViewKKFkt.Items.Item[iFkt].Caption;
      b := ListViewKKFkt.Items.Item[iFkt].SubItems[0];
      c := ListViewKKFkt.Items.Item[iFkt].SubItems[1];
      while Length(a) < 5 do //Falls die ID weniger als 5 Stellen hat
      begin
        a := a + ' '; //Mit Leerstellen füllen
      end;
      while Length(b) < 10 do //Falls der Name weniger als 10 Stellen hat
      begin
        b := b + ' '; //Mit Leerstellen füllen
      end;
      while Length(c) < 3 do //Falls die Adresse weniger als 3 Stellen hat
      begin
        c := c + ' '; //Mit Leerstellen füllen
      end;
      WriteLn(tf, ' ' + a + ' ' + b + ' ' + c);
    end;
    Writeln(tf);
    Writeln(tf);
    Reset(tf); //Datei zum Lesen Öffnen
    AssignPrn(pt); //Drucker "Öffnen"
    Printer.Canvas.Font.Name := 'Courier New'; //Schriftart setzen
    Printer.Canvas.Font.Size := 10; //Schriftgrösse setzen
    ReWrite(pt); //Druckdatei zum Schreiben Öffnen
    while not EOF(tf) do //Falls Dateiende noch nicht erreicht
    begin
      ReadLn(tf, p); //Lies Zeile aus der Datei
      WriteLn(pt, p); //Schreib Zeile zum Drucker
    end;
  CloseFile(pt); //Schliesse Druckdatei
  CloseFile(tf); //Schliesse Datei
  end;
  Check;
end;
So hat man alle Items und SubItems formatiert auf dem Blatt. Du musst halt die ganzen Namen der ListViews anpassen.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#3
  Alt 27. Feb 2003, 23:31
Hallo Daniel B,
sehr gut, genau das war ich gerade am suchen.
Das sollte hier mal in die Code library gestellt werden! *@adminguck*
Gruß
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#4
  Alt 27. Feb 2003, 23:39
fehlpost! remove plz
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
TheReaper

Registriert seit: 27. Feb 2003
Ort: chemnitz
90 Beiträge
 
Delphi 2005 Personal
 
#5
  Alt 27. Feb 2003, 23:52
THX an Daniel B. hat mir wirklich weiter geholfen.
Kann man beim formatieren auch farben von z.B. Linien ändern (ich meine nicht text) und wie kann man Linien machen? Keine ------ !
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#6
  Alt 28. Feb 2003, 00:05
Zitat von TheReaper:
Kann man beim formatieren auch farben von z.B. Linien ändern (ich meine nicht text) und wie kann man Linien machen? Keine ------ !
Mit Farben habe ich noch nicht rumgespielt. Aber Linien kann man einfach mit ___ Underline machen, anstatt mit --- Minus. Sieht auch aus dem Papier als Linie aus.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#7
  Alt 28. Feb 2003, 00:07
Hallo Jan,
Zitat von Jan:
Das sollte hier mal in die Code library gestellt werden! *@adminguck*
Jeder kann und darf was in die Library schreiben. Hat nichts mit dem Admin zutun. Dafür gibt es ja eine Sparte. Aber ich werde mal dazu ein Beispiel dafür schreiben. Man muss ja jetzt nicht genau das nehmen. Ist ja nur ein Beispiel. Da sind ja auch mehrere LVs dabei.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#8
  Alt 28. Feb 2003, 00:13
Zitat von TheReaper:
Kann man beim formatieren auch farben von z.B. Linien ändern
Grunsätzlich ja.
Delphi-Quellcode:
Printer.Canvas.Font.Name := 'Courier New'; //Schriftart setzen
Printer.Canvas.Font.Size := 10; //Schriftgrösse setzen
Printer.Canvas.Font.Color := clBlue; //Schriftfarbe setzen
Nur muss man dies halt immer bei jeder Zeilen die man Bunt und in Farbe haben möchte tun und anschliessend wieder auf Schwarz, damit der Text auch nicht Bunt erscheint.

Grüsse, Daniel
  Mit Zitat antworten Zitat
TheReaper

Registriert seit: 27. Feb 2003
Ort: chemnitz
90 Beiträge
 
Delphi 2005 Personal
 
#9
  Alt 28. Feb 2003, 00:40
Irgendwie funzt das nicht.
hab ein paar farben genommen und immer wieder auf clblack umgestellt. nur die letzte zeile will ich grün drucken. jetzt ist der ganze text grün.
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#10
  Alt 28. Feb 2003, 07:54
Zitat von TheReaper:
Irgendwie funzt das nicht.
hab ein paar farben genommen und immer wieder auf clblack umgestellt. nur die letzte zeile will ich grün drucken. jetzt ist der ganze text grün.
Hmm, merkwürdig. Ich muss es mir mal heute Abend anschauen, muss jetzt aber zur Arbeit.
Etwas hätte ich allerdings noch.
Die Zeile mit Font.Color, wo hast Du die geschrieben?
Doch nciht etwa hinter Font.Size usw.?
War jetzt blöd von mir die genau dahinter zu schreiben. Die muss dort natürlich weg.
Da wo es jetzt steht, bleibt es auf schwarz.
Und vor den Zeilen die Du Bunt haben willst, musst Du nochmal diese ZEile schreiben, mit der anderen Farbe und direkt danach wieder zurück auf schwarz. Also im prinzip musst Du es vor Deiner letzten Zeile mal auf grün setzen und danach lassen oder vorsichtshalber wieder auf schwarz.

Grüsse, Daniel //<-- Der jetzt weg muss.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:32 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