[fpSpreadsheet] Gibt es Zellen-Eigenschaft "beim Drucken ausblenden"

Rund um die LCL und andere Komponenten
Antworten
Soner
Beiträge: 606
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

[fpSpreadsheet] Gibt es Zellen-Eigenschaft "beim Drucken ausblenden"

Beitrag von Soner »

Hallo,
kann man bei fpSpreadsheet Zellen für den Ausdruck sperren?

Es gibt bei LibreOffice beim Dialog "Zellen formatieren .." die Option [Zellschutz -> Beim Drucken ausblenden]. Dann wird diese Zelle nicht gedruckt.

Ich habe im Quelltext nach "print" gesucht, es gibt nur etwas für Seitenumbruch, Druckbereich.

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

Re: [fpSpreadsheet] Gibt es Zellen-Eigenschaft "beim Drucken ausblenden"

Beitrag von wp_xyz »

Das müsste in der Unit fpsTypes unter TsWorkSheetProtection deklariert sein, oder unter TsPrintOption, aber bei beiden gibt es nichts entsprechendes.

Soner
Beiträge: 606
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: [fpSpreadsheet] Gibt es Zellen-Eigenschaft "beim Drucken ausblenden"

Beitrag von Soner »

wp_xyz hat geschrieben:
Sa 26. Aug 2023, 19:06
Das müsste in der Unit fpsTypes unter TsWorkSheetProtection deklariert sein, oder unter TsPrintOption, aber bei beiden gibt es nichts entsprechendes.
Ich glaube das müsste eher bei Cellprotection sein, weil man bei LO jede Zelle für den Druck sperren kann. Wenn es nicht fertig gibt. dann versuche ich es selber zu machen, ich brauche es wieder erst Ende September und da ich momentan sehr beschäftigt bin, werde ich es in 2-3 Wochen versuchen, wenn ich einige Ergebnisse habe, dann melde ich mich hier.

Du hast doch TsWorksheetGrid entwicktelt oder. Das ding ist richtig gut, nur es hat einige macken, z.B. wenn man Zeilen oder Spalten fixiert, dann kann man fixierte Zeilen oder Spalten weder selektieren noch bearbeiten, weil du die fixierten Zeilen/Spalten von TCustomDrawGrid verwendest. Mann könnte für fixierte Spalten/Zeilen 2. bzw. 3. Grid nehmen.
Ich habe in meinem Program TStringGrid und TDBGrid mit weiteren Grids und anderen Controls Summenzeilen oder Spalten hinzugefügt, das ist sehr einfach. Dass könnte man auch bei TsWorksheetGrid verwenden. Falls du Interesse hast, dann kann ich dir ein Beispiel für TStringGrid und TDBGrid senden. Du musst es dann an TsWorksheetGrid anwenden. Ich habe keine Ahnung von TsWorksheetGrid, ich verwende es nur.

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

Re: [fpSpreadsheet] Gibt es Zellen-Eigenschaft "beim Drucken ausblenden"

Beitrag von wp_xyz »

Soner hat geschrieben:
Mo 28. Aug 2023, 21:20
Ich glaube das müsste eher bei Cellprotection sein, weil man bei LO jede Zelle für den Druck sperren kann.
In CellProtection ist es aber auch nicht richtig, weil diese Flags nur wirksam sind, wenn man die Sheet-Protection aktiviert. Und ich hab's ausprobiert: Calc sperrt das Drucken einer Zelle auch ohne diese Maßnahme.

Ich habe es inzwischen nachgerüstet. Ich habe dafür ein neues Flag (uffDoNotPrint) in den UsedFormattingFields des Zellformats eingeführt. Für einfacheren Zugriff gibt es neue Worksheet-Methoden:

Code: Alles auswählen

type
  TsWorksheet = class(...)
  public
    function ReadDoNotPrintCell(ACell: PCell): Boolean;
    function WriteDoNotPrintCell(ARow, ACol: Cardinal; AValue: boolean): PCell; overload;
    procedure WriteDoNotPrintCell(ACell: PCell; AValue: Boolean); overload;
