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 TRichEdit Standard-Formatierung restaurieren (https://www.delphipraxis.net/98568-trichedit-standard-formatierung-restaurieren.html)

Andreas H. 29. Aug 2007 08:46


TRichEdit Standard-Formatierung restaurieren
 
Hallo,

ich habe ein TjvRichEdit, in dem der Benutzer Änderungen vornimmt und dabei natürlich auch die Formatierungen ändern kann. Bevor der Inhalt in eine Datenbank gespeichert wird, soll am Ende automatisch ein Text (mit Lines.Add) in der Standard-Formatierung (so wie designed) angefügt werden.

Gibt es da einen Trick, die Standard-Einstellungen für Font etc. zu restauriern oder muss ich mir jede Einstellung z.B. im onCreate merken?

Gruß Andreas

s-off 29. Aug 2007 08:50

Re: TRichEdit Standard-Formatierung restaurieren
 
Hallo,

dieses Thema wurde kürzlich hierbehandelt.

defede 29. Aug 2007 08:52

Re: TRichEdit Standard-Formatierung restaurieren
 
Ein kleiner trick wäre
einfach den ParentFont neu zuweisen?

s-off 29. Aug 2007 09:00

Re: TRichEdit Standard-Formatierung restaurieren
 
Zitat:

Zitat von defede
Ein kleiner trick wäre
einfach den ParentFont neu zuweisen?

Und wenn ParentFont := False ?

defede 29. Aug 2007 09:09

Re: TRichEdit Standard-Formatierung restaurieren
 
Zitat:

Zitat von s-off
Zitat:

Zitat von defede
Ein kleiner trick wäre
einfach den ParentFont neu zuweisen?

Und wenn ParentFont := False ?

Ein bissl Kreativ musst auch sein. Mach doch einfach
ein Panel drunter, das RichEdit auf alClient und
weise dem Panel die Font zu die du als Standard haben
möchtest. Noch die Border/Bevels weg und das sit der
Faulste weg der mir eingefallen ist *g*

Amsonsten TFont beim onCreate merken und neu zuweisen.
Aber ich möchte dir ja nicht den ganzen Spass an der Arbeit
und am Denken nehmen :stupid:

s-off 29. Aug 2007 09:13

Re: TRichEdit Standard-Formatierung restaurieren
 
Zitat:

Zitat von defede
Ein bissl Kreativ musst auch sein. Mach doch einfach
ein Panel drunter, das RichEdit auf alClient und
weise dem Panel die Font zu die du als Standard haben
möchtest. Noch die Border/Bevels weg und das sit der
Faulste weg der mir eingefallen ist *g*

Ich möchte Dir ja nicht zu nahe treten, aber das hat nichts mit Kreativität zu tun; das ist gefrickel :wink:

Zitat:

Zitat von defede
Amsonsten TFont beim onCreate merken und neu zuweisen.

Das hat der Threadersteller auch schon vorgeschlagen ;)

Zitat:

Zitat von defede
Aber ich möchte dir ja nicht den ganzen Spass an der Arbeit
und am Denken nehmen :stupid:

Nicht ich habe das Problem, sondern der Threadersteller :wink:

Andreas H. 29. Aug 2007 09:16

Re: TRichEdit Standard-Formatierung restaurieren
 
Hallo,

WordAttributes habe ich mal gerettet, und wieder zugewiese, hat aber nicht gefunzt.
Das mit dem Font probier ich mal.

Auf die harte Tour krieg ich das wohl schon hin. Aber vielleicht gibts ja nen Trick oder so.

Ach ja, vielleicht das noch zur Info: Das RichEdit wird zum Editieren per SaveToStream/Load FromStream an einen Editor übergeben und nach dem Ändern zurückgeholt. Die Lines, die ich zufüge haben immer die Formatierung des letzten Zeichens.

Gruß Andreas

defede 29. Aug 2007 09:17

Re: TRichEdit Standard-Formatierung restaurieren
 
uppps Sorry s-off :oops:

hab nicht genau auf den Namen geschielt.

Und ja es ist gefrickel da mir die Frage eigentlich schon
etwas > :stupid: < vorkommt, aber egal wir haben alle mal
mit was angefangen. Drum wollte ich es gleich so erklären das
es jeder versteht. Oki? :gruebel:

