可以使用序号来查找解答, 比如想看第13号FAQ的解答, 查找'(13)'即可.
telnet/ssh登录用户的查找键是'/'.
(01) 能独立运行的Cbuilder可执行文件的生成
(02) 控制台程序的生成
(03) 编译连接工程的时候为什么出现“Error: expected a filename”或者
“Error: writing output file”?
(04) 为何新建的工程死活编译不过,并且存盘后关闭再打开则丢失.cpp文件?
(05) [Linker Error] '...\FILE.LIB' contains invalid OMF record,
type 0x21 (possibly COFF)
(06) 用BCB6.0新建了一个Application工程,什么都没有修改,运行了一次,出现
以下错误:
[Linker Error] Unresolved external 'WinMain' referenced from
D:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\C0W32.OBJ
[Linker Error] Unresolved external '_Form1' referenced from
C:\Projects\Project1.OBJ
(07) 怎么实现TRichEdit的自动滚行? 象某些阅读器那样的功能.
(08) 在下最近在自己编组件, 按照BCB的帮助提示做好了图标, 也按照它的提示建
立了联系, 但就是看不到自己的图标, 只有默认的!!!
(09) 物理删除记录,用ADO压缩Access2000库的方法?
(10) 能否通过按钮使用SQL创建一个名为a.db的文件?
(11) TMediaPlayer如何用MediaPlayer1播放mp3?
(12) [TRichedit]:如何带格式存储Richedit内容到Access?
(13) 请问有什么办法使得子Form一直留在最前面?
(14) [TTabSheet]怎么改变TabSheet标题部分的小矩形颜色.
(15) 问:我想写一个互斥量, 但是怕和系统中的互斥量同名, 有不有办法遍历系
统中的互斥量?
(01) 能独立运行的Cbuilder可执行文件的生成
首先选择Project菜单, 点击Options按钮, 弹出Project Options窗口.
然后选择Linker标签, 在Linking框中去掉Use dynamic RTL选项.
再选择Packages标签, 在Runtime packages框中去掉Build with runtime
packages, 选项compiler标签中release一下重新编译、连接, 即可生成能独立运
行的CBuilder可执行文件。
如果程序用的是CLX库, 还必须把C++Builder的qtintf.dll文件随程序拷贝过去.
(02) 控制台程序的生成
在File--New选项中有一个Console Wizard.
选择是C还是C++, 是否需要VCL库, 是否是多线程.
一般情况下选中C++和Console Application即可。
(03) 编译连接工程的时候为什么出现“Error: expected a filename”或者
“Error: writing output file”?
1、检查C++Builder安装路径; 检查工程中所有文件所在路径; 选择Project菜单的
Options项, 查看所有路径设置. 上述路径中不能包含中文, 也不能包含加号等特
殊字符。(不过, 安装UpdatePack4以后'+'字符不再引发此问题。)
2、编译输出目录不存在或有非法字符。
(04) 为何新建的工程死活编译不过,并且存盘后关闭再打开则丢失.cpp文件?
新建工程中一般都有一个[工程名].cpp文件, 所以工程名不能和其它单元文件名
相同, 否则就会出现.cpp文件名称相同而互相覆盖, 出现这个错误.
(05) [Linker Error] '.....\FILE.LIB' contains invalid OMF record, type
0x21 (possibly COFF)
VC的LIB不能在C++Builder中用. 如果是dll, 而且没有导出类, 可以用implib生成
新的.lib; 如果只有静态库, 则须用VC包装成DLL等形式才能在C++Builder中使用.
(06) 用BCB6.0新建了一个Application工程, 什么都没有修改, 运行了一次, 出现
以下错误:
[Linker Error] Unresolved external 'WinMain' referenced from
D:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\C0W32.OBJ
[Linker Error] Unresolved external '_Form1' referenced from
C:\Projects\Project1.OBJ
1、看看是不是工程名和某个文件名是不是重名。
2、在工程里光加了.h文件没加.cpp文件。
(07) 怎么实现TRichEdit的自动滚行? 象某些阅读器那样的功能.
答:用ScrollWindowEx或者ScrollWindowEx就可以了.
ScrollWindow(RichEdit1- >Handle, 0, -1, NULL, NULL); //向下滚1个像素
ScrollWindow(RichEdit1- >Handle, 0, 1, NULL, NULL); //向上滚1个像素
(08) 在下最近在自己编组件, 按照BCB的帮助提示做好了图标, 也按照它的提示建
立了联系, 但就是看不到自己的图标, 只有默认的!!!
答:用IMAGE EDITOR编辑DCR文件,记信图标名称必须和组件名称相同,我说的是
图标名称,不是文件名称。生成DCU文件后,用BRCC32.EXE对该DCR文件进行编译生
成DCU文件,将DCU文件加入到BPK包中,编译、安装包应可以看到你自制组件的包
了。
(09) 问:物理删除记录,用ADO压缩Access2000库的方法?
答:用ADO压缩Access2000库
#include "utilcls.h"
void CompactDatabase(String f1,String psw1, String f2,String psw2)
{
String Provider1="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ f1 + ";Jet OLEDB:Database Password=" + psw1;
String Provider2="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ f2 + ";Jet OLEDB:Database Password=" + psw2;
Variant Adoobj=Variant::CreateObject("JRO.JetEngine");
Adoobj.OleProcedure("CompactDatabase",Provider1,Provider2);
AdoObj.Clear();//释放ADO对象
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String f1="yhecdagl1.mdb"; // 源库1
String psw1="yhecdagl"; // 密码1
String f2="yhecdagl2.mdb"; // 新目的库2
String psw2="yhecdagl2"; // 新密码2
String dir=ExtractFilePath(Application->ExeName);
if(FileExists(f2))
DeleteFile(f2);
CompactDatabase(dir+f1,psw1,dir+f2,psw2);
ShowMessage("Finished");
}
(10) 问:能否通过按钮使用SQL创建一个名为a.db的文件?
答:这个db文件就是一个数据表,所以可以通过创建表的方式来创建。
通过SQL语句就可以了,通过SQL语句我们可以创建不仅仅是表,还有别的很多,如
字段等
Query1->Close;
Query1->DatabaseName="c:\temp";
Query1->SQL->Text="create table a.db (field1 varchar(10),field2
varchar(10))";
Query1->ExecSQL;
(11) 问:TMediaPlayer如何用MediaPlayer1播放mp3?
设备类型指定了好几种怎么都不行?MediaPlayer1->DeviceType 为dtCdAudio,
dtDAT,dtOther,dtSeqencer,dtWaveAudio,dtAutoSelect都不行!;应怎么做才行?
答:1.MediaPlayer本身是高用windows提供的dll来工作的,但是由于bcb不是
ms的,所以。。。在win98下的话,你可以查找到win.ini,在win.ini里修改东东就
行了。
[mci extensions]
mp3=MPEGVideo
2.你可以用SndPlaySound函数来播放
char *tStream=new char...;
可以先用TFileStream把文件读到内存中,Read到tStream中
SndPlaySound(tStream,SND_MEMORY);
(12) 问:[TRichedit]:如何带格式存储Richedit内容到Access?
答:用AnsiString!!!!
具体方法如下,设保存RichEdit的字段为RichField:
TStringStream *pms=new TStringStream(NULL);
TStringList *StrList=new TStringList();
RichEditContent->Lines->SaveToStream(pms);
pms->Position = 0;
StrList->LoadFromStream(pms);
RichField->AsString=StrList->Text;
(13) 问:请问有什么办法使得子form一直留在最前面?
答:主要是重载Form的虚拟函数CreateParams,
改变TCreateParams的成员WndParent
就可以了
class TForm2 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
protected:
virtual void __fastcall CreateParams(TCreateParams & Param);
public: // User declarations
__fastcall TForm2(TComponent* Owner);
};
void __fastcall TForm2::CreateParams(TCreateParams & Param)
{
//调用基类的函数
TForm::CreateParams(Param);
Param.ExStyle |= WS_EX_TOPMOST;
//这儿最关键的是只要Param.WndParent不是Application- >Handle就可以了,
//不一定非要用GetDesktopWindow(), 用其它的窗口也可以。
Param.WndParent = GetDesktopWindow();
}
(14) 问:[TTabSheet]怎么改变TabSheet标题部分的小矩形颜色。
小弟这样做的:
//TabSheet1- >PageControl = PageControl1;
TabSheet1- >Brush- >Color = clBlue;
上面的小矩形仍然为灰色。
PageControl1- >Brush- >Color = clBlue;
整个pagecontrol都变蓝色了,就是那个小矩形还灰色。
答:OwnDraw=true;
void __fastcall TForm1::TabControl1DrawTab(TCustomTabControl *Control,
int TabIndex, const TRect &Rect, bool Active)
{
Control- >Canvas- >Brush- >Color=clRed;
Control- >Canvas- >Rectangle(Rect);
}
-----------------------------------------
PageControl也差不多,如果要不同的TabSheet有不同的颜色,可以判断TabIndex
void __fastcall TForm1::PageControl1DrawTab(TCustomTabControl *Control,
int TabIndex, const TRect &Rect, bool Active)
{
Control- >Canvas- >Brush- >Color=clGreen;
Control- >Canvas- >Pen- >Color=clGreen;
Control- >Canvas- >Rectangle(Rect);
}
(15) 问:我想写一个互斥量, 但是怕和系统中的互斥量同名, 有不有办法遍历系
统中的互斥量?
答:看 CreateMutex 的帮助, 使用某个GUID, 就可以做到没有重名.
--
修改:risesunshine FROM 210.32.0.*
FROM 210.32.0.*