![]() |
Re: In eine Zeile in einem Richtext mehrere texte einfügen.
So, habe jetzt das hofenlich so, wie du es gemeint hast, mit der schleife das brauche ich nicht, da es keine Tabele in dem sin sein solte, mir geht es nur um einzele Zeilen.
Mein code sieht jetzt, für die ermitlung des Abstandes in px so aus:
Delphi-Quellcode:
Jetzt habe ich den px abstand in Abstand3 den ich brauche, also den zwischen variable 1 und Text2
Abstand1 := canvas.TextWidth(' ' + variable1);
Abstand2 := canvas.TextWidth(' '); Abstand3 := Abstand2 - Abstand1; wie sage ich jetzt aber dem tab, das er diesen abstand anhemen soll. Dein bezug auf die Hilfe, ich denke mal du meinst die vom Delphi, die will bei mir irgenwie nicht, der meint immer das das file in meinem Projekt Order ligt, und das es da nicht ist, ist klar. Hab woll irgenwo nen fehler gemacht :oops: Deswegen frage ich, befor ich vor verzweiflubg wider ein Projekt aufgebe, wäre nicht das erste, das ich angefangen habe, und das in die tonne getretten wurde, weil ich nicht weitergekommen bin. (Nicht nur in delphi) |
Re: In eine Zeile in einem Richtext mehrere texte einfügen.
Hallo!
Ich würde auch zu einem StringGrid raten, das ist am einfachsten. Wenn Du es doch in einem RichEdit haben möchtest und das Setzen der Tabs Dir zu kompliziert erscheint, dann könntest Du vielleicht eine Schriftart mit fester Zeichenbreite nehmen(z.B. Courier). Dann in einer Schleife die maximale Anzahl der Zeichen je Spalte ermitteln (mit Length('Dein String')) und jeweils entsprechend viele Leerzeichen anhängen. Aber elegant ist das nicht! Gruß, Zugi |
Re: In eine Zeile in einem Richtext mehrere texte einfügen.
taaktaak sagte etwas davon, das man die länger des Tab bestimmen kann, mit welchem befehl geht das?
Zitat:
|
Re: In eine Zeile in einem Richtext mehrere texte einfügen.
Hi,
es geht Dir darum, Daten mehr oder weniger tabellarisch darzustellen? Warum nutzt Du kein TStringGrid oder eine TListView? Ein RichEdit für so etwas zu "missbrauchen" ist nicht gerade eine gute Alternative. |
Re: In eine Zeile in einem Richtext mehrere texte einfügen.
Ich glaube ihr habt das falsch verstaden, ich will die Strings in keiner Tabele ausgeben, es ist schon richtig, das ich ein richtext nehme.
Bin über jede hilfe dankbar, aber von meiner entscheidung ein RichText zu verwänden, lasse ich micht nicht abringen. Oben das:
Code:
Das war nur ein Beispiel, so sieht das nachher nicht aus, das wahr nur zur erklärung, wie ich das meine, das halt die Position vom nächsten String nicht verändert werden darf, egal wie lang der vorhergehende ist.
Test1 Test2 Test3
Dieter1 Dieter2 Dieter3 und nicht so: Test1 Test2 Test3 Dieter1 Dieter2 Dieter3 |
Re: In eine Zeile in einem Richtext mehrere texte einfügen.
Wenn Du eine Schriftart fester Breite verwendest, kannst Du auch die Textlängen ausrechnen und ggf. mit Leerzeichen auffüllen.
|
Re: In eine Zeile in einem Richtext mehrere texte einfügen.
Hallo!
OK, ganz auf die Schnelle, Quick'n'Dirty:
Delphi-Quellcode:
Du brauchst: 1 * TRichEdit, 1 * TButton, 3 * TEdit.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) RichEdit1: TRichEdit; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private-Deklarationen } StringList1: TStringList; StringList2: TStringList; StringList3: TStringList; function GetMaxLength(StringList: TStringList): Integer; procedure AppendBlanks(var StringList: TStringList; nLength: Integer); public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var nCount: Integer; TabPixelPos1: Integer; TabPixelPos2: Integer; begin StringList1.Add(Edit1.Text); StringList2.Add(Edit2.Text); StringList3.Add(Edit3.Text); TabPixelPos1 := GetMaxLength(StringList1); TabPixelPos2 := GetMaxLength(StringList2); RichEdit1.Clear; AppendBlanks(StringList1, TabPixelPos1); AppendBlanks(StringList2, TabPixelPos2); for nCount := 0 to StringList1.Count - 1 do begin RichEdit1.Lines.Add(StringList1[nCount] + ' ' + StringList2[nCount] + ' ' + StringList3[nCount]); end; RichEdit1.Repaint; end; function TForm1.GetMaxLength(StringList: TStringList): Integer; var nCount: Integer; nLength: Integer; begin nLength := 0; for nCount := 0 to StringList.Count - 1 do begin if nLength < Length(StringList[nCount]) then nLength := Length(StringList[nCount]); end; result := nLength; end; procedure TForm1.AppendBlanks(var StringList: TStringList; nLength: Integer); var nCount: Integer; begin for nCount := 0 to StringList.Count - 1 do begin while Length(StringList[nCount]) < nLength do begin StringList[nCount] := StringList[nCount] + ' '; end; end; end; procedure TForm1.FormCreate(Sender: TObject); begin StringList1 := TStringList.Create; StringList2 := TStringList.Create; StringList3 := TStringList.Create; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin FreeAndNil(StringList1); FreeAndNil(StringList2); FreeAndNil(StringList3); end; end. Hoffe das hilft. Ach ja, nicht vergessen: im RichEdit den Font auf Courier stellen! Gruß, Zugi |
Re: In eine Zeile in einem Richtext mehrere texte einfügen.
So in der Art hatte ich das gemeint :)
|
Re: In eine Zeile in einem Richtext mehrere texte einfügen.
Ich in #12 auch schon :P
Gruß, Zugi |
Re: In eine Zeile in einem Richtext mehrere texte einfügen.
Muss ich irgendwie übersehen haben :cyclops: .
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 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