fpspreadsheet -> Kalkulieren der Colwidth

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

fpspreadsheet -> Kalkulieren der Colwidth

Beitrag von af0815 »

Hallo,

Kann man die Breite (Max Breite) einer Zelle mit Text in Erfahrung bringen, bzw. automatisch setzen lassen ?

Kann ich die Breiten der Zellen die ein Nutzer sich eingerichtet hat, unabhängig als 'default' Format ablegen bzw. merken. Also nicht einfach mit dem xls wegspeichern. Oder muss ich mir dafür ein Vorlagen xls erzeugen und das einfach laden.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4888
Registriert: Fr 8. Apr 2011, 09:01

Re: fpspreadsheet -> Kalkulieren der Colwidth

Beitrag von wp_xyz »

af0815 hat geschrieben:Kann man die Breite (Max Breite) einer Zelle mit Text in Erfahrung bringen, bzw. automatisch setzen lassen ?

Kommt drauf an, wie du fpspreadsheet anwendest. Wenn du nur mit dem Package laz_fpspreadsheet (TsWorkbook, TsWorksheet etc) arbeitest, geht es nicht, weil dieses Package bewusst ohne LCL angelegt ist, d.h. die Textmetriken nicht bekannt sind. Wenn du aber mit dem Grid aus laz_fpspreadsheet_visual arbeitest, kannst du die Methode AutoColWidth(col) des Grid aufrufen, die Spaltenbreite steht danach in Pixeln in den ColWidths des Grid und in dem dem Grid zugrundeliegenden Worksheet (Grid.Worksheet) und kann per GetColWidth(Col, Units) in den gewünschten Einheiten (Units: TsSizeUnits = (suChars, suLines, suMillimeters, suCentimeters, suPoints, suInches)) abgerufen werden. Wobei im Worksheet die ungezoomte Spaltenbreite steht, die ColWidths des Grid aber noch mit dem Zoomfaktor des Worksheets versehen sind.

af0815 hat geschrieben:Kann ich die Breiten der Zellen die ein Nutzer sich eingerichtet hat, unabhängig als 'default' Format ablegen bzw. merken. Also nicht einfach mit dem xls wegspeichern. Oder muss ich mir dafür ein Vorlagen xls erzeugen und das einfach laden.

Sowas ist nicht vorgesehen. Aber wir sind Programmierer, und eine entsprechende Routine ist schnell geschrieben:

Code: Alles auswählen

procedure ColWidthTemplate(ASheet: TsWorksheet);
begin
  ASheet.WriteColWidths(0, 2, suCentimeters)// Spalte 0: 2 cm
  ASheet.WriteColWidths(1, 5, suCentimeters)// Spalte 1: 5 cm
  // etc
end;

Diese Routine rufst du auf, wenn du das Workbook erstellt hast.

P.S. Die Maßangaben setzen eine Bildschirmauflösung von 96ppi voraus. Damit es auch bei anderen Auflösungen stimmt, setze in einer GUI-Anwendung

Code: Alles auswählen

uses
  fpsUtils,  // für ScreenPixelsPerInch
  Forms;     // für Screen.PixelsPerInch
...
  ScreenPixelsPerInch := Screen.PixelsPerInch;

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: fpspreadsheet -> Kalkulieren der Colwidth

Beitrag von af0815 »

Danke, wieder ein bischen Licht am Ende des Tunnels in Sicht.

Andi

PS: Es ist nicht der Gegenzug :mrgreen:
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten