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 처럼 자동으로 찾기버튼을 눌렀으면 좋겠는데 ...넘 황당한가요..
여기저기 뒤져봤는데 도통 모르겠어서 이렇게 질문드립니다...