Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Skalierbare RichEdit Komponente (https://www.delphipraxis.net/174604-skalierbare-richedit-komponente.html)

ATS3788 1. Mai 2013 06:58

Skalierbare RichEdit Komponente
 
Hallo
Ich habe das schon mal vor 2 Jahren gefragt.
Leider ohne Ergebnis, vielleicht hat sich ja was getan.

Kennt jemand eine Möglichkeit Eine TRichEdit
Komponente skalierbar zu machen.
Also das genau z.B. nur
40 Spalten und 25 Zeilen angezeigt werden.

Sir Rufo 1. Mai 2013 08:09

AW: Skalierbare RichEdit Komponente
 
Hmmm, mal überlegen ...

RichEdit heißt ja auch, dass dort Text in beliebigen Schriftarten und Größen angezeigt werden kann.
Also würde ich mal sagen, dass deine Anforderung von einer TRichEdit Komponente niemals erfüllt werden kann weil es sich eben um RichText handelt.

Kann es sein, dass du etwas wie beim SynEdit (TSynMemo) suchst, wo du Text mit einer festen Schriftart und Größe aber mit Farbattributen darstellen kannst?

mkinzler 1. Mai 2013 10:05

AW: Skalierbare RichEdit Komponente
 
In Texteditoren werden auch feste Schriftarten und -größen verwendet und trotzdem kann man die angzeigte Größe skalieren.

BUG 1. Mai 2013 10:31

AW: Skalierbare RichEdit Komponente
 
Ich glaube, das hat Sir Rufo verwirrt:
Zitat:

Zitat von ATS3788 (Beitrag 1213643)
Also das genau z.B. nur 40 Spalten und 25 Zeilen angezeigt werden.

Das ist bei variabler Schriftgröße und nicht-Monospace-Schriften etwas kniffelig.
Man könnte das eventuell lösen, wenn man vorgibt, dass man dann zum Beispiel 40 Zeichen der Zeile anzeigen will, bei der die Breite des Textes für 40 Zeichen maximal ist.

Im Grunde hast du 2 Probleme:
  • Wie skaliere ich eine RichText-Edit (geht das überhaupt)?
  • In welche Skalierungsstufe werden Angaben wie 40 Spalten und 25 Zeilen übersetzt?

Aber mir kommt das Gesamtproblem auch etwas merkwürdig vor.
Kannst du eventuell etwas mehr darüber sagen, was du mit dem Ding machen willst?

Perlsau 1. Mai 2013 12:13

AW: Skalierbare RichEdit Komponente
 
Zitat:

Zitat von ATS3788 (Beitrag 1213643)
Kennt jemand eine Möglichkeit Eine TRichEdit Komponente skalierbar zu machen. Also das genau z.B. nur 40 Spalten und 25 Zeilen angezeigt werden.

Ganz einfach in den Constraints nur die Breite und Höhe erlauben, die dazu führt, daß nur die erwünschte Zeilen- und Spaltenzahl angezeigt wird. Oder anders ausgedrückt: Die Zeilenzahl in einem Richedit stellt keinen festen Wert dar, sondern ist abhängig von der Breite des Clientbereichs und der Größe der Schriftart. Schiebst du das Richedit zusammen, entstehen automatisch mehr Zeilen bei gleichem Textinhalt – und natürlich verringert sich dadurch die Anzahl der Spalten - und umgekehrt. Oder du berechnest die erforderliche Schriftgröße, um immer bei der gewünschten Zeilen- und Spaltenzahl zu landen.

Wozu glaubst du denn sowas doch eher Absurdes zu benötigen?

ATS3788 2. Mai 2013 09:51

AW: Skalierbare RichEdit Komponente
 
Sir Rufo
Du hast ja mal wieder recht.
Ich meine natürlich Breite und Höhe in Pixel.

ATS3788 2. Mai 2013 09:56

AW: Skalierbare RichEdit Komponente
 
Perlsau

Im meinem Fall zum bedrucken eines Ordnerrückens und
der hat nur eine begrenzte Fläche.

DeddyH 2. Mai 2013 10:00

AW: Skalierbare RichEdit Komponente
 
Böte sich da nicht eher ein Report an?

Perlsau 2. Mai 2013 13:02

AW: Skalierbare RichEdit Komponente
 
Zitat:

Zitat von ATS3788 (Beitrag 1213785)
Im meinem Fall zum bedrucken eines Ordnerrückens und der hat nur eine begrenzte Fläche.

Da ist ein RichEdit so ziemlich der schlechteste Ansatz, denn das Druckbild unterscheidet sich immer von der Bildschirmansicht. Wenn du ein RichEdit mit MeinRichEdit.Print ausdruckst, kommt es auf die Druckereinstellungen an, wie das Druckformat aussieht. Und wenn du mehrere Ordner-Aufkleber auf ein Din-A4-Blatt drucken möchtest, mußt du dir sowieso was anderes einfallen lassen.

Wenn bei deinem XE-Starter ein Report-Generator dabei ist, bist du mit dessen Verwendung wohl am besten beraten, wie bereits Sir Rufo angedeutet hat. Ansonsten kannst du dir auch mit einem TImage behelfen, auf das du den Text ausgibst und das du dann entsprechend skaliert auf den Drucker ausgibst. Ich hab das mal vor vielen Jahren mit Delphi 7 Personal so gemacht – das Programm wird noch heute von dem Künstlerverein, dem ich das programmiert hatte, eingesetzt. Allerdings war die dortige Grafikausgabe wesentlich anspruchsvoller: Torten- und Säulengrafiken, Tabellen, Doppelsäulen und dergleichen mehr. Wenn du mit einem Canvas-Objekt arbeitest, das du deinen Grafik-Proceduren übergibst, kannst du letztere für Bildschirm- und Druckausgabe verwenden.

ATS3788 4. Mai 2013 08:39

AW: Skalierbare RichEdit Komponente
 
hALLO mOIN Perlsau

Danke, Danke, klar zum drucken nehme ich FastReport nur ich muss die
Daten erst mal eingeben und da schwebte mir so ein pseudo WYSIWAG vor.
Funzt ganz ordentlich.

Delphi-Quellcode:
procedure TForm1.reResizeRequest(Sender: TObject; Rect: TRect);
var
height   : integer;
begin
height := Rect.Bottom;
// Button2.Caption := IntToStr(  re.Constraints.MaxHeight );
if re.Constraints.MaxHeight > 0 then
if height > re.Constraints.MaxHeight then
re.Lines.Delete( re.Lines.Count -1 );
// LB.Items.Add( format (   'r%d-b%d-t%d-l%d' , [Rect.Bottom - 300 , Rect.Bottom , Rect.Top , Rect.Left ]) );
end;
Das ist weit von perfekt, wenn die Eingabe height überschreitet
lösche ich einfach die letzte Zeile. Schöner wäre es die letzte
Eingabe bei überschreiten zu löschen, nur das bekomme ich nicht hin,
wenn nur ein "RETURN" getätigt wird. Delete mag das nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 Uhr.
Seite 1 von 2  1 2      

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