![]() |
Komponentensuche: Mathparser für StringGrid
Ja ich suche einen Mathparser, den man an das StringGrid koppeln kann. Hinergrund ist, dass ich einige enfache Rechnungen in einem Grid ermöglichen möchte. Dass muß allerdings nur auf Aufruf einmal rechnen. Vielleicht hat jemand auch eine Idee wie man einen der Parser hier aus der DP um den Zellzugriff auf das StringGrid erweitern könnte.
Grüße // Martin |
Re: Komponentensuche: Mathparser für StringGrid
Wie meinst du das denn genau?
|
Re: Komponentensuche: Mathparser für StringGrid
Vielleicht ist das etwas naiv, aber hatte mir Überlegt, dass ich eine externe Parserkomponente habe und die berechnet aus einem StringGrid mit Formeln die Ergebniswerte und legt diese in ein zweites StringGrid ab. Also eine MiniTabellenkalkulation mit Grundrechenarten. Allerdings kein selbst rechnendes Spreadsheet, da die oft mit anderen Funktionen völlig überladen sind.
Grüße // Martin |
Re: Komponentensuche: Mathparser für StringGrid
Also sucht du ein Stringgrid, dass beim Aufruf einer bestimmten Methode seine (Formel)Zellen als (Ergebnis)Zellen in ein weiteres Grid rendert? Sowas könnte man recht elegant über HAM und ein GetVariable-Plugin lösen, das Variablen im Excel-Format annimmt...
|
Re: Komponentensuche: Mathparser für StringGrid
Ja ich werde mir Deinen Parser mal genauer anschauen,
wird wohl aber ein paar Tage dauern. Du scheinst aber die Funktionen sauber in die Units aufgeteilt zu haben, das ist gut! Den Zugriff aus eine Zelle im StringGrid ist da der banale Teil:
Delphi-Quellcode:
Allerdings müßte dann wohl auch zunächst ein Baum aufgebaut werden welche Zellen in einer Formel noch angesprochen werden.
ValueStr := StringGrid.Cells[ Col, Row ]
Jedenfalls gefällt mir die Idee mit dem HAM-Parser ! Viele Grüße // Martin PS: Mir ist derzeit nicht klar, ob das der Parser intern über seinen ParserTree leisten könnte oder ob man das extern aufbaut und dem Parser dann eine lange Formel übergibt. |
Re: Komponentensuche: Mathparser für StringGrid
Du brauchst nicht mal den ParseTree, nur ein Plugin:
Delphi-Quellcode:
Das dürfte schon ausreichen, um ein Stringgrid einzubinden.
TStringGridVariableProvider = class(THAMPlugin)
private fGrid: TStringGrid; public constructor Create(stringgrid: TStringGrid); function GetVariable(Name: string; Index: Integer; GetMethod: THAMGetMethod; out MetaResult: THAMVariable): Boolean; override; end; constructor TStringGridVariableProvider.Create(stringgrid: TStringGrid); begin inherited; fGrid := stringgrid; end; function TStringGridVariableProvider.GetVariable(Name: string; Index: Integer; GetMethod: THAMGetMethod; out MetaResult: THAMVariable): Boolean; begin if(GetMethod = gmByName) then begin MetaResult := THAMVariable.Create; MetaResult.Parse(fGrid.Cells[{aus Name die Indizes berechnen}]); Result := false; end; end; Allerdings musst du mit den erstellen Variablen aufpassen, ich weiß nicht mehr, ob die überhaupt freigegeben werden.. :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz