Announcement

Collapse
No announcement yet.

Probleme mit der Position beim TPrinter

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme mit der Position beim TPrinter

    Hi,
    ich versuche nun schon die ganze letzt Woche ein schönes Druckbild hinzubekommen. Aber nachdem ich dann die horizontale Verteilung
    der Objekte gemacht hab, und es passt so, dann verschiebt er
    beim nächsten oder übernächsten mal alle Elemente wieder.
    Ich arbeite mit

    Prntr->Canvas->TextOut(xpos,ypos,"Name1");

    Die y Position nimmt er an, doch die x Position verschiebt er
    mir scheinbar immer willkürlich.
    Wenn ich 500 eingebe druckt er es mal da hin, wo es hin soll,
    mal verschiebt er es nach links.
    Habt ihr ne Idee????
    Gruß Chris

  • #2
    Das passiert eigentlich nur, wenn sich die Auflösung des Druckers ändert
    Christian

    Comment


    • #3
      Aber wenn sich die Auflösung ändern würde, dann würde sich die y-Position auch ändern (ausser die ist gleich 0). Ist es wirklich sichergestellt, dass da immer 500 drin steht

      Comment


      • #4
        yoo, hast du Recht, Y würde sich auch ändern
        Christian

        Comment


        • #5
          Das an die Auflösung des Druckers hab ich auch gedacht,
          aber wie gesagt: der y Wert.
          Und auf die frage, ob da immer 500 drin steht.
          Leider ja, denn ich hab am Anfang wirklich diese Zahl reingeschrieben. Und weil er so komische Sachen gemacht hat,
          hab ich dann eine Variable benutzt um die Seitenbreite in bestimmte Abschnitte zu unterteilen. Da war es dann auch so.
          Komisch.....

          Comment


          • #6
            "Aber wenn sich die Auflösung ändern würde, dann würde sich die y-Position auch ändern"

            Stimmt im Allgemeinen, aber eben nicht immer. Es gibt auch Drucker bei denen man die X- und Y-DPI seperat einstellen kann.

            ---

            Eigentlich bräuchte man ein bissel mehr Infos, am besten währe natürlich die Funktions-Source in welcher der druck geschieht.

            Aber du kannst mal die WinAPI-Function GetDeviceCaps benutzen, um die Drucker-Infos wie Seitengröße, X-/Y-DPI, druckbarer Bereich, linker Rand,... auszulesen, vielleicht findest du in diesen Werten einen Grund.

            http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/devcons_88s3.asp

            z.B.:

            int yDPI = GetDeviceCaps(Printer()->Handle,LOGPIXELSY);

            Interessant könnten die folgenden Werte sein:
            - PHYSICALHEIGHT
            - PHYSICALWIDTH
            - PHYSICALOFFSETX
            - PHYSICALOFFSETY
            - VERTSIZE
            - HORZSIZE
            - LOGPIXELSY
            - LOGPIXELS

            Comment


            • #7
              Cool,
              da ich wirklich ein kleines Licht bin in C++ versuche ich mich da mal
              dran. Genau diese Daten brauch ich, damit ich verstehen kann, wie das drucken überhaupt läuft. Vielen Dan

              Comment


              • #8
                Die liefert doch auch teilweise das TPrinter-Objekt!?
                Christian

                Comment


                • #9
                  Ja, das hab ich auch ausgelesen, aber damit hat er es nicht gemacht.
                  Das war das gleicht Problem.
                  Hab jetzt die wahre Seitenbreite mit
                  GetDeviceCaps(Printer()->Handle,LOGPIXELSY);
                  ausgelesen und einfach in 20 Teile geteilt, sodass ich dann
                  in die y-Komponente einen Multiplikator mal diesem 20-stel beschreiben kann.
                  Als ich das vorher über das TPrinter Objekt gemacht hab, hat er
                  mir trotzdem die Seite verzogen.
                  Aber jetzt funktioniert es einwandfrei!
                  Vielen Dank an Euch
                  &#10

                  Comment

                  Working...
                  X