Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Änderung des Schrift-style (https://www.delphipraxis.net/102720-aenderung-des-schrift-style.html)

HTML04 3. Nov 2007 10:02


Änderung des Schrift-style
 
Ich möchte mit dem folgenden Code bewirken, dass enweder der ausgewählte Text oder der gesamte Text fett-gedruckt wird. Ich habe einen tbscheck benutzt um den jeweiligen Status anzuzeigen. Der Code funktioniert aber nicht. Warum nicht? :gruebel:

Delphi-Quellcode:
procedure TForm2.ToolButton12Click(Sender: TObject);
begin
mark := richedit1.seltext;
if Toolbutton1.Down then
 begin
  if mark = '' then richedit1.Font.Style := richedit1.font.style + [fsbold];
  if mark <> '' then richedit1.SelAttributes.style := richedit1.font.style + [fsbold];
 end
else
 begin
  if mark = '' then richedit1.font.Style := Richedit1.font.style - [fsbold];
  if mark <> '' then richedit1.SelAttributes.style := richedit1.Font.style -[fsbold];
 end;
end;
Schon einmal DANKE im Voraus!! :-D


[edit=Matze][delphi]-Tag repariert. MfG, Matze[/edit]

Matze 3. Nov 2007 10:16

Re: Änderung des Schrift-style
 
Hallo,

der Code funktioniert bei mir ohne Probleme.

Du kannst übrigens auch "else" nutzen:

Delphi-Quellcode:
if Toolbutton1.Down then
begin
  if mark = '' then richedit1.Font.Style := richedit1.font.style + [fsbold] else
    richedit1.SelAttributes.style := richedit1.font.style + [fsbold];
end else
begin
  if mark = '' then richedit1.font.Style := Richedit1.font.style - [fsbold] else
    richedit1.SelAttributes.style := richedit1.Font.style -[fsbold];
end;

HTML04 3. Nov 2007 12:42

Re: Änderung des Schrift-style
 
Bei mir tut sich aber leider immer noch nichts bei klick auf den Button
aber trotzdem Danke für die Antwort :wink:

Matze 3. Nov 2007 13:14

Re: Änderung des Schrift-style
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von HTML04
Bei mir tut sich aber leider immer noch nichts bei klick auf den Button

Bei mir geht's bis zu einer bestimmten Situation richtig. Hat man den Stil bei markiertem Text geändert, dann ändert sich dieser bei unmarkiertem nicht mehr.

Mit folgendem Code klappt's nun bei mir halbwegs.
Zugegeben, das erscheint mir ein wenig umständlich, aber etwas besseres fällt mir nicht ein, nur irgendwas stimmt mit den Zeilenumbrüchen nicht. :gruebel:

Delphi-Quellcode:
procedure TForm1.ToolButton1Click(Sender: TObject);
var
  mark: string;
  SelStart, SelLength: Integer;
begin
  mark := RichEdit1.SelText;
  SelStart := RichEdit1.SelStart;
  SelLength := RichEdit1.SelLength;

  if mark = '' then
    RichEdit1.SelectAll;

  if Toolbutton1.Down then
    RichEdit1.SelAttributes.Style := RichEdit1.Font.Style + [fsbold]
  else
    RichEdit1.SelAttributes.Style := RichEdit1.Font.Style - [fsbold];

  RichEdit1.SelStart := SelStart;
  RichEdit1.SelLength := SelLength;
end;
Im Anhang eine Demo.

HTML04 3. Nov 2007 19:17

Re: Änderung des Schrift-style
 
Bei mir scheint Delphi nicht mit den verschiedenen Gedrückt-Phasen des Buttons zurechtzukommen. Deswegen hat es bei mir auch nicht mit der Änderung des Styles geklappt da aus welchem Grund auch immer den Down-Zustand nicht erkannt habt ich habe das Problem nun mit folgendem Quelltext gelöst:
Delphi-Quellcode:
 procedure TForm2.ToolButton12Click(Sender: TObject);
 var SelStart, SelLength: Integer;
begin
  mark := RichEdit1.SelText;
  SelStart := RichEdit1.SelStart;
  SelLength := RichEdit1.SelLength;
if mark = '' then RichEdit1.SelectAll;
if s = false then s2:= true;
if s = true then s2 := false;
if s2 then RichEdit1.SelAttributes.Style := RichEdit1.Font.Style + [fsbold];
if not s2 then RichEdit1.SelAttributes.Style := RichEdit1.Font.Style - [fsbold];
  RichEdit1.SelStart := SelStart;
  RichEdit1.SelLength := SelLength;
  s := s2;
end;
Aber Trotzdem Danke für deine Mühe :)

P.S: Das ist zwar eine wirklich komplizierte Lösung aber scheint endlich zu funktionieren und ich habe endlich begriffen wie man gescheit Quelltext posted:!:

Muetze1 3. Nov 2007 19:42

Re: Änderung des Schrift-style
 
Delphi-Quellcode:
if s = false then s2:= true;
if s = true then s2 := false;
wird zu

Delphi-Quellcode:
  s2 := not s;

HTML04 3. Nov 2007 22:45

Re: Änderung des Schrift-style
 
Schönen Dank für die Anmerkung, die das doch alles ein wenig vereinfacht :-D

Matze 3. Nov 2007 22:51

Re: Änderung des Schrift-style
 
Und noch etwas: Ich habe dir doch bereits den Tipp gegeben, öfters "else" zu nutzen. Das ist erstens übersichtlicher und zweitens musst du bei Änderungen im Code nicht 2 Stellen anpassen.

Ändere das hier ...
Delphi-Quellcode:
if s2 then RichEdit1.SelAttributes.Style := RichEdit1.Font.Style + [fsbold];
if not s2 then RichEdit1.SelAttributes.Style := RichEdit1.Font.Style - [fsbold];
also besser in dies hier:
Delphi-Quellcode:
if s2 then
  RichEdit1.SelAttributes.Style := RichEdit1.Font.Style + [fsbold]
else
  RichEdit1.SelAttributes.Style := RichEdit1.Font.Style - [fsbold];
Das habe ich dir oben nicht umsonst so gelöst.
Und gewöhne dir an, den Code zu formatieren, damit man auf den ersten Blick sieht, was zusammen gehört. Das kann dir viele Fehler ersparen. ;)


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