Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Einfaches Drucken einer ini-Datei ohne Rave & Co. (https://www.delphipraxis.net/24175-einfaches-drucken-einer-ini-datei-ohne-rave-co.html)

BimboBaggins 16. Jun 2004 18:34


Einfaches Drucken einer ini-Datei ohne Rave & Co.
 
Sers
(2) Ganz kurze Frage(n): Gibts da irgendein Befehl der direkt eine ini-Datei druckt?
Da ich schon ein nein erwarte, weil ich schon ein Topic gesehen hab, in dem einer eine txt-Datei drucken will, meine nächste Frage (wenn die noch notwendig ist):
Kann ich irgendwie Zeilen aus einer Ini-Datei lesen und sie in eine unsichtbare Listbox schreiben, die ich dann druck? Also ohne ini.readstring('bla', 'bla', 'bla'), sondern so was wie listbox1.add [...] ini.readlines (1 to 40). So was in der Art eben und das man dann irgendwie nur schreiben braucht print listbox1 und der dann alles druckt? Oder stell ich mir das zu leicht vor?

Ultimator 16. Jun 2004 18:36

Re: Einfaches Drucken einer ini-Datei ohne Rave & Co.
 
Hmmm, wenn ich das richtig verstehe, könntest du den Inhalt der Ini-File in ein Richedit laden und das dann drucken, etwa so:
Delphi-Quellcode:
Richedit1.Lines.Loadfromfile('DieIniFile.ini');
Richedit1.Lines.Print('Name');
Glaub ich.

BimboBaggins 17. Jun 2004 00:48

Re: Einfaches Drucken einer ini-Datei ohne Rave & Co.
 
Das wär natürlich ideal, wenn das derart einfach ginge! Muss ich gleich als erstes mal ausprobieren, wenn ich morgen an den Rechner komm. Danke auf jeden Fall schonmal :)
(Wenns klappt, kommt nochn dickes merci ;))

Steve 17. Jun 2004 08:07

Re: Einfaches Drucken einer ini-Datei ohne Rave & Co.
 
Delphi-Quellcode:
PROCEDURE TForm1.Button1Click(Sender: TObject);
VAR
  SL           : TStringList;
  intRandLinks,
  intRandOben,
  i            : Integer;
BEGIN
  // Initialisieren
  intRandLinks := 100;
  intRandOben := 100;
  // Datei in StringListe laden
  SL := TStringList.Create;
  SL.LoadFromFile('C:\IniFile.ini');
  // Drucken-Dialog
  IF PrintDialog1.Execute THEN
  BEGIN
    WITH Printer DO
    BEGIN
      // Druck beginnen
      Title := 'C:\IniFile.ini';
      BeginDoc;
      FOR i:=0 TO SL.Count-1 DO
        // Text drucken
        Canvas.TextOut(intRandLinks,
                       intRandOben + (i*Canvas.TextHeight(SL.Strings[i])),
                       SL.Strings[i]);
      // Druck abschließen
      EndDoc;
    END;
  END;
  // Aufräumen
  SL.Free;
END;
So oder so ähnlich würds "selber gemacht" aussehen :)
Dann kannste eigentlich alles anpassen wie Du möchtest..

Gruß
Stephan

ims 17. Jun 2004 08:47

Re: Einfaches Drucken einer ini-Datei ohne Rave & Co.
 
damit steve's code funktioniert noch die Unit QPrinters in die uses aufnehmen.
ansonsten ist dieser code genial, vielen dank @steve! sowas einfaches hätte ich auch schonmal gebraucht...

gruss, dave

Steve 17. Jun 2004 10:42

Re: Einfaches Drucken einer ini-Datei ohne Rave & Co.
 
Zitat:

Zitat von ims
damit steve's code funktioniert noch die Unit QPrinters in die uses aufnehmen.

Für "normale" VCL-Programmierung tut's auch "Printers" ;)

Zitat:

ansonsten ist dieser code genial, vielen dank @steve! sowas einfaches hätte ich auch schonmal gebraucht...
Nun übertreib mal nicht :zwinker: ...aber gern geschehn :)

Gruß
Stephan

BimboBaggins 17. Jun 2004 22:13

Re: Einfaches Drucken einer ini-Datei ohne Rave & Co.
 
Mit dem idiotensicheren, bereits vorgekauten code von Steve klappts nu endlich. Danke für die viele Mühe! :)
Leider hab ich feststellen müssen, was ich im Grunde schon wusste, aber an was ich irgendwie nicht gedacht hab: Strings haben keine Schriftgröße und keine Farbe, aber das sind ja nur noch optische Details. Hauptsache die Funktionen funzen jetzt alle.
Aber wenn ich eh schon da bin, kann ich ja mal fragen (Ich hoff für die kleine Frage müsst ich kein neues Thema aufmachen): Gibts irgendeinen Datentyp ähnlich String, der Farbe und Größe mitspeichert und das dann auch so (beim Drucken) ausgibt?

Luckie 17. Jun 2004 22:15

Re: Einfaches Drucken einer ini-Datei ohne Rave & Co.
 
Noch einfacher eventuell mit MSDN-Library durchsuchenShellexcute und dem Verb 'print'.

Steve 17. Jun 2004 22:55

Re: Einfaches Drucken einer ini-Datei ohne Rave & Co.
 
Diese ganzen Eigenschaften gibst Du bei Printer.Canvas.Font an :)

Bsp:
Delphi-Quellcode:
WITH Printer.Canvas.Font DO
BEGIN
  Name := 'MS Sans Serif';
  Size := 14;
  Color :=clRed;
END;
Wenn das alles nicht gesetzt werden soll, ist Luckie's Lösung sicherlich noch einfacher :zwinker:

Gruß
Stephan

edit: Am besten das Ganze in ne Proc./Func. auslagern, mit FileName und Font als Parameter (dann Font mit Printer.Canvas.FontAssign(UebergebeneFont); zuweisen) und dann haste's ziemlich allgemein und wiederverwendbar

BimboBaggins 18. Jun 2004 00:39

Re: Einfaches Drucken einer ini-Datei ohne Rave & Co.
 
hm, ich glaub da geb ich mich mit der Schriftgröße zufrieden. Wollt noch was einbauen, dass alle gespeicherten Werte unter der Gruppe [Bestand], die unter 40 sind rot erscheinen sollen, aber da müsst ich ja irgendwie jede Zeile aus der stringliste raussuchen und da dann die Zahlenwerte rausschneiden und in integer umwandeln... habs grad mal angerissen, hab dann aber bei der dritten repeatschleife aufgehört. Muss ich mir morgen mal überlegen, ob ich vielleicht gleich in die Buttonprocedures (bei denen in die inifiles gespeichert werden) irgendwas zum speichern schreib, das dann später Infos über die Farbe gibt... naja, geht alles, aber bei 30 buttons, ist das so viel Schreibarbeit, dass ich mir nochmal genau überleg, ob sich das lohnt oder, obs nicht weniger Arbeit is auf der Liste dann zu gucken, von was noch weniger als 40 Stück da sind ;)

Danke an Alle nochmal (besonders Steve)!
Hätt allein nicht weitergewusst mit meinen 5 Datentypen und meinen löchrigen Informatik-Kenntnissen. Hab schon versucht mal in irgendwelchen Anleitungen was zu finden, aber das ist nicht so einfach, wenn man nicht mal weiß nach was man eigentlich sucht bzw wie das heißt, was man sucht (printdialog, Datentyp stringlist, canvas.....)


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