Avatar billede armena Nybegynder
23. juni 2002 - 21:53 Der er 7 kommentarer og
1 løsning

søge/find

Hej.. Jeg er igang med en html program.. Hvad er koden til at søge efter et ord.. Altså jeg have finddialog og koden til at få den til at søge/finde...

Det ville være dejligt med lidt hjælp.:)

Avatar billede sprox Nybegynder
23. juni 2002 - 22:57 #1
Hej :D?

Her et et lille eksempel på hvordan man kan bruger Finddialogen.
(Taget fra delphis hjælpefil)
Hvis der er noget du er i tvivl om eller ikke kan finde ud af, så skriv en mail til michaelriis@ofir.dk

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 stone Forsker
23. juni 2002 - 22:57 #2
I nedenstående kode har jeg brugt FindDialog og ReplaceDialog

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 armena Nybegynder
24. juni 2002 - 19:43 #3
jeg ikke åbne kode vinduet for Finddialog1... hjælp lige
Avatar billede stone Forsker
24. juni 2002 - 21:08 #4
tryk på Finddialog1, ud til venstre har du object inspector, tryk på Event
og under "OnFind" indsætter du koden.
Avatar billede armena Nybegynder
25. juni 2002 - 12:51 #5
stone> Det kan jeg ikke.. Jeg tror altså ikke at den skal stå der.. Er du sikker??
Avatar billede stone Forsker
25. juni 2002 - 18:16 #6
Den her kode skriver du i den onclick event som skal udfører den - f.eks knap eller menu:

FindDialog1.FindText := RichEdit1.SelText;
FindDialog1.Execute;

den her kode skriver du i Finddialog's event under OnFind:

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;

Resten af koden er hvis du vil erstatte ord - hvis du ikke vil bruge den kan du bare droppe den. Den har ingen forbindelse til Finddialogen.

er der stadig problemer kan jeg sende dig et eksempel i brugen af finddialogen.
mail: steenlarsne@it.dk
vh
stone
Avatar billede armena Nybegynder
25. juni 2002 - 18:37 #7
Stone>> Kontakt mig lige i ICQ.. ICQ: 160919299.. Har problemer med det der finddialog
Avatar billede stone Forsker
25. juni 2002 - 23:49 #8
har ik icq!!!

fejl i den ovenstående skrevne email: steenlarsen@it.dk
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