Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   RichEdit Schriftgröße ändern ? (https://www.delphipraxis.net/171863-richedit-schriftgroesse-aendern.html)

Davidlocke13 29. Nov 2012 10:14

RichEdit Schriftgröße ändern ?
 
Morgen,
habe mal wieder voll das Anfänger-Problem !

Kann ich die Schriftgröße meines RichEdits mit einem SpinEdit ändern und wenn ja wie ?

Gruß

DeddyH 29. Nov 2012 10:22

AW: RichEdit Schriftgröße ändern ?
 
Meinst Du jetzt die generelle Schriftgröße oder die des markierten Textes?

Davidlocke13 29. Nov 2012 10:37

AW: RichEdit Schriftgröße ändern ?
 
des markierten Textes :wink:

DeddyH 29. Nov 2012 10:43

AW: RichEdit Schriftgröße ändern ?
 
Dann schau Dir einmal Delphi-Referenz durchsuchenTRichEdit.SelAttributes an.

Davidlocke13 29. Nov 2012 11:51

AW: RichEdit Schriftgröße ändern ?
 
das ist dann property Font; oder ?

DeddyH 29. Nov 2012 12:09

AW: RichEdit Schriftgröße ändern ?
 
Nein, die Eigenschaft SelAttributes vom Typ TTextAttributes.
Zitat:

Die meisten Schriftmerkmale, die von einem TTextAttributes-Objekt repräsentiert werden, sind dieselben wie die Eigenschaften eines TFont-Objekts, wobei auch die Namen identisch sind. Schriftarten können einem Textattribut zugewiesen werden und umgekehrt.

Popov 29. Nov 2012 12:25

AW: RichEdit Schriftgröße ändern ?
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with RichEdit1 do
  begin
    Lines.Text := 'Zwischen zwei Zwetschgen zwitschern zwei Schwalben';
    SelStart := 9;
    SelLength := 15;
    SelAttributes.Name := 'Courier New';
    SelAttributes.Color := clRed;
    SelAttributes.Size := 15;
    SelAttributes.Style := [fsBold, fsItalic];
    SelAttributes.Style := SelAttributes.Style - [fsItalic];
  end;
end;
;)

Davidlocke13 29. Nov 2012 12:38

AW: RichEdit Schriftgröße ändern ?
 
Zitat:

Legt die Attribute des Textes fest
deshalb habe ich gedacht das passt

DeddyH 29. Nov 2012 12:54

AW: RichEdit Schriftgröße ändern ?
 
Und deshalb hatte ich ja gefragt, welche Schriftgröße. Font ist für die generell anzuwendende Schrift und SelAttributes für die des markierten Textes zuständig.

Popov 29. Nov 2012 13:05

AW: RichEdit Schriftgröße ändern ?
 
Zitat:

Zitat von Davidlocke13 (Beitrag 1193562)
Zitat:

Legt die Attribute des Textes fest
deshalb habe ich gedacht das passt

Ich weiß nicht wo du da ein Font siehst. RichEdit hat DefAttributes, mit denen du sozusagen die Standardvorlage für den ganzen Text definierst, und SelAttributes, für einzelne Formatierungen. Mit Font der Komponente RichEdit veränderst du DefAttributes.

Davidlocke13 29. Nov 2012 13:08

AW: RichEdit Schriftgröße ändern ?
 
Ah ok jetzt verstehe ich das langsam ;-)

Popov 29. Nov 2012 13:09

AW: RichEdit Schriftgröße ändern ?
 
Das Beispiel ausführen, dann versteht man das auch ganz.

Davidlocke13 29. Nov 2012 16:32

AW: RichEdit Schriftgröße ändern ?
 
Also
Code:
procedure TForm1.SpinEdit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
{hier sollte ich glaube noch die Aktuelle Text größe prüfen ?}
RichEdit1.SelAttributes.Size := {Aktuelle Textgröße + 1};
end;
ich hoffe das geht in die richtige Richtung ?

Wenn nicht dürft ihr mich alle mal hauen ;-)

Popov 29. Nov 2012 19:11

AW: RichEdit Schriftgröße ändern ?
 
So kriegst du es nicht hin, also zu allem eine 1 addieren oder subtrahieren. Der Grund ist, dass ein markierter Text nicht die gleiche Fontgröße haben muss. Er kann, muss aber nicht. Das geht bei TMemo, die eine Größe hat, auch bei DefAttributes, da sie für ganzen Text gilt, aber nicht für SelAttributes.

Deshalb in TTextAttributes, also auch unter SelAttributes zu finden, die Methode ConsistentAttributes. Die sagt dir ob der markierte Block zusammen Fett oder nicht ist, gleiche Farbe hat, gleiche Schriftgröße, gleiche Schrift usw. ConsistentAttributes sagt dir also nicht die Schriftgröße, sondern ob alle gleich groß sind, oder, oder, oder.
Delphi-Quellcode:
  with RichEdit1 do
  begin
    ...

    SelLength := 16;
    if caBold in SelAttributes.ConsistentAttributes then
      ShowMessage('Alles zusammen ist fett') else
      ShowMessage('Einige Zeichen sind fett, andere nicht');
  end;
Wenn du den Schriftgrad um einen Punkt erhöhen willst, dann mußt du den ganzen Text einzeln analysieren und erhöhen. Und mit einer Funktion krisgst du das nicht hin. Dazu mußt du programmieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:22 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