s-off 29. Aug 2007 09:20

Re: TRichEdit Standard-Formatierung restaurieren
 
Zitat:

Zitat von defede
uppps Sorry s-off :oops:

kein Problem :wink:

Zitat:

Zitat von defede
Drum wollte ich es gleich so erklären das
es jeder versteht. Oki? :gruebel:

auch kein Problem :wink:

marabu 29. Aug 2007 09:23

Re: TRichEdit Standard-Formatierung restaurieren
 
Hallo Andreas,

ich würde das so machen:

Delphi-Quellcode:
begin
  with RichEdit do
  begin
    SelStart := MaxInt;
    SelAttributes.Assign(DefAttributes);
    Lines.Add('One last line on DefAttributes!');
  end;
end;
Oder habe ich etwas falsch verstanden?

Grüße vom marabu

Andreas H. 29. Aug 2007 11:15

Re: TRichEdit Standard-Formatierung restaurieren
 
Hallo,

ja genau, so habe ich mir das vorgestellt. Werde es heute nachmittag gleich mal probieren.

Danke, Andreas

Andreas H. 29. Aug 2007 15:19

Re: TRichEdit Standard-Formatierung restaurieren
 
Hallo,

ich kriegs nicht hin:

Delphi-Quellcode:
procedure TNewMessageForm.FormCreate(Sender: TObject);
begin
  // Design-Einstellungen retten
  FDefAttributes:=TjvTextAttributes.Create(RTFEdit,atDefaultText);
  FDefAttributes.assign(RTFEdit.DefAttributes);
end;

procedure TNewMessageForm.doSendMsg(ReciepNames:TStringList);
var
  i:integer;
  DocList,ReciepList:TIntegerList;
begin
  try
    // Einstellungen restaurieren
    RTFEdit.SelStart := MaxInt;
    RTFEdit.SelAttributes.Assign(FDefAttributes);

    // ggf. Verteiler anfügen
    if CBVerteiler.Checked then
    begin
      // Verteiler anfügen
      RTFEdit.Lines.Add(' ');
      RTFEdit.Lines.Add('------------------------');
      RTFEdit.Lines.Add('Verteiler:');
      for i:=0 to ReciepNames.Count-1 do
        RTFEdit.Lines.Add('   '+ReciepNames.Strings[i]);
    end;
...
end;
Was mache ich denn falsch?

Gruß Andreas

defede 29. Aug 2007 15:25

Re: TRichEdit Standard-Formatierung restaurieren
 
Ich würde dir empfehlen den Text erst einzufügen und dann die Selektion darauf und dann
erst die Formatierung drauflegen. Ich denk du machst es einfach zu früh.

marabu 29. Aug 2007 16:56

Re: TRichEdit Standard-Formatierung restaurieren
 
Hallo Andreas,

du machst nichts falsch, aber du machst etwas ganz anderes als ich. Das Verhalten bei Lines.Add() ist etwas schwer zu verstehen. Darüber hinaus verhalten sich TRichEdit und TJvRichEdit nicht gleich, weshalb ich SelText verwende. Das kannst du auch:

Delphi-Quellcode:
function FooterText(recipients: TStrings): string;
var
  i: Integer;
begin
  with TStringList.Create do
  try
    Add('');
    Add('---');
    Add('Verteiler:');
    for i := 0 to Pred(recipients.Count) do
      Add('   ' + recipients[i]);
    Result := Text;
  finally
    Free;
  end;
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
var
  recips: TStrings;
begin
  recips := TStringList.Create;
  with recips do
  begin
    Add('Andreas');
    Add('defede');
    Add('marabu');
  end;

  with RtfEdit do
  begin
    SelStart := MaxInt;
    SelAttributes.Assign(DefAttributes);
    SelText := FooterText(recips);
  end;

  recips.Free;
end;
Freundliche Grüße

Andreas H. 29. Aug 2007 17:56

Re: TRichEdit Standard-Formatierung restaurieren
 
Hallo,

danke, so geht es.

Und ich hab mal wieder etwas über die Funktionsweise von Komponenten gelernt.

Gruß Andreas


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