当前位置:天才代写 > tutorial > C语言/C++ 教程 > BCB编程履历几则

BCB编程履历几则

2017-11-04 08:00 星期六 所属: C语言/C++ 教程 浏览:498

副标题#e#

问:怎么实现TRichEdit的自动滚行?象某些阅读器那样的成果。

答:用ScrollWindowEx可能ScrollWindowEx就可以了。

ScrollWindow(RichEdit1- >Handle, 0, -1, NULL, NULL); //向下滚1个像素

ScrollWindow(RichEdit1- >Handle, 0, 1, NULL, NULL); //向上滚1个像素

问:在下最近在本身编组件,凭据BCB的辅佐提示做好了图标,也凭据它的提示成立了接洽,

但就是看不到本身的图标,只有默认的!!!

答:用IMAGE EDITOR编辑DCR文件,记信图标名称必需和组件名称沟通,我说的是图标名称,不是文件名称。生成DCU文件后,用BRCC32.EXE对该DCR文件举办编译生成DCU文件,将DCU文件插手到BPK包中,编译、安装包应可以看到你廉价组件的包了。

问:物理删除记录,用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");
}

问:可否通过按钮利用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;


#p#副标题#e#

问: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);

问:[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;

问:请问有什么步伐使得子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();
}

#p#副标题#e#

问:[TTabSheet]怎么改变TabSheet标题部门的小矩形颜色。

小弟这样做的:

//TabSheet1- >PageControl = PageControl1;

TabSheet1- >Brush- >Color = clBlue;

上面的小矩形仍然为灰色。

PageControl1- >Brush- >Color = clBlue;

整个pagecontrol都变蓝色了,就是谁人小矩形还灰色。

答:OwnDraw=true;

#p#分页标题#e#

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);
}

问:我想写一个互斥量,可是怕和系统中的互斥量同名,有不有步伐便利系统中的互斥量?

答:看CreateMutex 的辅佐,假如你建设时返回ERROR_ALREADY_EXISTS,暗示已经存在了,你就再换一个名字建设啊。

 

    关键字:

天才代写-代写联系方式