Font Daten, Drucker Auflösung

Antworten
Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Font Daten, Drucker Auflösung

Beitrag von Heinrich Wolf »

Hallo,

in Delphi 5 unter Windows benutze ich z.B.:

GetOutlineTextMetrics(Canvas.Handle, sizeof(Metric), Metric);
GetDeviceCaps(Printer.Handle, LogPixelsY);

Was sind die Äquivalente, um die Anwendung auf Lazarus unter Linux zu migrieren?

Vielen Dank im voraus
Heiner

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: Font Daten, Drucker Auflösung

Beitrag von Heinrich Wolf »

Es geht um das Migrieren folgender Windows Anwendung:
http://www.Wolf-Fuerth.de/cal1_de.htm" onclick="window.open(this.href);return false;
http://www.Wolf-Fuerth.de/cal_zip.exe" onclick="window.open(this.href);return false;

Wenn GetOutlineTextMetrics() unter Windows fehlschlägt, benutze ich ersatzweise
Canvas.TextHeight('Üg') * 25 div 20;
Ich brauche es, um einen sauberen Zeilenabstand für Canvas.TextOut() zu berechnen.

Für GetDeviceCaps() habe ich keinen Ersatz.
Ich brauche es, um das Vorschaufenster sauber zu zeichnen, wenn der Benutzer in der Anwendung ein Layout bearbeitet.

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Font Daten, Drucker Auflösung

Beitrag von monta »

Dafür gibt es eine entsprechende Unit in Lazarus:

Code: Alles auswählen

uses Printers;
 //...
  Printer.SetPrinter(Printer.Printers[0]);
  Showmessage(IntToStr(Printer.XDPI) + ',' + IntToStr(Printer.YDPI));
Bei SetPrinter muss natürlich der entsprechende Name des Druckers noch eingefügt werden. Printer.Printers liefert automatisch eine Liste aller Drucker.

alternativ:

Code: Alles auswählen

if PrintDialog1.Execute then
  Showmessage(IntToStr(Printer.XDPI) + ',' + IntToStr(Printer.YDPI));
Johannes

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: Font Daten, Drucker Auflösung

Beitrag von Heinrich Wolf »

Das ist ja klasse, dass es eine Property von Printer ist. In Delphi 5 gibt's die nicht.

Antworten