📄 o22.htm
字号:
(fMatchCase ?<br>
!strncmp(sz,
szFind, cchFind) :<br>
!strnicmp
(sz, szFind, cchFind)<br>
) & &<br>
( !fWholeWord || FWholeWord(sz,
szText, szTerm,cchFind)))<br>
{ SendMessage(MainForm ->
Memo1 -> Handle,EM_SETSEL, sz-szText, sz-szText + cchFind);<br>
if (!fNoScroll)<br>
SendMessage(MainForm
- > Memo1 - > Handle,EM_SCROLLCARET, 0, 0L);<br>
fFound = TRUE;<br>
break;<br>
}<br>
}<br>
if ( !fNoScroll & & !fFound)<br>
MessageBox(NULL, szFind, "字 符
串 没 有 找 到",MB_OK);<br>
return fFound;<br>
}<br>
VOID Replace(char * szReplace) {SendMessage(MainForm
- > Memo1 - > Handle,<br>
EM_REPLACESEL, 0, (LPARAM) (LPSTR) szReplace);<br>
}<br>
VOID ReplaceAll(char * szFind, char * szReplace, BOOLfMatchCase,
BOOL fWholeWord)<br>
{ UINT ichStart;<br>
UINT ichEnd;<br>
GETSEL(ichStart, ichEnd);<br>
SETSEL(0, 0);<br>
while(Find(szFind, TRUE, fMatchCase, fWholeWord,TRUE))
{<br>
Replace (szReplace);<br>
}<br>
SETSEL(ichStart, ichEnd);<br>
}<br>
VOID FindReplace(<br>
char * szFind, char * szReplace,<br>
FRT frt,<br>
BOOL fDown, BOOL fMatchCase,
BOOL fWholeWord)<br>
{ switch (frt)<br>
{ case frtFind:<br>
Find(szFind, fDown, fMatchCase,
fWholeWord,FALSE);<br>
break;<br>
case frtReplace:<br>
Find(szFind, fDown, fMatchCase,
fWholeWord,FALSE);<br>
Replace (szReplace);<br>
break;<br>
case frtRepAll:<br>
ReplaceAll(szFind, szReplace,
fMatchCase, fWholeWord);<br>
}<br>
}<br>
这些代码本来并不是给C++ Builder用的,但我们只要稍加改动就能使用了,这也为我们移植以前的代码提供了新思路,即一般只要将过去程序中的窗口或控制的句柄(HWND)用C++Builder中表单或组件的Handle属性来代替,将过去程序中的程序事例句柄用HInstance代替,就能方便的完成移植。回到程序中来,上面有5个函数和2个宏,其实我们直接使用的只有FindReplace函数。先在表单上放上FindDialog和ReplaceDialog两个对话框,随后写“查找(F)...”菜单项的处理代码:<br>
FindDialog1->Execute();<br>
你可能会很奇怪,这么简单,那查找的过程在哪里呢?当用户按了查找对话框的[查找下一个(F)]按钮后,会产生FindDialog的OnFind事件,在该事件的处理函数中进行查找工作。如何编写组件的事件函数?<br>
(1)在表单编辑区选中该组件(这里是FindDialog1);<br>
(2)在对象观察器(如果没有显示,按F11调出)中选择Event(事件),系统将列出事件;<br>
(3)双击事件后面的编辑框(这里是OnFind),系统将切换入代码编辑区;<br>
(4)输入事件处理代码。<br>
下面给出OnFind的处理代码:<br>
MainForm - > SerFocus();<br>
FindReplace(FindDialog1 - > FindText.c_str(), "", frtFind,<br>
FindDialog1 - > Options. Contains(frDown),<br>
FindDiaiog1 - > Options.Contains(frMatchCase),<br>
FindDialog1 - > Options.Contains(frWholeWord));<br>
同样的,“替换(&R)”菜单项处理代码是:<br>
ReplaceDialog1 - > Execute();<br>
ReplaceDialog1的onFind 事件的处理代码:<br>
MainForm - > SetFocus();<br>
if(ReplaceDialog1 - > Options.Contains(frFindNext))<br>
FindReplace(ReplaceDialog1 - > FindText.c_str(),"", frtFind,<br>
ReplaceDialog1 - > Options. Contains(frDown),<br>
ReplaceDialog1 - > Options. Contains(frMatchCase),<br>
ReplaceDialog1 - > Options. Contains(frWholeWord));<br>
ReplaceDialog1的onReplace 事件(用户按了[替换(R)]按钮)的处理代码:<br>
MainForm - > SetFocus ();<br>
if(ReplaceDialog1 - > Options. Contains (frReplace))<br>
FindReplace(ReplaceDialog1 - > FindText. c_str(),<br>
ReplaceDiaiog1 - > ReplaceText. c_str(), frtReplace,<br>
ReplaceDialog1 - > Options. Contains(frDown),<br>
ReplaceDialog1 - > Options. Contains(frMatchCase),<br>
ReplaceDialog1 - > Options. Contains(frWholeWord));<br>
else if(ReplaceDialog1 - > Options. Contains (frReplaceAll))//全部替换<br>
FindReplace(ReplaceDialog1 - > FindText.c_str(),<br>
ReplaceDialog1 - > ReplaceText, c_str(), frtRepAll,<br>
ReplaceDialog1 - > Options. Contains(frDown),<br>
ReplaceDialog1 - > Options. Contains(frMatchCase),<br>
ReplaceDialog1 - > Options. Contains(frWholeWord));<br>
当然,还有“查找下一个(N)”菜单项,处理的方法几乎和OnFind一样:<br>
FindReplace(FindDialog1 - > FindText. c_str(),"", frtFind,<br>
FindDialog1 - > Options. Contains (frDown),<br>
FindDialog1 - > Options. Contains (frMatchCase),<br>
FindDialog1 - > Options. Contains(frWholeWord));<br>
至此为止,终于真的“大”功告成了。至于“帮助(H)”菜单处理,你可以用WinHelp来显示一个帮助文<br>
件,用MessageBox来显示“关于XXX”的对话框,这些都不怎么和C++ Builder有关,我就不赘述了。<br>
最后还有些收尾工作,选择Project菜单Options,将显示一个程序设置的对话框。<br>
1.选择Application页面,这里Title是程序在任务栏上的标题,默认的是程序文件名。我们将它设为<br>
“我的记事本V1.00”。接着,单击[Load Icon...]按钮来为你的软件选择一个图标。<br>
2.选择Compiler页面,单击[Release]按钮,这样就不会向程序中插入调试代码而加快执行速度。<br>
3.选择Linker页面,取消对Use Dynamic RTL的选择,不使用动态链接库。<br>
4.选择Packages页面,取消对Build with runtime packages的选择,不使用运行时包。<br>
按OK退出后,选Project菜单中的Build NotePad来编译一下,你的第一个用C++ Builder3制作的称得上“软件”的程序终于诞生了。</font></td>
</tr>
</table>
<br>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -