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 RichEdit-Fragen (https://www.delphipraxis.net/30269-richedit-fragen.html)

Lamy 22. Sep 2004 18:51


RichEdit-Fragen
 
Hi!

Ich hab hier einige Fragen zur Richedit-Komponente...


Ich möchte den Text auch als .txt- Datei speichen und zwar ohne diesen blöden Richtext-Formatierungscode - hat jemand ne Idee wie ich das behen kann?

So, und hier die zweite Frage:

Ich möchte dass Links blau unterlegt werden und auch als solche erkannt werden - wie geht sowas?
Ich meine, man sollte draufklicken können...

Danke schonmal! =)


Lamy

NicoDE 22. Sep 2004 19:16

Re: RichEdit-Fragen
 
Zitat:

Zitat von Lamy
Ich möchte den Text auch als .txt- Datei speichen und zwar ohne diesen blöden Richtext-Formatierungscode - hat jemand ne Idee wie ich das behen kann?

Delphi-Quellcode:
  with RichEdit1.Lines, TMemoryStream.Create do
    try
      WriteBuffer(Text[1], Length(Text));
      SaveToFile('foo.txt');
    finally
      Free;
    end;
Zitat:

Zitat von Lamy
Ich möchte dass Links blau unterlegt werde - wie geht sowas?

Delphi-Quellcode:
  with RichEdit1 do
    RichEdit1.Perform(EM_AUTOURLDETECT, Ord(True), 0);
(auf das Klicken zu reagieren ist etwas aufwendiger, such nach WM_NOTIFY und EN_LINK...)

jfheins 22. Sep 2004 19:30

Re: RichEdit-Fragen
 
Zur zweiten Frage:
Das Problem hatte ich auch schon, Schau dir mal diesen Thread an. (Keine Angst, es geht doch)

Ultimator 22. Sep 2004 19:33

Re: RichEdit-Fragen
 
Du kannst, um die Richedit-Formatierungsinformationen wegzukriegen, die Eigenschaft PlainText im OI umstellen :zwinker:

Lamy 22. Sep 2004 19:35

Re: RichEdit-Fragen
 
Vielen Dank, das erste funktioniert schon, danke NicoDE :mrgreen:!

aber mit dem 2. hab ich noch Probleme:

Jfheins, ich glaub der Link hilft mir nicht weiter, er zeigt doch nur wie man mit dem RichEditfeld scrollen kann...?

EM_AUTOURLDETECT kennt er nicht, "undefinierter Bezeichner"...

NicoDE 22. Sep 2004 19:38

Re: RichEdit-Fragen
 
Zitat:

Zitat von Lamy
EM_AUTOURLDETECT kennt er nicht, "undefinierter Bezeichner"...

Delphi-Quellcode:
uses
  RichEdit;

Lamy 22. Sep 2004 19:40

Re: RichEdit-Fragen
 
Ah ja, danke!

Allerdings reagiert er - wie du bereits gesagt hast - nicht auf Klicks aber ich werd mal nach EN_Link und WM_Notify suchen...

//EDIT:
Also, EN_Link ergibt nix, WM_Notify nur in sämtlichen Threads irgendein fachsimplerisches Gebrabbel was mir ungefähr...
gar nix sagt :roll:

Werd mal nach googlen...

Lamy 22. Sep 2004 19:58

Re: RichEdit-Fragen
 
So, hab hier mal was gefunden:

http://delphi.about.com/library/weekly/aa111803a.htm


Aber wie und wo binde ich nun den 2. Code ein? *nixmehrdavonkapiert*

jfheins 22. Sep 2004 20:03

Re: RichEdit-Fragen
 
Schau dir den thread nochmal genau an.
Dann findest du min. zwei Links.
Davon ist der eine:
http://www.swissdelphicenter.ch/de/showcode.php?id=1652

Lamy 22. Sep 2004 20:10

Re: RichEdit-Fragen
 
Ah ja, alles klar, danke!

Lamy

NicoDE 22. Sep 2004 20:20

Re: RichEdit-Fragen
 
Zu zweitens...

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, Forms, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure WmNotify(var Message: TWMNotify); message WM_NOTIFY;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  RichEdit, ShellAPI;

procedure TForm1.WmNotify(var Message: TWMNotify);
type
  PENLink = ^TENLink;
  TTextRange = TTextRangeA;
var
  Link: string;
  Text: TTextRange;
begin
  inherited;
  with Message do
    if (Result = Ord(False)) and Assigned(NMHdr) and (NMHdr.code = EN_LINK) then
      with PENLink(NMHdr)^ do
        if msg = WM_LBUTTONDOWN then
        begin
          SetLength(Link, chrg.cpMax - chrg.cpMin + 1);
          Link[1] := #0;
          Text.chrg := chrg;
          Text.lpstrText := PChar(Link);
          SendMessage(NMHdr.hwndFrom, EM_GETTEXTRANGE, 0, Integer(Addr(Text)));
          if StrLen(PChar(Link)) > 0 then
          begin
            ShellExecute(Handle, 'open', PChar(Link), nil, nil, SW_SHOWDEFAULT);
            Result := Ord(True);
          end;
        end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  with RichEdit1 do
  begin
    Perform(EM_AUTOURLDETECT, Ord(True), 0);
    Perform(EM_SETEVENTMASK, 0, Perform(EM_GETEVENTMASK, 0, 0) or ENM_LINK);
  end;
end;

end.
[edit] das kommt davon, wann man vor dem Abschicken des Beitrags noch schnell was essen geht *g* [/edit]


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