Avatar billede wolfcas Nybegynder
10. februar 2002 - 19:48 Der er 9 kommentarer og
2 løsninger

Erstat+søg ... Haster...!

Hej!
Jeg er igang med at lave en HTML Editor. Jeg bruger SynEdit. Jeg skal have lavet en søg +erstat funktion. Men hvordan?

/wolfcas
Avatar billede maxium Novice
10. februar 2002 - 20:03 #1
Avatar billede dkn Nybegynder
10. februar 2002 - 20:03 #2
Jeg vil tru det er nemmest at lave din egen replave dialog og så bare bruge:
SynEdit.lines.text := StringReplace(SynEdit.lines.text, 'text2replace', 'texten som det skal erstates med',[rfReplaceAll]);

Replace dilogen kan være svært at få til at virke
dkn
Avatar billede wolfcas Nybegynder
10. februar 2002 - 20:59 #3
hvad med søge funktionen? (undskyld vente-tiden...så rejseholdet)
Avatar billede stoney Nybegynder
10. februar 2002 - 22:37 #4
direkte fra hjælpen

procedure TForm1.Button1Click(Sender: TObject);

begin
  FindDialog1.Position := Point(RichEdit1.Left + RichEdit1.Width, RichEdit1.Top);
  FindDialog1.Execute;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
begin
  with RichEdit1 do
  begin
    { begin the search after the current selection if there is one }
    { otherwise, begin at the start of the text }
    if SelLength <> 0 then

      StartPos := SelStart + SelLength
    else

      StartPos := 0;

    { ToEnd is the length from StartPos to the end of the text in the rich edit control }

    ToEnd := Length(Text) - StartPos;

    FoundAt := FindText(FindDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
    if FoundAt <> -1 then
    begin
      SetFocus;
      SelStart := FoundAt;
      SelLength := Length(FindDialog1.FindText);
    end;
  end;
end;

Stoney
Avatar billede stone Forsker
10. februar 2002 - 23:20 #5
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    FindDialog1: TFindDialog;
    ReplaceDialog1: TReplaceDialog;
    MainMenu1: TMainMenu;
    Edit1: TMenuItem;
    Find1: TMenuItem;
    Replace1: TMenuItem;
    procedure Find1Click(Sender: TObject);
    procedure Replace1Click(Sender: TObject);
    procedure FindDialog1Find(Sender: TObject);
    procedure ReplaceDialog1Replace(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Find1Click(Sender: TObject);
begin
FindDialog1.FindText := RichEdit1.SelText;
FindDialog1.Execute;
end;

procedure TForm1.Replace1Click(Sender: TObject);
begin
ReplaceDialog1.FindText := RichEdit1.SelText;
ReplaceDialog1.Execute;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
var
st: TSearchTypes;
newpos: integer;
cd: TFindDialog;
begin

cd := (Sender as TFindDialog);

if frMatchCase in cd.Options then
  st := st+[stMatchCase];

if frWholeWord in cd.Options then
  st := st+[stWholeWord];

if RichEdit1.SelLength > 0 then
  RichEdit1.SelStart := RichEdit1.SelStart + 1;

newpos := RichEdit1.FindText(cd.FindText,
                    RichEdit1.SelStart,
                    Length(RichEdit1.Text),
                    st);

if newpos <> -1 then
  begin
  RichEdit1.SelStart := newpos;
  RichEdit1.SelLength := Length(cd.FindText);
  end
else
  begin
  MessageDlg('Færdig',mtInformation,[mbOK],0);
  RichEdit1.SelStart := 0;
  end;

end;

procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
begin
if RichEdit1.SelLength = 0 then
  FindDialog1Find(Sender)
else
  begin
  RichEdit1.SelText :=  ReplaceDialog1.ReplaceText;
  FindDialog1Find(Sender);
  end;

if frReplaceAll in ReplaceDialog1.Options then
  while (RichEdit1.SelLength <> 0) do
    ReplaceDialog1Replace(Sender);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
RichEdit1.SelStart := 0;
end;

end.
Avatar billede wolfcas Nybegynder
11. februar 2002 - 00:02 #6
virker ikke...info: jeg bruger synedit...(som sagt)
Avatar billede stoney Nybegynder
11. februar 2002 - 00:08 #7
Har du droppet en finddialog1 på din form og erstattet RichEdit1 med synedit eller hvad den nu hedder ?

Stoney
Avatar billede wolfcas Nybegynder
11. februar 2002 - 01:04 #8
ja...
Avatar billede wolfcas Nybegynder
11. februar 2002 - 01:05 #9
Den kan ikke tage: SelLength +SelStart ... Kun SelA(et eller andet) og SelText
Avatar billede wolfcas Nybegynder
11. februar 2002 - 14:34 #10
kan i virkelig ikke svare????
Avatar billede wolfcas Nybegynder
11. februar 2002 - 20:40 #11
nå men...stoney får 30 points (for at løse ½ af spm...)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester