AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Memo mit Textobjekten gesucht

Ein Thema von Opa Knack · begonnen am 22. Mai 2011 · letzter Beitrag vom 23. Mai 2011
Antwort Antwort
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#1

Memo mit Textobjekten gesucht

  Alt 22. Mai 2011, 04:27
Hallo,

kennt jemand von euch eine Memo-Komponente für D2006, bei der Textteile als Objekte gehandhabt werden?

Da die Frage vielleicht ein wenig wirr klingt (bin noch von gestern wach), hier noch die Erläuterung:

Ich möchte einen "Textbaukasten" bereitstellen, der mit einzelnen Satzbestandteilen (aus einem TreeView) per Drag&Drop befüllt werden kann. Diese Bestandteile sollen anschließend noch in sich gekapselt sein, sollen also noch "im Stück" innerhalb des Textes verschoben werden können. Wenn der Gesamttext also "Satz 1. Satz 2. Satz 3." lautet, sollen es möglich sein, den Baustein "Satz 2." eigenständig zu verschieben, zu ändern oder zu löschen, ohne dass das Hintergrundwissen, dass der Satz 2 als eigenständiger Baustein gehandhabt wird, haben zu müssen.

Ich habe es bisher mit einer Listbox versucht (habe hierbei allerdings Probleme bei der Mehrzeiligkeit, wenn ich die Texte aus dem TreeView herüberziehe, sowie mit dem Markieren des gerade eingefügten Bausteins), mit einem Treeview (hier konnte ich keine mehrzeiligen Texte einbinden) sowie mit dem Virtual StringTree (womit ich mich einfach nicht anfreunden kann). Dann habe ich noch dynamisch erzeugte Label verwendet (wobei wieder die mehrzeiligen Inhalte Probleme machten) und ein StringGrid ausprobiert (ohne Worte). Wie der geneigte Leser sieht: Es muss nicht UNBEDINGT eine Memo-Kompo sein...

So langsam bin ich mit meinem Latein am Ende und kann nur noch hoffen, dass sich jemand meiner erbarmt... (und bitte, bitte nicht den Hinweis "Nimm VST" - mit dem Ding kann ich einfach nicht).

Danke und Gute Nacht
Opa
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Memo mit Textobjekten gesucht

  Alt 22. Mai 2011, 08:39
Ich habe mal vor 100 Jahren etwas selbst geschrieben, indem ich Adressen (also kurze Texte) zerlegt und in mehrere Panels, bzw. deren Captions geschrieben habe (für jedes Wort also ein erzeugtes Panel).
Der User konnte dann die Panels verschieben und so die Reihenfolge der Wörter ändern.
Das sollte dazu dienen, die Adressen zu überarbeiten.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Twaddler

Registriert seit: 22. Mai 2011
1 Beiträge
 
Delphi 5 Enterprise
 
#3

AW: Memo mit Textobjekten gesucht

  Alt 22. Mai 2011, 13:43
Ich denke auch, dass du das selbst implementieren musst.
An deiner Stelle würde ich eine Art "Verzeichniss" erstellen, in dem Verzeichnet ist, von welchem bis zu welchem Zeichen der Textbaustein xy geht. Mit der Cursorposition kannst du dann den Textbaustein auslesen und weiterverarbeiten. Z.b. über einen Button hinter den nächsten Baustein schieben
  Mit Zitat antworten Zitat
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#4

AW: Memo mit Textobjekten gesucht

  Alt 23. Mai 2011, 00:19
Hallo,

die Idee mit den Captions hatte ich auch schon, habe es allerdings mit Labels umgesetzt. Da die Texte jedoch über mehrere Zeilen gehen können, wurde es ein wenig schwierig, da ständig irgendwo irgendwas neu berechnet werden musste.

Im Moment versuche ich das Ganze mithilfe des Webbrowsers umzusetzen, indem ich die Bausteine mit Kommentaren versehe und den Quelltext auslese. Wirklich zufrieden bin ich allerdings bisher auch nicht.

Falls also noch jemand eine Idee hat: Ich bin für jeden Tipp dankbar.

Gruß
Opa
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Memo mit Textobjekten gesucht

  Alt 23. Mai 2011, 01:05
Nun so schwer sollte das nicht sein mit TMemo, folgendes Konzept würde ich vorschlagen:

Das Memo-Feld darf allerdings primär nur zur Anzeige des Textes und zur Feststellung der Cursor-Position verwendet werden.
Alle Eingaben in das Memofeld müssen umgeleitet werden in die Klasse, die alle verwendeten Textbausteine enthält.

