敬业的IT人 >> 编程开发 >> C++Builder >> C++Builder代码片断

C++Builder代码片断

敬业的IT人 互联网 佚名 2008-1-3 21:24:48

  本文中包含了一些常用的代码片断,看看想想或许有他山之石可以攻玉的可能。

删除别名中所有的表、纯虚函数、虚函数、启动页面、指针、为指针解除引用、表的For循环
变量与常量的声明、检查表是否存在、组件的类名、剪贴板中的文字、字符流、检查表是否已打开
表的状态操作、改变PageControl的标签、向Query传递参数 日期属性 绘制状态条

删除别名中所有的表
void TData::CleanTemp()
{
  TStringList *myTables = new TStringList();
  TTable *Table = new TTable(this);
  try
  {
    Session->GetTableNames("Temp", "", True, False, myTables);
  }
  catch (...) {}
  // AnsiString str = myTables->GetText();
  // ShowMessage(str);
  for(int count=0; count < myTables->Count; count++)
  {
    Table->DatabaseName = "Temp";
    Table->TableName = myTables->Strings[count];
    Table->Close();
    Table->DeleteTable();
  }
  delete myTables;
  delete Table;
}

纯虚函数
//纯虚函数只在基类中出现,而在子类中必须有
//与其匹配的成员函数。程序中申明的子类的实例
//必须为基类中的每一个纯虚函数提供一个重载的成员函数。
class TBaseClass
{
  public:
  virtual void Display() = 0;
};
class TDerivedClass : public TBaseClass
{
  public:
  void Display() { ShowMessage("From Derived"); }
};
 
class TSecondDerivedClass : public TDerivedClass
{
  public:
  void Display() { ShowMessage("From Second Derived"); }
};
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  TDerivedClass dc; dc.Display();// "From Derived"
  TSecondDerivedClass sc; TBaseClass* bc = &sc;
  bc->Display(); // "From Second Derived"
}

虚函数
//虚函数作为其他类的父类的成员函数。
//如果继承子类成员函数中存在与父类成员函数完全相同的函数,
//子类中的成员函数永远有效。
class Base
{
public:
  virtual void Display() { ShowMessage("Base Class"); }
};
 
class DerivedOne : public Base
{
  public:
  void Display() { ShowMessage("DerivedOne"); }
};
 
class DerivedTwo : public Base
{
  public:
  void Display() { ShowMessage("DerivedTwo"); }
};
 
Base* pBases[10];
int count = 0;
DerivedOne aDerOne;
DerivedTwo aDerTwo;
pBases[count++] = &aDerOne;
pBases[count++] = &aDerTwo;
for( int i=0; i < count; i++ )
pBases[i]->Display();


启动页面
USEDATAMODULE("Datamod.cpp", DataModule);
USEFORM("about.cpp", AboutBox);
USEFORM("main.cpp", MainForm);
USEFORM("splash.cpp", SplashForm);
//---------------------------------------------------------------------------
#include "splash.h"
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
  try
  {
    SplashForm = new TSplashForm(Application);
    SplashForm->Show();
    SplashForm->Update();
    Application->Initialize();
    Application->Title = "Example of Loading Splash Form";
    Application->HelpFile = "SplashHelp.hlp";
    Application->CreateForm(__classid(TMainForm), &MainForm);
    Application->CreateForm(__classid(TDataModule), &DataModule);
    Application->CreateForm(__classid(TAboutBox), &AboutBox);
    SplashForm->Hide();
    SplashForm->Close();
    Application->Run();
  }
  catch (Exception &exception)
  {
    Application->ShowException(&exception);
  }
  return 0;
}


指针
int array[] = { 2, 4, 6, 8, 10}
int myInteger = array[3]; // 值为 8
 
// ----使用指针可以实现同样的功能 -----
int array[] = { 2, 4, 6, 8, 10}
int* myPtr = array;
int myInteger = myPtr[3]; // 值为8


为指针解除引用
int x = 32;
int* ptr = &x;
//解除指针的引用
//以获得内存位置的内容
int y = *ptr; // y = 32


表的For循环
void TDataModuleEmployee::ListNames( TStrings *Items )
{
  try
  {
    for ( TableAll->First(); !TableAll->Eof; TableAll->Next() )
    if ( TableAll->FieldByName("Deleted")->AsBoolean == false )
    Items->AddObject( TableAll->FieldByName("Name")->AsString, (TObject *)TableAll->FieldByName("Refnum")->AsInteger );
  }
  catch (Exception &e)
  {
    Application->ShowException(&e);
  };
}


变量与常量的声明
char ch;
int count = 1;
char* name = "csdn.net";
struct complex { float my, his;};
float real(complex* p) {return p->my};
const double pi = 3.1415926535897932385;
templetate abc(T a) { return a < 0 ? -a : a; };
enum WebSite { one, two, three, four};
int* a; // * 指针
char* p[20]; // [ ] 数组
void myFunction(int); // ( )函数
struct str { short length; char* p; };
char ch1 = 'a';
char* p = &ch1; // &引用 ,p保持着ch1的地址
char ch2 = *p; // ch2 = 'a'


检查表是否存在
#include "io.h"
if (access(Table1->TableName.c_str(),0)) //检查表是否存在
{ // 若不存在就创建 ...
  Table1->Active = false;
  Table1->TableType = ttParadox;
  Table1->FieldDefs->Clear();
  Table1->FieldDefs->Add("Myfield", ftString, 15, false);
  Table1->IndexDefs->Clear();
  Table1->CreateTable();
  Table1->Active = true;
}
else
  Table1->Active = true;


组件的类名
//找出丢失的组件类名
for(int i=0; i < ComponentCount; i++)
{
  if(String(dynamic_cast<TComponent&>(*Components[i]).Name) == "")
  {
    ShowMessage(Components[i]->ClassName());
  }
}


剪贴板中的文字
#include "memory.h" // 包含 auto_ptr<>
#include "clipbrd.hpp" //包含 TClipboard & Clipboard()
// 范例程序,包含了一个memo控件
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{ //创建 TStringList对象
  auto_ptr C
粤ICP备06119539号
Copyright CiscoSky.Org,Some Rights Reserved.
Email:me1228#tom.com