Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie geht man an einen Formeleditor heran? (https://www.delphipraxis.net/125071-wie-geht-man-einen-formeleditor-heran.html)

Jakob Ullmann 30. Nov 2008 10:51


Wie geht man an einen Formeleditor heran?
 
Ich mache mir rein aus Interesse momentan Gedanken darüber, wie man einen Formeleditor programmieren könnte. Ich denke mir das so, dass man eine Eingabe macht (und da schien mir eine Eingabe so ähnlich wie LaTeX gut zu parsen):

/{1#2}+root{3#/{1#2}}

zum Beispiel für LaTeX:

\frac{1}{2}+\sqrt[3]{\frac{1}{2}}

Also hab ich mir gedacht, das muss rekursiv gemacht werden. :angel2: Ich denke da an einen record Term, aber wie sieht das mit den Typen aus? Ich brauche ja size (oder auch nicht, MetaFiles kann ich ja beliebig stretchen), fix (Höhe von Gleichheitszeichen, Bruchstrich, ...), height, width, ... und vor allem ein geparstes Image, Content: TMetaFile. Da bin ich aber auf folgendes Problem gestoßen: Wann soll ich wo dieses MetaFile erstellen und wieder freigeben? Hat jemand sowas schon einmal gemacht? Ich hatte mir mal eine Lösung in C# angesehen, allerdings gibt es die Website anscheinend nicht mehr und die Formeln sahen hinterher grässlich aus, weil on-the-fly gezeichnet wurde, also ein völlig unbrauchbares Konzept.

SirTwist 30. Nov 2008 14:44

Re: Wie geht man an einen Formeleditor heran?
 
Guten Morgen,

Zitat:

Zitat von Jakob Ullmann
Ich mache mir rein aus Interesse momentan Gedanken darüber, wie man einen Formeleditor programmieren könnte.

Was genau brauchst Du denn da? Willst Du eine graphische Aufbereitung der Formel machen? Oder einfach nur den Inhalt einer solchen \LaTeX-Formel erfassen, um ihn dann ausrechnen zu können.

Für eine graphische Aufbereitung der Formel gehst Du am einfachsten so vor, wie \TeX es auch macht: Du brauchst einen Container, der entweder ein graphisches Element oder mehrere andere Container enthält. Jeder Container hat eine feste Höhe und Breite, wobei sich die Höhe und Breite der übergeordneten Container aus denen der enthaltenen Container ergibt, ggfs zusätzlich zu dem eigenen graphischem Element.

Beispiel: Ein Container für einen Bruch enthält zwei Sub-Container, nämlich oben und unten, und ein graphisches Element, den Querstrich.

Wenn Du jedem Container eine virtuelle Methode Paint() gibts, kannst Du deine Formel relativ einfach auf ein Canvas zeichnen lassen.

Gruß,
SirTwist


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:55 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