Avatar billede izemate Nybegynder
03. maj 2003 - 17:15 Der er 16 kommentarer og
1 løsning

FindDialog1 ?

Hejsa :)
Jeg skal bruge et simpelt søge funktion via FindDialog

Jeg bruger SynEdit1 istedet for RichEdit.. men hvis i ikke kender SynEdit så prøv bare at poste som var det et RichEdit..


<\\izemate
Avatar billede mortrr Praktikant
03. maj 2003 - 17:47 #1
Der er ellers et udemærket eksempel i Delphi's hjælp.

This example requires a TRichEdit, a TButton, and a TFindDialog.
Clicking the button click will display a Find Dialog to the right of the edit control.  Filling in the "Find what" text and pressing the Find Next button will select the first matching string in the Rich Edit control that follows the previous selection.

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;
Avatar billede izemate Nybegynder
03. maj 2003 - 17:52 #2
desværre det kan ikke køre med SynEdit :( andre ?
Avatar billede mortrr Praktikant
03. maj 2003 - 18:25 #3
FindText:=FindDialog1.FindText;
SynEdit1.SearchReplace(FindText,'',[]);
Avatar billede izemate Nybegynder
03. maj 2003 - 18:39 #4
Mortrr hvor skal den kode smides henne ? ved søg knappen ?
Avatar billede mortrr Praktikant
03. maj 2003 - 18:41 #5
Nåh ja.
I eventen Find på FindDialog1
Avatar billede izemate Nybegynder
03. maj 2003 - 18:50 #6
hmm du må undskylde mig, men jeg er newbi,, du kunne vel ikke "sende"kode lige som det overstående ?
Avatar billede mortrr Praktikant
03. maj 2003 - 19:13 #7
Jeg har lige lagt søgning bagud med, og Match-case. Fx som:

var
findOptions: TSynSearchOptions;

procedure TForm1.FindDialog1Find(Sender: TObject);
var FindText:string;
begin
FindText:=FindDialog1.FindText;
if not (frDown in FindDialog1.Options) then
  include(findOptions,ssoBackwards);
if frMatchCase in FindDialog1.Options then
  include(findOptions,ssoMatchCase);
SynEdit1.SearchReplace(FindText,'',findOptions);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  findOptions:=[];
  FindDialog1.Execute;
end;
Avatar billede mortrr Praktikant
03. maj 2003 - 19:14 #8
Det må vel så kaldes et svar. ;-)
Avatar billede izemate Nybegynder
03. maj 2003 - 19:17 #9
hmm jeg får ikke fejl eller noget men den markere ikke det ord man søger på eller noget ?
Avatar billede mortrr Praktikant
03. maj 2003 - 19:24 #10
Har du valgt proceduren FindDialog1Find i eventen Find på FindDialog1?
Avatar billede izemate Nybegynder
03. maj 2003 - 19:29 #11
det ser sådan ud..

procedure TForm1.FindDialog1Find(Sender: TObject);
var FindText:string;
begin
FindText:=FindDialog1.FindText;
if not (frDown in FindDialog1.Options) then
  include(findOptions,ssoBackwards);
if frMatchCase in FindDialog1.Options then
  include(findOptions,ssoMatchCase);
SynEdit1.SearchReplace(FindText,'',findOptions);
end;


procedure TForm1.ToolButton70Click(Sender: TObject);
begin
findOptions:=[];
  FindDialog1.Execute;

end;


også en procedure FindDialog1Find(Sender: TObject); under 'var' i toppen
Avatar billede mortrr Praktikant
03. maj 2003 - 19:40 #12
Har du 2 procedurer der hedder FindDialog1Find?
Du skal jo have koden fra den FindDialog1Find jeg viste, i den procedure der kaldes ved eventen Find på din FindDialog

Eller kan du klikke lige så meget du lyster.
Avatar billede izemate Nybegynder
03. maj 2003 - 20:56 #13
okay hvis jeg fjerner det jeg skrev for neden i kommentaren burde det så ikke virke ?
Avatar billede mortrr Praktikant
04. maj 2003 - 01:41 #14
Det er en start, men du skal stadig sætte eventen.
Vælg din FindDialog, og se under Events i Object Inspector.
Ud for OnFind eventen skal du vælge FindDialog1Find.
Så burde det virke.
Avatar billede izemate Nybegynder
27. maj 2003 - 19:24 #15
Virkede desværre ikke :(
Avatar billede izemate Nybegynder
27. maj 2003 - 19:25 #16
.
Avatar billede mortrr Praktikant
27. maj 2003 - 21:10 #17
Så var det nok på tide du lærte at programmere.
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