Q&A

  • FindDialog에 대한 질문입니다.
procedure TFORM1.FindDialog1Find(Sender: TObject);
var
   i, j, PosReturn, SkipChar : integer;
   PosY, PosX : integer;
   Options : TSearchTypes;
   nPos : integer;
   Dlg : TFindDialog;
   SerchText, sPC : string;
begin
   Dlg := TFindDialog(Sender);
   Dlg.FindText := 'SVC(';
   Options := [];
   if frWholeWord in Dlg.Options then Options := Options + [stWholeWord];  
   if frMatchCase in Dlg.Options then Options := Options + [stMatchCase];  
   with RichEdit1 do begin
      if SelLength <> 0 then
      begin
         SelStart  := SelStart + SelLength;
         SelLength := 0;
      end;
      nPos := FindText(Dlg.FindText, SelStart, GetTextLen, Options);
      if nPos = -1 then begin
         if ListBox1.count = ListBox1.ItemIndex + 1 then    
            Dlg.CloseDialog;
         ListBox1.ItemIndex := ListBox1.ItemIndex + 1;      
         ListBox1.OnClick(sender);
         BitBtn2.OnClick(sender);
      end else begin
         SetFocus;
         SelStart := nPos;        
         PosX := CaretPos.X;    
         PosY := CaretPos.Y;  
         SerchText := Lines.Strings[PosY];      
         sPC := Copy(SerchText,PosX+Length(Dlg.FindText)+2,12);    
         if (Copy(sPC,12,1) = '''') then                          
            sPC := Copy(SerchText,PosX+Length(Dlg.FindText)+2,11);
         SelLength := Length(Dlg.FindText);
         Perform(EM_SCROLLCARET, 0, 0);
     for I := 0 to Lines.Count do
            SetFocus;
            ListBox2.Items.Add(sPC);
            ListBox2.Perform(EM_LINESCROLL,0,ListBox2.Count);
      end;
   end;
end;

위 소스는 ListBox1에 있는 파일명으로 RichEdit1에 파일내용을 뿌리고

거기서 찾고자 하는 내용을 검색해서 ListBox2에 뿌리는 건데요...

일단은 찾기 버튼을 누르면 뿌려집니다.

찾고자 하는 단어는 위에다가 지정했구요.

근데 ListBox1에 파일이 여러개일때 찾고자 하는 단어가 동일하다면
  
FindDialog의 찾기버튼을 누르지 않고 ListBox1의 파일명에 관련된 단어를 전부 뿌리고 싶어요...

그러니까 다른 콤포넌트의 OnClick 처럼 자동으로 찾기버튼을 눌렀으면 좋겠는데 ...넘 황당한가요..

여기저기 뒤져봤는데 도통 모르겠어서 이렇게 질문드립니다...
0  COMMENTS