Ergebnis 1 bis 20 von 32

Thema: Programmvorbereitung - Hilfe benötigt!

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von PX Beitrag anzeigen
    Sorry, ich habe echt noch zu wenig Ahnung. Wo und wie soll ich "Printer" als Unit einbinden?
    da wo "uses" ganz oben in deinem Quelltext steht. Einfach noch Printers mit einem Komma anhängen (vor ; natürlich).

  2. #2
    Den Sinn hab ich jetzt verstanden, allerdings sucht Delphi dabei nach Printer.dcu, was er nicht findet und als Fehler ausgibt.

  3. #3
    Zitat Zitat von PX Beitrag anzeigen
    Den Sinn hab ich jetzt verstanden, allerdings sucht Delphi dabei nach Printer.dcu, was er nicht findet und als Fehler ausgibt.
    Binde eben "Printers" ein, habs ja oben schon genannt, nur dann im letzten Post falsch geschrieben.

  4. #4
    Schon besser, jetzt liegt der Fehler aber im geposteten Code bei Printer (unknown directive).

  5. #5

  6. #6
    Danke! Später kommen vielleicht nochmal Fragen auf, im Moment klappt es aber. Wo finde ich eigentlich PrinterDialog und FontDialog in Delphi?

    Edit: Wie kann ich jetzt den Text einer weiteren Memo zum Druckvorgang hinzufügen? Benötigt man eine neue Variable?

    Geändert von Expresseon (02.11.2007 um 10:35 Uhr)

  7. #7
    Zitat Zitat von PX Beitrag anzeigen
    Danke! Später kommen vielleicht nochmal Fragen auf, im Moment klappt es aber. Wo finde ich eigentlich PrinterDialog und FontDialog in Delphi?

    Edit: Wie kann ich jetzt den Text einer weiteren Memo zum Druckvorgang hinzufügen? Benötigt man eine neue Variable?
    genauso wie beim ersten, du musst halt nur den vertikalen Offset (500) erhöhen, damit sie sich nicht überschneiden. Die Dailoge findest du im gleichnamigen Register (bzw. Dialogs in der englischen Version).

  8. #8
    Code:
    begin
          Printer.Canvas.TextOut(500, 1000 + I *
                  (Printer.Canvas.TextHeight('I') + 5), memText1.Lines[I], memText2-Lines[I]);
    end;
    So? Wofür wird denn eigentlich die Variable I eingesetzt?

  9. #9
    Zitat Zitat von PX Beitrag anzeigen
    Code:
    begin
            Printer.Canvas.TextOut(500, 1000 + I *
                  (Printer.Canvas.TextHeight('I') + 5), memText1.Lines[I], memText2-Lines[I]);
             end;
    So? Wofür wird denn eigentlich die Variable I eingesetzt?
    I steht immer für die aktuelle Zeile (beginnend bei 0) in meinem Code. Um auszurechnen wohin de Text kommen muss ist die Formel I*(ZeilenHöhe + 5), damit sich der Text nicht überschneidet. Die +5 ist nur damit die Zeilen nicht so aneinander kleben.

    Dein Code ist übrigens schwachsinn. Probiere es mal lieber so:

    Code:
    procedure TfrmMain.btnPrintClick(Sender: TObject);
    var
      I, J: Integer;
    begin
      if PrintDialog.Execute then
      begin
        try
          Printer.Copies := printDialog.Copies;
    
          Printer.Title := 'Document';
          Printer.BeginDoc;
          // Setze Schriftart
          Printer.Canvas.Font := FontDialog.Font;
          // Zeilenweißes drucken
          for I := 0 to memText.Lines.Count - 1 do
          begin
            Printer.Canvas.TextOut(500, 500 + I *
                  (Printer.Canvas.TextHeight('I') + 5), memText.Lines[I]);
          end;
    
          for J := 0 to memText2.Lines.Count - 1 do
          begin
            Printer.Canvas.TextOut(500, 500 + J * (Printer.Canvas.TextHeight('I') + 5) + I * (Printer.Canvas.TextHeight('I') + 5),
                  (Printer.Canvas.TextHeight('I') + 5), memText2.Lines[J]);
          end;
          // Und drucken:
          Printer.EndDoc;
        except
          MessageDlg('Error while printing!', mtError, [mbOk], 0);
        end;
      end;
    end;

  10. #10
    Das verursacht einen Fehler:

    Code:
    (Printer.Canvas.TextHeight('I') + 5), memText2.Lines[J]);
    Irgendein Problem zwischen String und Integer... Wieso tritt das bei I nicht auf?

  11. #11
    Zitat Zitat von PX Beitrag anzeigen
    Das verursacht einen Fehler:

    Code:
    (Printer.Canvas.TextHeight('I') + 5), memText2.Lines[J]);
    Irgendein Problem zwischen String und Integer... Wieso tritt das bei I nicht auf?
    Lösch "(Printer.Canvas.TextHeight('I') + 5)," dann gehts, hab den code übersehen.

  12. #12
    Vielen Dank für das mit dem Drucken, habe weitere Fragen. Zuerst die totale Noobfrage: Wie kann ich den Text, der in einer Memo dem Name der Memo angepasst wird, löschen? Dann eine Frage zu den Dialogs: Es gibt ja auch einen Save Dialog. Wie baue ich den ein, um die gesamte Form und alle Informationen als Datei abzuspeichern, bzw. mit dem Open Dialog zu laden?

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •