Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   einzelne Zeichen FETT/kursiv etc machen (https://www.delphipraxis.net/134722-einzelne-zeichen-fett-kursiv-etc-machen.html)

bomber901 27. Mai 2009 18:46


einzelne Zeichen FETT/kursiv etc machen
 
hi

ich sitz zurzeit für ein Schulprojekt an nem delphi programm was sich mit schrift formatierungen befasst.
Nun habe ich folgendes problem....

ich möchte das der Markierte Text eines Memo-feldes z.B.Fett ( nach BTN-click) wird.
dazu habe ich bisher folgenden quelltext:

procedure TForm1.Button1Click(Sender: TObject);
begin
AusgangsWort:=Memo1.text;
seltext1:=memo1.seltext;
memo1.Font.Style:= [fsBold];
a:=Pos(seltext1,memo1.Text);
Insert(seltext1,Ausgangswort,a);

dabei wird nun jedoch natürlich das komplette Wort Fett. Meine Frage ist also ob man einzelnen Wörtern auch die eigenschafft fett geben kann und diese dann in das ausgangswort einfach einbindet...

oder muss immer das komplette Memofeld entweder Fett oder eben nicht Fett sein ?

danke für hilfe im vorraus :)

Gargoyl 27. Mai 2009 18:52

Re: einzelne Zeichen FETT/kursiv etc machen
 
Ein Memofeld hat nur EINE Schriftart, -stil und -farbe. einzelne Buchstaben anders formatieren geht mit einem Memofeld nicht.
Was du brauchst ist TRichEdit. Damit kannst du einzelne Buchstaben anders formatieren.

bomber901 28. Mai 2009 15:32

Re: einzelne Zeichen FETT/kursiv etc machen
 
ok danke erstmal für den Tipp, hab das memofeld nun also ausgetauscht, weiß aber trotzdem nciht weiter was die formatierung einzelner Zeichen angeht.

Gargoyl 28. Mai 2009 15:46

Re: einzelne Zeichen FETT/kursiv etc machen
 
Das geht mit der Eigenschaft 'SelAttributes' von TRichEdit. SelAttributes hat die Eigenschaften für Color, Font (Name), Size, Style etc.
Delphi-Quellcode:
richEdit1.SelAttributes.Color := clRed;
richEdit1.Lines.Add('Dieser Text ist ROT');
richEdit1.SelAttributes.Color := clBlack;
richEdit1.SelAttributes.Style := [fsBold];
richEdit1.Lines.Add('Diese Zeile ist Fett');
siehe auch Delphi-Referenz durchsuchenTRichEdit und Delphi-Referenz durchsuchenSelAttributes

Wolfgang Mix 28. Mai 2009 16:05

Re: einzelne Zeichen FETT/kursiv etc machen
 
Das geht sogar mit eigener Farbmischung, z.B.

richEdit1.SelAttributes.Color := RGB(255,154,65);

Aber das sieht nicht gerade toll aus

bomber901 29. Mai 2009 10:24

Re: einzelne Zeichen FETT/kursiv etc machen
 
ein Problem hab ich jetzt leider immernoch:

ich möchte nach wie vor einen Markierten Text Fett machen, habe dazu folgenden quelltext:

seltext1:=richedit1.seltext;
a:=POS(richedit1.seltext,richedit1.text);
b:=length(seltext1);
RichEdit1.SelStart := a-1; // Startposition der Markierung
RichEdit1.SelLength := b; // Ende der Markierung
RichEdit1.SelAttributes.Style := [fsbold]; // Markierung fett drucken
RichEdit1.SelLength := 0; // Markierung beenden

nun hab ich halt noch das Problem, dass die 1. reihenfolge des Markieten textes fett macht, Beispiel : wenn vom Wort: " HAHAHA"
die letzten 2 Buchstaben Markiert werden und der Button gedrückt wird, werden die ersten beiden Buchstaben Fett.

jemand eine idee wie man das umgehen kann oder wie ich halt wirklich immer genau die Stelle ermitteln kann an dem der text markiert ist, unabhängig vom vorherigen Text ?

taaktaak 29. Mai 2009 10:33

Re: einzelne Zeichen FETT/kursiv etc machen
 
Moin, Moin.
Wenn es nur darum geht, einen durch den Anwender markierten Textabschnitt mit einem speziellen Attribut zu versehen, sollte dieses hier genügen:
Delphi-Quellcode:
procedure TfoTest16.Button1Click(Sender:TObject);
begin
  with RicheEdit1.SelAttributes do Style:=Style+[fsbold];
end;
.. und verwende das neue Attribut immer additiv, sonst wird ein ggf. bereits vorhandenes Attribut wie z.B. kursiv mit der neuen Formatierung entfernt.

Luckie 29. Mai 2009 10:34

Re: einzelne Zeichen FETT/kursiv etc machen
 
Zitat:

Zitat von bomber901
ok danke erstmal für den Tipp, hab das memofeld nun also ausgetauscht, weiß aber trotzdem nciht weiter was die formatierung einzelner Zeichen angeht.

Also das hatten wir schon so dermaßen oft, dass man eigentlich mit der Suche was finden sollte.

p80286 29. Mai 2009 13:47

Re: einzelne Zeichen FETT/kursiv etc machen
 
Zitat:

Zitat von bomber901
Delphi-Quellcode:
seltext1:=richedit1.seltext;
a:=POS(richedit1.seltext,richedit1.text);
b:=length(seltext1);
RichEdit1.SelStart := a-1;  // Startposition der Markierung
RichEdit1.SelLength := b; // Ende der Markierung
RichEdit1.SelAttributes.Style := [fsbold]; // Markierung fett drucken
RichEdit1.SelLength := 0; // Markierung beenden
nun hab ich halt noch das Problem, dass die 1. reihenfolge des Markieten textes fett macht, Beispiel : wenn vom Wort: " HAHAHA"
die letzten 2 Buchstaben Markiert werden und der Button gedrückt wird, werden die ersten beiden Buchstaben Fett.

jemand eine idee wie man das umgehen kann oder wie ich halt wirklich immer genau die Stelle ermitteln kann an dem der text markiert ist, unabhängig vom vorherigen Text ?

Wie war das?
Zitat:

Programme gehorchen nicht deinen Intentionen sondern Deinen Befehlen?!
Wenn Du die "selectmarkierung " neu setzt ist das auch kein Wunder.
Delphi-Quellcode:
a:=POS(richedit1.seltext,richedit1.text);
...
RichEdit1.SelStart := a-1;
Gruß
K-H


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