AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign TextInputCanvas - konzeptionelle Gedanken, Vorgehensweise, Umsetzung

TextInputCanvas - konzeptionelle Gedanken, Vorgehensweise, Umsetzung

Ein Thema von hansklok · begonnen am 19. Jan 2017 · letzter Beitrag vom 26. Jan 2017
Antwort Antwort
Seite 2 von 2     12
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#11

AW: TextInputCanvas - konzeptionelle Gedanken, Vorgehensweise, Umsetzung

  Alt 25. Jan 2017, 23:20
Hihi, ich glaube, wir haben uns falsch verstanden. Ich finde Deine Vorgehensweise schon richtig. Wonach ich zur Zeit suche, und das unterscheidet sich etwas von Deinen Ausführungen, ist eine Variante ohne das es bereits eine Struktur (Textdatei) gibt, eine solche zu schreiben, eben visuell.

Und eine vorhandene könnte so aussehen:

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<document>
  <paragraph>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</paragraph>
  <paragraph style="1">Lorem ipsum dolor sit amet,
    <textstyle="2">consetetur
      <textstyle="3">sadipscing</textstyle>
     elitr</textstyle>
    , sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua</paragraph>
</document>
Du hast nach den Textblöcken gefragt. Die Anregung habe ich von hier bekommen. Das ist allerdings nur eine Projekt zur Darstellung, jedoch kann man nicht den Text auf dem Canvas bearbeiten.

Geändert von hansklok (25. Jan 2017 um 23:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: TextInputCanvas - konzeptionelle Gedanken, Vorgehensweise, Umsetzung

  Alt 26. Jan 2017, 12:47
Ich lese interessiert mit, da ich gerade an einem ähnlichen Teilprojekt arbeite...
Ich glaube nicht, dass wir uns konkret gegenseitig helfen können, will aber mal meinen Stand kurz beschreiben:

Hier habe ich eigene "Controls" gezeigt, in denen ich grundlegend schon arbeiten kann: http://www.delphipraxis.net/185623-m...-controls.html

Ich zeichne dazu die "Controls" lediglich auf den Formularcanvas und zeichne auch den Cursor einfach als Strich in das Bild.
Grundsätzlich fühlt sich das im Ergebnis schon wie richtige Controls an (Selektion von Text und C&P geht aber noch nicht).

Gerade bin ich dabei, auch einen Editor für mehrzeiligen Text aufzubauen und als zweiten Schritt einen Code-Editor mit Syntax-Highlighting etc.

Ich parse den Roh-Text dazu in einzelne Worte, z.B. so:
"Ich"
" "
"parse"
" "
"den"
...

Jedes Wort wird in einem Objekt verwaltet und zusätzlich bestimmte Statusinformationen (Bedeutung, Hint etc) die der Editor dann für die Darstellung des Textes verwenden kann.

Der Text wird wiederum in Zeilen untergliedert, die dann jeweils mehrere Wörter enthalten.

Der Editor wird an die Zeilen gebunden, erstellt dann für jede gebundene Zeile eine Art Panel ohne Rand und für jedes Wort in der Zeile ein Edit ohne Rand. Die trennenden Leerzeichen sind in dem Sinne auch Wörter.

Der Editor zeichnet mindestens die sichtbaren Zeilen und schätzt zunächst die Gesamthöhe für den Gesamttext ab um die Scrollbar darzustellen. Wenn Zeit ist kann er auch mehr Text rendern, um genauere Daten zu haben.

Wenn dann Text in einer Zeile geändert wird muss diese als invalide gekennzeichnet und neu gerendert werden.
Die Metadaten zu den einzelnen Zeilen und Wörtern müssen in der Datenschicht verwaltet werden, die Positionen auf der Zeichenfläche aber vom jeweiligen Editor.

In jedem Fall soll bei mir eine Zeile im Editor an eine Zeile im Text gebunden werden und jedes Wort einer Zeile soll wiederum an ein einzelnes Edit gebunden werden (ohne sichtbare Rahmen).

Je Wort ist also dann jeweils ein Edit für die Darstellung und Bearbeitung (incl. Caretpositionierung bei Klick usw) zuständig.

So ist mein aktueller Ansatz, an dem ich arbeite.


Später wäre ein RichEditor noch interessant, das würde dann schon eher zu Deinem Projekt passen. Da wäre das Zerlegen in einzelne Wörter mit zugeordneten Metadaten sicher auch weniger interessant.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (26. Jan 2017 um 13:03 Uhr)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: TextInputCanvas - konzeptionelle Gedanken, Vorgehensweise, Umsetzung

  Alt 26. Jan 2017, 14:24
Gerade bin ich dabei, auch einen Editor für mehrzeiligen Text aufzubauen und als zweiten Schritt einen Code-Editor mit Syntax-Highlighting etc.
Ich weiß ja nicht was dein Editor später alles noch können soll, aber hast du dir mal die SynEdit Komponenten angeschaut? Die haben auch eine Syntax-Highlighting Funktion und vieles mehr. So in etwas wie der Code Editor in Delphi. Syntax-Highlighter kannst du dir auch selbst erstellen und dem SynMemo zuweisen.

Wäre vielleicht weniger Arbeit. Es sei denn, deine Komponente soll später noch 1000 Dinge mehr können als die SynEdit Komponenten es können.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: TextInputCanvas - konzeptionelle Gedanken, Vorgehensweise, Umsetzung

  Alt 26. Jan 2017, 14:33
Ich brauche eine Lösung, die spezielle Rahmenbedingungen erfüllt. Daher habe ich das von Null an aufgebaut.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (27. Jan 2017 um 13:22 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 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