I take it that you are generating the print output via TPrinter.
You need to know the screen and printer canvas resolutions (not sure on how to determine these, but think these are typically 72dpi for screen and 600dpi for printer).
Then multiply the screen co-ordinates by (Printer Resolution/Screen Resolution) to get your printer co-ords.
Following code prints out Label1 when button clicked
procedure TForm1.Button1Click(Sender: TObject);
var
X, Y : Integer;
begin
X := Trunc(Form1.Label1.Left * 600/72);
Y := Trunc(Form1.Label1.Top * 600/72);
if PrintDialog1.Execute then
with printer do
begin
BeginDoc;
Printer.Canvas.TextOut(X,Y,Form1.Label1.Caption);
EndDoc;
end;
end;
Note: Printer co-ords are relative to the printers printable area. i.e. printing at 0,0 doesn't place the text right in the top left corner of the page - if you wanted the text relative to the page edges then you would have to factor for this.
Hope this helps,
Keith.