Das beigefügte, einfache Beispiel zeigt die Anwendung. Funktioniert nur mit ODS, Excel hat das nicht!
Soner hat geschrieben:
Mo 28. Aug 2023, 21:20
Du hast doch TsWorksheetGrid entwicktelt oder. Das ding ist richtig gut, nur es hat einige macken, z.B. wenn man Zeilen oder Spalten fixiert, dann kann man fixierte Zeilen oder Spalten weder selektieren noch bearbeiten, weil du die fixierten Zeilen/Spalten von TCustomDrawGrid verwendest. Mann könnte für fixierte Spalten/Zeilen 2. bzw. 3. Grid nehmen.
Dann könnte man aber TsWorksheetGrid nicht mehr von TCustomDrawGrid ableiten, und das wäre mir wichtig. Nachdem es kein Aufwand ist, die Frozen Rows/Cols für eine Eingabe vorübergehend wieder "aufzutauen", empfinde ich es als keinen großen Nachteil, dass man hier normalerweise nicht editieren kann. Selektieren - ok, das ist etwas unschön...

Aber ich meine, die LCL-Grids sind so flexibel aufgebaut, dass es möglich sein sollte, durch Überschreiben von ein paar Methoden die FixedCells selektierbar und zur Not auch editierbar zu machen. Mal sehen...
Dateianhänge
donotprintcell.zip
(1.25 KiB) 14-mal heruntergeladen

Soner
Beiträge: 606
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: [fpSpreadsheet] Gibt es Zellen-Eigenschaft "beim Drucken ausblenden"

Beitrag von Soner »

Mensch du bist aber schnell, ich habe dein Beispiel heruntergeladen und schaue es mir an.
wp_xyz hat geschrieben:
Di 29. Aug 2023, 00:05
....
Dann könnte man aber TsWorksheetGrid nicht mehr von TCustomDrawGrid ableiten, und das wäre mir wichtig. Nachdem es kein Aufwand ist, die Frozen Rows/Cols für eine Eingabe vorübergehend wieder "aufzutauen", empfinde ich es als keinen großen Nachteil, dass man hier normalerweise nicht editieren kann. Selektieren - ok, das ist etwas unschön...
...
Du kannst es von TCustomDrawGrid ableiten, es hat mit StringGrid oder DBGrid nicht zu tun. Ich brauchte es für nur für StringGrid und DBGrid. Ich habe es als unit gemacht, wenn ich es brauche, dann verwende ich z.B. normalen TDBGRid in Formdesigner, falls ich noch Summenzeilen benötige, dann binde ich es ein und schreibe:

Code: Alles auswählen

type
  TDBGrid = class(TDbSumGrid)
  end;
Dann muss ich nur noch in TForm.OnCreate ein Paarzeilen schreiben.
Das Zauberwort heißt GetClientRect, die Entwickler von LCL haben sehr gute arbeitet geleistet. Mann kann zu sehr vielen Controls einfach weitere Controls einfügen. Siehe bei sumgrid.pas die Funktion GetClientRect. Das ist eigentlich alles.

Ich füge hier mein allererstes Beispiel für TStringGrid ein, du kannst es auch als TCustomDrawGrid definieren. Im Beispiel ist links Referenzgrid rechts Summengrid mit Summenzeile und Spalte. Es könnte ein paar macken haben, aber das Prinzip sieht man. Im Beispiel sind es nur eine Summenzeile/Spalte aber mann kann es beliebig verändern.
Dateianhänge
sumgridpub.zip
(125.97 KiB) 18-mal heruntergeladen

Soner
Beiträge: 606
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: [fpSpreadsheet] Gibt es Zellen-Eigenschaft "beim Drucken ausblenden"

Beitrag von Soner »

wp_xyz hat geschrieben:
Di 29. Aug 2023, 00:05
...
Das beigefügte, einfache Beispiel zeigt die Anwendung. Funktioniert nur mit ODS, Excel hat das nicht!
...
Ich habe es mit LO getestet, einige andere Spalten auch als nicht druckbar eingestellt. Es funktioniert sehr gut, genauso wie bei LO, vielen Dank.

Antworten