Seite 2 von 2 ErsteErste 12
Ergebnis 21 bis 32 von 32

Thema: Programmvorbereitung - Hilfe benötigt!

  1. #21
    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.

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

  3. #23

  4. #24
    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 11:35 Uhr)

  5. #25
    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).

  6. #26
    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?

  7. #27
    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;

  8. #28
    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?

  9. #29
    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.

  10. #30
    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?

  11. #31
    Zitat Zitat von PX Beitrag anzeigen
    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?
    Wie du dem Code entnehmen kannst greift man ist der Inhalt repräsentiert durch das Objekt Lines (TStrings).

    Zitat Zitat von PX Beitrag anzeigen
    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?
    Beide, Open- und Savedialog, können mit einer If-Abfrage und ihrer Funktion Execute ausgeführt werden. Der Rückgabewert ist dann bei Beiden in der property "FileName" zu finden. Beispielsweiße:
    Code:
    If SaveDialog.Execute then // Wenn User abgebrochen hat, dann nicht ausführen, sonst weiter
    begin
      SaveDialog.FileName := ChangeFileExt(SaveDialog.FileName, '.txt');
      // Nur zur sicherheit ändern, sonst gibts manchmal Fehler
      memText.Linex.SaveToFile(SaveDialog.FileName);
    end;
    Speichern einer kompletten Form kannst du natürlich als fertige Funktion vergessen, man kann nicht jedes Objekt einfach so in eine Datei speichern. Zu diesem Thema kannst du dir mal INI und XML ansehen. Auch typisierte Dateien ("records") lassen sich wunderbar speichern. Ist zwar ein wenig OldSchool und nur zu empfehlen wenn du sicher bist das nur (d)ein Delphi Programm die Daten jemals nutzen muss.

  12. #32
    An dieser Stelle moechte ich auch einfach mal auf die ausgezeichnete kontextsensitive Hilfe von Delphi verweisen. Meinerzeit habe ich ohne Handbuch, Tutorials oder Internet Delphi ausschliesslich ueber seine Hilfefunktion gelernt.

    Strg + F1 auf einem bestimmten Wort im Quelltext, einer Property im Object Inspector oder einem Icon in einem der Reiter und man hat eine wunderbare Hilfe mit Erklaehrung der funktionalitaet, aller Eigenschaften und Methoden und teilweise sogar Beispielquelltexte.

Berechtigungen

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