fpSpreadsheetGrid und Funktionen

Rund um die LCL und andere Komponenten
Antworten
Joh
Lazarusforum e. V.
Beiträge: 354
Registriert: Sa 26. Mai 2012, 17:31
OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
CPU-Target: 64Bit

fpSpreadsheetGrid und Funktionen

Beitrag von Joh »

Moin,

ich teste gerade fpSpreadsheetGrid...

So weit, erstmal ok; ich bekomme die Daten in ein Datenblatt.
Aber was mich gravierend stört: Ich nutze die Englischsprachigen Funktionen (SUM, ROUND etc.), muß aber das im deutsche übliche Trennzeichen '; ' angeben.

Ist das eine Einstellungssache?

Also:
grdTabelle.cells[1, 2] := '=ROUND(A1, 2)'; <- Fehler beim parsen (fpsexprparser.pas)
grdTabelle.cells[1, 2] := '=ROUND(A1; 2)'; <- funktioniert, aber dann möchte ich auch Deutsche Funktionsnamen
grdTabelle.cells[1, 2] := '=RUNDEN(A1; 2)'; <- Fehler beim parsen, runden() nicht gefunden, was ja auch ok ist

PS: Um die Jahrtausendwende mußte ich zeitweise Access programmieren; das war ein Graus.
In der Programmierung englische Funktionsnamen, in den Dialogen die deutschen Entsprechungen...
Auch in den SQL-Abfragen, wenn ich mich recht entsinne. <grmbl$!> :mrgreen:
just my two Beer

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

Re: fpSpreadsheetGrid und Funktionen

Beitrag von wp_xyz »

Die Lokalisierung des Parsers steckt im Workbook, aus dem das WorksheetGrid seine Daten holt. Es gibt da ein DefautFormatSettings, das du auf englisch zurücksetzen musst:

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
begin
  with sWorksheetGrid1.Workbook.FormatSettings do
  begin
    DecimalSeparator := '.';
    ThousandSeparator := ',';
    ListSeparator := ',';
  end;
end; 
Weil das im Workbook steckt, musst du diesen Code wahrscheinlich mit jedem neu geladenen Workbook wiederholen.

Deutsche Bezeichner in Formeln wird es mit mir als Maintainer nicht geben.

Joh
Lazarusforum e. V.
Beiträge: 354
Registriert: Sa 26. Mai 2012, 17:31
OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
CPU-Target: 64Bit

Re: fpSpreadsheetGrid und Funktionen

Beitrag von Joh »

wp_xyz hat geschrieben: Fr 10. Apr 2026, 23:24 Die Lokalisierung des Parsers steckt im Workbook, aus dem das WorksheetGrid seine Daten holt. Es gibt da ein DefautFormatSettings, das du auf englisch zurücksetzen musst:
Danke, funktioniert.
Auf das Workbook wäre ich allerdings nie gekommen.

Mit DecimalSeperator auf ',' wird der unbedarfte Sägewerksmitarbeiter wohl eher nicht klar kommen^^
Aber alle drei auf Komma läuft; und meine Formel

Code: Alles auswählen

=ROUND(SUM(E14:R14)/100*D14,2)
tatsächlich auch. Wenn ich noch mit 1,19 multiplizieren wollte, knallts wahrscheinlich...
Aber hier gehts nur um Holzmaße.
wp_xyz hat geschrieben: Fr 10. Apr 2026, 23:24 Deutsche Bezeichner in Formeln wird es mit mir als Maintainer nicht geben.
Wer will die schon? Aber gemixt ist noch doofer.
just my two Beer

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

Re: fpSpreadsheetGrid und Funktionen

Beitrag von wp_xyz »

Im allgemeinen sind gleiche Decimal- und Listseparatoren ein Risiko - das würde ich meinen Usern nie antun:

- eine Float-Konstante als Summen-Argument: =SUM(A1,A2,3,4) -- addiert 3.4 zur Summe A1+A2 -- ok
- Aber: ich möchte die Integer-Konstanten 3 und 4 zu A1 und A2 addieren: =SUM(A1,A2,3,4) -- falsch, siehe oben,
- Argumente umgestelle: =SUM(A1,3,A2,4) -- Parserfehler
- Oder: mehrere Integer oder Float-Konstanten: =SUM(A1,A2,3,4,6) -- Parserfehler

Ach ja, und dieser Hinweis noch: grdTabelle.cells[1, 2] := '=ROUND(A1, 2)' Warum rundest du da die Zahl? Um zwei Dezimalstellen zu haben? Dafür hat fpspreadsheet wie Excel die Zellformate: grdTabelle.NumberFormat[1,2] := '0.00'

Antworten