Hallo,
was da
genau zu ändern ist kann ich nicht hier auflisten, denn das Demo wurde nicht aus einem fertigen Projekt extrahiert. Es war dazu gedacht einen Ansatz aufzuzeigen.
Aber mal so im Groben:
Ich habe das StringGrid gewählt damit es direkt zur Vorschau, der durch den Anwender gewählten Trennung, dienen kann.
Das DemoGrid besteht nur aus einer Spalte.
Hat man nun Text der breiter als diese eine Spalte ist, muß man ihn über mehrere Spalten ausgeben, um scrollen zu können. Das StringGrid kann leider nur spaltenweise scrollen. --> Änderung 1, und nicht so einfach wie man zuerst denkt, den die Textausgabe beginnt im negativen Bereich und muss für jede Zelle in der Zeile ausgeführt werden, sobald eine Zelle neu gezeichnet werden muss/wird.
Bei Mausklick wird der Abstand zum linken Rand gespeichert und ein Trennpfeil an der Stelle gezeichnet. Scrollt man nun, muss der nach links verschobene Bereich in den zu speichernden Abstand mit eingerechnenet werden, aber nicht bei der grafischen Ausgabe des Trennpfeils, denn die bezieht sich auf den Rand des StringGrids.
--> Änderung 2
Bei Mausklick auf einen vorhandenen Trennpfeil, der Mauscklick löst ein Neuzeichen der Zelle aus, wird dieser Pfeil entfernt(besser gesagt, nicht neu gezeichnet) und an der Stelle das 1-pixelbreite Panel eingeblendet, damit man die Trennung per Maus optisch verschieben oder entfernen kann(aus dem Grid rausziehen). --> Änderung 3, denn auch hierbei Berücksichtigung der aus dem Blickfeld gescrollten Spalte(n) bei der Berechnung der Abstände/Koordinaten.
Dann fehlt noch die eigentliche Trennung des Textes und die Übergabe an das Zielgrid.
Das sind so die wesentlichen Änderungen die mir einfallen, aber wie das immer so ist,
so manche Änderung erzeugt neuen Änderungsbedarf.
Eventuell lohnt es sich auch mal über eine Realisierung mittels PaintBox und Scrollbox nachzudenken.
Ich hoffe den Aufwand annähernd richtig beschreiben zu haben und es einigermaßen verständlich ist.