暫定的においてみました。
http://delfusa.main.jp/temp/ReplaceText.zip
たぶん、これで大丈夫だと思うのですが、どうでしょうか。
試してみてください。
行頭文字指定は動きました。
単語単位指定や、大文字小文字対応も動くと思うんですが…
以下、
開発者にしか分からないですが、ソースはこんな感じ。
コンパイラをD2007からDelphiXEに変更したのですが、ちゃんと動いているみたい。
メイン抜粋
EmReplaceFlag :=
FLAG_FIND_REG_EXP or
FLAG_REPLACE_SEL_ONLY or
FLAG_REPLACE_ALL or
FLAG_FIND_NO_PROMPT or
FLAG_FIND_CLOSE;
if ReplaceFlagWord then {←単語単位指定}
begin
EmReplaceFlag := EmReplaceFlag or FLAG_FIND_ONLY_WORD;
end;
if ReplaceFlagCaseCompare = ccCaseSensitive then {←大小文字区別指定}
begin
EmReplaceFlag := EmReplaceFlag or FLAG_FIND_CASE;
end;
for i := 0 to Length(OldPatterns)-1 do
begin
Editor_ReplaceW_Delphi(hwnd,
OldPatterns, NewPatterns, EmReplaceFlag);
end;
Editor_ExecCommand(hwnd, EEID_ERASE_FIND_HILITE);
関数部分
procedure Editor_ReplaceW_Delphi(hwnd: HWND;
const OldPattern, NewPattern: WideString;
nFlags: Longword = FLAG_REPLACE_ALL+FLAG_REPLACE_SEL_ONLY);
var
WideStr: WideString;
begin
WideStr := OldPattern + #0 + NewPattern + #0;
Editor_ReplaceW(hwnd, nFlags,
PWideChar(WideStr));
{↓検索強調文字の解除}
// Editor_ExecCommand(hwnd,EEID_ERASE_FIND_HILITE);
end;