Mal ein Gedankenkonstrukt für das Einfügen eines Zeichens (ungestestet und ohne Bereichsprüfung).
Weiterhin fehlt die Behandlung von DEL/BS und der Zwischenablage (Einsetzen, Ausschneiden).

Die anderen Methoden müssten natürlich noch ausprogrammiert werden
Delphi-Quellcode:
TTextSet = class
private
  // Speicher auf die Memo-Referenz
  FMemo : TMemo;
  // Speicher für die Textbausteine
  FParts : array of string;
protected
  // Das Memofeld mit den Text-Inhalten füllen
  procedure RefreshMemo;
public
  // Das referenzierte Memo-Feld übergeben
  property Memo : TMemo read FMemo write SetMemo;
  // Ein Zeichen Key an der Stelle KeyPos einfügen
  procedure AddKey( Key : Char; KeyPos : integer );
  // einen Textbaustein verschieben
  procedure MovePart( FromIndex, ToIndex : integer );
  // Textbaustein hinzufügen
  procedure AddPart( Index : integer; const PartText : string );
  // Textbaustein entfernen
  procedure DelPart( Index : integer );
end;

procedure TTextSet.AddKey( Key : Char; KeyPos : integer );
begin

  // Textbaustein ermitteln
  idx := Low( FParts );
  tpos := 0;
  while ( tpos + Length( FParts[ idx ] < KeyPos ) do
    begin
      Inc( tpos, Length( FParts[ idx ] ) );
      Inc( idx );
    end;

  // Zeichen im Textbaustein einfügen
  Insert( Key, FParts[ idx ], KeyPos - tpos );
  
  // Das Memofeld aktualisieren
  RefreshMemo;

  // Den Cursor im Memo platzieren
  Memo.SelStart := KeyPos + 1;

end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von ConnorMcLeod
ConnorMcLeod

Registriert seit: 13. Okt 2010
Ort: Bayern
490 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Memo mit Textobjekten gesucht

  Alt 23. Mai 2011, 03:03
kennt jemand von euch eine Memo-Komponente für D2006, bei der Textteile als Objekte gehandhabt werden?
Da fällt mir spontan nur eine Lösung ein, die den Text intern entweder als Richtext oder als XML speichert. Bei beiden sind selbstdefinierte Eigenschaften möglich. Wobei mir XML als schnelle Lösung vorkommt und Richtext als sophisticated wegen der Textformatierung (fett, kursiv, Farben etc.).

Oder eben Dein Ansatz mit HTML und die Objekteigenschaften in Kommentaren ablegen und das Ganze in einem erweiterten WebBrowser.

Die Darstellung im GUI kann ein abgeleitetes TMemo oder TRichText oder TWebBrowser sein, das im Hintergrund die Maus und den Cursor beobachtet und Deine speziellen Dinge tut.

Pro Satzteil ein neues Objekt halte ich bez der Performance für problematisch, auch wenn es nur TLabels sind.

PS: die WPTools können das. Userdefinierte Objekte im Text mit speziellen Verhaltensweisen meine ich. Aber die haben
1) einen Preis
2) eine ganz eigene Philosophie in der Bedienung, die manches Mal Wutausbrüche auslöst
Nr.1 Delphi-Tool: [F7]

Geändert von ConnorMcLeod (23. Mai 2011 um 03:06 Uhr) Grund: Formulierung
  Mit Zitat antworten Zitat
Opa Knack

Registriert seit: 28. Dez 2004
Ort: Köln
166 Beiträge
 
#7

AW: Memo mit Textobjekten gesucht

  Alt 23. Mai 2011, 23:35
@Sir Rufo: Den Gedanken hatte ich auch schon. Problematisch wird's, wenn die Textbausteine verändert werden können, da es dann nicht mehr funktionieren würde. Momentan habe ich knapp 1500 Bausteine, welche durch Individualisierung natürlich immens potentiert werden können...

@Connor: Momentan versuche ich die Webbrowserlösung umzusetzen, da dank HTML und CSS einige "Effekte" (wie das Hervorheben einzelner Bausteine) leichter vonstatten geht. Die WPTools habe ich mir angeschaut, aber allein schon dank des Preises hoffe ich, dass es auch noch einfachere Lösungen gibt. Zur Bedienung kann ich nichts sagen, aber das hört sich für mich so an, als wären die Komponenten für mich ähnlich dem VST einsetzbar

Wie gesagt: Jede Idee ist willkommen. Irgendwie muss es doch funktionieren...

Gruß
Opa
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:43 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