Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Komponentensuche: Mathparser für StringGrid (https://www.delphipraxis.net/99162-komponentensuche-mathparser-fuer-stringgrid.html)

mschaefer 7. Sep 2007 20:14


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

Dax 7. Sep 2007 20:20

Re: Komponentensuche: Mathparser für StringGrid
 
Wie meinst du das denn genau?

mschaefer 7. Sep 2007 20:38

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

Dax 7. Sep 2007 23:24

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...

mschaefer 8. Sep 2007 06:49

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:
  ValueStr := StringGrid.Cells[ Col, Row ]
Allerdings müßte dann wohl auch zunächst ein Baum aufgebaut werden welche Zellen in einer Formel noch angesprochen werden.

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.

Dax 8. Sep 2007 16:25

Re: Komponentensuche: Mathparser für StringGrid
 
Du brauchst nicht mal den ParseTree, nur ein Plugin:

Delphi-Quellcode:
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;
Das dürfte schon ausreichen, um ein Stringgrid einzubinden.

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 01:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz