whats new ¦  programming tips ¦  indy articles ¦  intraweb articles ¦  informations ¦  links ¦  interviews
 misc ¦  tutorials ¦  Add&Win Game

Tips (1541)

Database (90)
Files (137)
Forms (107)
Graphic (114)
IDE (21)
Indy (5)
Internet / LAN (130)
IntraWeb (0)
Math (76)
Misc (126)
Multimedia (45)
Objects/
ActiveX (51)

OpenTools API (3)
Printing (35)
Strings (83)
System (266)
VCL (242)

Top15

Tips sort by
component


Search Tip

Add new Tip

Add&Win Game

Advertising

91 Visitors Online


 
...search in a TMemo using a TFindDialog?
Autor: P. Below
[ Print tip ]  

Tip Rating (45):  
     


  private
    
{ Private declarations }
    
FSelPos: integer;
  public
    
{ Public declarations }
  
end;

var
  
Form1 : TForm1;

implementation

{$R *.dfm}

procedure TForm1.FindDialog1Find(Sender : TObject);
var
  
S : string;
  startpos : integer;
begin
  with 
TFindDialog(Sender) do
  begin
    
{If the stored position is 0 this cannot be a find next. }
    
if FSelPos = 0 then
      
Options := Options - [frFindNext];

     { Figure out where to start the search and get the corresponding
       text from the memo. }
    
if frfindNext in Options then
    begin
      
{ This is a find next, start after the end of the last found word. }
      
StartPos := FSelPos + Length(Findtext);
      S := Copy(Memo1.Lines.Text, StartPos, MaxInt);
    end
    else
    begin
      
{ This is a find first, start at the, well, start. }
      
S := Memo1.Lines.Text;
      StartPos := 1;
    end;
    { Perform a global case-sensitive search for FindText in S }
    
FSelPos := Pos(FindText, S);
    if FSelPos > 0 then
    begin
       
{ Found something, correct position for the location of the start
         of search. }
      
FSelPos := FSelPos + StartPos - 1;
      Memo1.SelStart := FSelPos - 1;
      Memo1.SelLength := Length(FindText);
      Memo1.SetFocus;
    end
    else
    begin
      
{ No joy, show a message. }
      
if frfindNext in Options then
        
S := Concat('There are no further occurences of "', FindText,
          '" in Memo1.')
      else
        
S := Concat('Could not find "', FindText, '" in Memo1.');
      MessageDlg(S, mtError, [mbOK], 0);
    end;
  end;
end;

// Show the FindDialog
// Den FindDialog anzeigen

procedure TForm1.Button1Click(Sender : TObject);
begin
  
FSelPos := 0;
  FindDialog1.Execute;
end;

 

Rate this tip:

poor
very good


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners