Printing to Dymo Labelwriter 330 Turbo

Posted on 2006-06-06
Last Modified: 2010-04-05

A customer wants to print addresses directly from within my Delphi-program to a Dymo Labelwriter 330 Turbo.
I don't have this printer myself, so it is hard to see what kind of functionality is required here.
I'm using an MS Access database, Delphi 7 pro.

Does anybody have experience with this? Any help is most welcome.

Question by:Delphiwizard
    LVL 4

    Expert Comment

    Hi Stef,
    I dont know the specific dymo you have but i have a p-touch label printer and with the right driver installed it functions as a normal printer, have you tried to print using regular printing method? (even Richedit print method)
    LVL 5

    Accepted Solution

    Well if you need to print from a richtext and set its margins and amout of copies... try this function

    function PrintRichText(RTLeftMargin, RTRightMargin, RTTopMargin, RTBottomMargin: single;
    RichTextMeasurement: TRichTextMeasurements; Copies: Integer): Boolean;
      PixelsX, PixelsY, LeftSpace, TopSpace : Integer;
      LeftMargin, RightMargin, TopMargin, BottomMargin: single;
      R : trect;
      Result := False; // default return value
      rtleftmargin := strtofloat(sleft);
      rttopmargin := strtofloat(stop);
      rtrightmargin := strtofloat(sleft);
      rtbottommargin := strtofloat(stop);
      if RichTextMeasurement <> rtmNone then
          // get pixels per inch
          PixelsX := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
          PixelsY := GetDeviceCaps(Printer.Handle, LOGPIXELSY);

          // get non-printable margins
          LeftSpace := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
          TopSpace := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);

          LeftMargin := RTLeftMargin;
          RightMargin := RTRightMargin;
          TopMargin := RTTopMargin;
          BottomMargin := RTBottomMargin;

          // If the measurement is set in Centimetres, recalculate
          if RichTextMeasurement = rtmCentimetres then
              LeftMargin := LeftMargin / 2.54;
              RightMargin := RightMargin / 2.54;
              TopMargin := TopMargin / 2.54;
              BottomMargin := BottomMargin / 2.54;

            // Set the Margins
            R.Left := Round(PixelsX * LeftMargin) - LeftSpace;
            R.Right := Printer.PageWidth - Round(PixelsX * RightMargin) - LeftSpace;
            R.Top := Round(PixelsY * TopMargin) - TopSpace;
            R.Bottom := Printer.PageHeight - Round(PixelsY * BottomMargin) - TopSpace;
            form1.RichEdit4.PageRect:= R;

      // Print the required number of copies
      while Copies > 0 do
          form1.RichEdit4.Print('MyApp: Copy '+IntToStr(Copies));
      Result := True;

    With the code above and this information:

    Im sure you can make a mok up of the dimensions and give it a try to the customer. Put in a series of test that the customer can bring back to you so that you can fine tune the settings on your side :P

    Peace Scay7
    LVL 5

    Assisted Solution

    I just saw from that site that it mentioned that they give examples for DELPHI:

    "Provides OLE, DLL, and DDE interfaces to application developers. Supports popular development platforms such as Visual Basic, C/C++, Access, FoxPro, Power Builder and Delphi. Includes sample applications in C, Visual Basic, Access, Delphi, FoxPro, Power Builder and Delphi
    Includes add-ins that enable one-click address labels direct from the main toolbars of Microsoft ® Word, Outlook, the Palm Desktop, GoldMine ® and ACT!™. Also directly supported by Corex ® CardScan ® and TeleMagic ®"

    mabey ask for those examples... then you can make a proper app to go with this printer...

    Peace Scay7
    LVL 5

    Assisted Solution

    K sorry about my posts... think i found the dev KIT that comes with that printer...

    Software TAB
    click dev aid
    click soft dev kit

    scroll to the bottom should be an exe there for download...

    hope that helps

    Peace Scay7

    Author Comment

    I will download the SDK and software from the website and see where that brings me.
    Thanks for now.

    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    How your wiki can always stay up-to-date

    Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
    - Increase transparency
    - Onboard new hires faster
    - Access from mobile/offline

    The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
    Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
    In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor ( If you're interested in additional methods for monitoring bandwidt…
    Polish reports in Access so they look terrific. Take yourself to another level. Equations, Back Color, Alternate Back Color. Write easy VBA Code. Tighten space to use less pages. Launch report from a menu, considering criteria only when it is filled…

    779 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    12 Experts available now in Live!

    Get 1:1 Help Now