Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi In eine Zeile in einem Richtext mehrere texte einfügen. (https://www.delphipraxis.net/110566-eine-zeile-einem-richtext-mehrere-texte-einfuegen.html)

Power-Poler 20. Mär 2008 09:26


In eine Zeile in einem Richtext mehrere texte einfügen.
 
Hi

Ich habe volgendes Problem:
Und zwar möchte ich in ein Richtext feld 2-3 texte in einer zeile unterbringen.
Sie sollen aber immer an der selben Position landen, also egal wie lang der eine ist, der andere Text soll trotzdem an die gleiche stelle wie vorher, also ungefähr so:
Code:
Test1      Test2      Test3
Dieter1    Dieter2    Dieter3
und nicht so:
Test1      Test2      Test3
Dieter1      Dieter2      Dieter3
Also egal wie lang das wort, oder der Satz ist, sie sollen immer untereinander stehn.
Ich hoffe ihr versteht was ich meine :|

Danke im Voraus
Mfg
Power-Poler

moperswings 20. Mär 2008 09:48

Re: In eine Zeile vin einem Richtext mehrere texte einfügen.
 
Wie kommen denn die Texte in das RichEdit?

Power-Poler 20. Mär 2008 10:03

Re: In eine Zeile vin einem Richtext mehrere texte einfügen.
 
So:
Delphi-Quellcode:
RichEdit1.Clear;
RichEdit1.Lines.Insert(0,'');
RichEdit1.SelAttributes.Size := 15;
RichEdit1.Lines.Insert(1,'        Text1');;
RichEdit1.SelAttributes.Size := 10;
RichEdit1.Lines.Insert(2,'      ' + Variable1 + 'Text2' + 'Text3');
RichEdit1.Lines.Insert(3,'');
RichEdit1.SelAttributes.Size := 10;
RichEdit1.Lines.Insert(4,'      ' + Variable2 + 'text4' + 'Text5');
RichEdit1.SelAttributes.Size := 10;
RichEdit1.Lines.Insert(5,'      ' + Variable3 + 'text6' + 'Text7');
RichEdit1.SelAttributes.Size := 10;
RichEdit1.Lines.Insert(6,'      ' + Variable4 + 'Text8' + 'Text8');
RichEdit1.Lines.Insert(7,'');
Den code verwände ich dafür.

und die Texte, 2-8, sollen immer untereinander stehn, egal wie lang die Variable1-4 ist
Variable 1-4 sind String's mit unterschiedlich langen Texten drin, die verändert werden können

Der.Kaktus 20. Mär 2008 10:11

Re: In eine Zeile vin einem Richtext mehrere texte einfügen.
 
Hallo,

anstelle der Leerzeichen einfach #9 (Tab) einsetzen.

Power-Poler 20. Mär 2008 10:15

Re: In eine Zeile vin einem Richtext mehrere texte einfügen.
 
und was bedeutet das dan?
wiviel abstand is das dan?
ein Tap abstand?
Wie soll ich das einfügen?
hab jetzt so Probiert:
Delphi-Quellcode:
RichEdit1.Lines.Insert(2,'      ' + Variable1 + #9 (Tab) + 'Text2' + 'Text3');
Dan kommt ein error, und so kommt nur der zeichensatz raus:
Delphi-Quellcode:
 
RichEdit1.Lines.Insert(2,'      ' + Variable1 + '#9 (Tab)' + 'Text2' + 'Text3');
Also wie muss ich das dazwischen einsetzten??

taaktaak 20. Mär 2008 10:31

Re: In eine Zeile vin einem Richtext mehrere texte einfügen.
 
Moin, Moin,
nur #9 einsetzen, nicht die im Text als Erklärung eingefügten Hinweis (TAB)

Power-Poler 20. Mär 2008 10:37

Re: In eine Zeile vin einem Richtext mehrere texte einfügen.
 
Also, ich weis nicht, wie mir das helfen soll, der Abstand ist nicht gross genaug, der dan erzeugt wird, also muss ich mehrere hintereinander setzten, und sobald die variable länger wird, wird der rest weiter verückt.
Delphi-Quellcode:
RichEdit1.Lines.Insert(2,'      ' + Variable1 + #9+ #9+ #9+ #9+ #9+ #9+ #9+ 'Text2' + 'Text3');
wenn in der Variable Beispielsweise Martin steht, geht es, aber sobal MartinMusterman drin steht, werden die Texte 2 und 3 trotzdem weiter gerückt.

taaktaak 20. Mär 2008 10:43

Re: In eine Zeile in einem Richtext mehrere texte einfügen.
 
Das ist verständlich, du musst natürlich den Tabulator auf einen passenden Wert setzen. Etwa so: Alle Einträge VOR dem Einfügen auf die Länge (in Pixeln) utersuchen, die Tabschrittweite setzen und erst dann einfügen.

Power-Poler 20. Mär 2008 10:50

Re: In eine Zeile in einem Richtext mehrere texte einfügen.
 
Und jetzt mal auf deutsch bitte, dan ich es auch verstehen kann :stupid:

:mrgreen:

taaktaak 20. Mär 2008 11:03

Re: In eine Zeile in einem Richtext mehrere texte einfügen.
 
In einer Schleife alle Einträge, die innerhalb einer Spalte stehen sollen, auf deren Länge untersuchen, der längste gefundene Wert+Freiraum ist dann dein Wert für den Tabulator der Spalte. Canvas hat eine Methode "TextWidth" - schau hierzu in die Hilfe.

Den Wert für den Tabulator setzt du mit Hilfe von SendMessage/PostMessage und EM_SETTABSTOPS, auch hierzu solltest du weitere Informationen finden.

Alternativ anstelle eines MEMOS/RICHEDITS vielleicht auch ein Stringgrid verwenden. Wenn keine Linien und keine FixedCols/FixedRows dargestellt werden, schaut das eigentlich genau so aus wie ein EditControl - damit dürfte das alles ein wenig einfacher sein. Sollen spezielle Textattribute verwendet werden, musst du das OnDraw des Grids dann selbst übernehmen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr.
Seite 1 von 3  1 23      

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 by Thomas Breitkreuz