Jeg bruger selv C++ Builder 3, så jeg ved ikke om denne artikel kan bruges i højere versioner, men det går jeg ud fra. I artiklen vil jeg forklare hvordan man kan lave komponenter til C++. Det er ret simpelt. I artiklen vil jeg vise hvordan man laver et komponent der vil poppe en MessageBox op på skærmen via funktionen Execute().
1. Først skal du åbne CBuilder, og vælge File og Close All
2. Vælg Component og New Component
3. Så kommer der et vindue frem der hedder New Component. Vælg TComponent i dropdown-boksen 'Ancestor type'
4. 'Class name' skal sættes til TMessageBox
5. 'Palette Page' til 'Standart'
6. 'Unit file name' til der hvor du vil have dine komponenter
7. Klik OK
8. Nu kommer Code Editoren frem, klik File og Save og gem CPP-filen i din komponentfolder lavet i trin 6
9. Klik File og Open og åben headeren til dit komponent (f.eks. TMessageBox.h)
10. Under 'private' i headeren tilføjer du String FText; således at det nu ser sådan her ud:
private:
String FText;
Dette gør at nu er Text tilføjet i Object Inspectoren når man makerer på vores komponent.
11. Under public tilføjer du bool __fastcall Execute(); Dette gør at funktionen Execute() er tilgængelig
12. Under __published tilføjer du:
__property String Text = {read=FText, write=FText};
13. Så kan du skifte faneblad i Code Editoren til CPPfilen
14. Så tilføjer du:
bool __fastcall TVlamikDialog::Execute()
{
ShowMessage(Text);
return true;
}
Som gør at når funktionen Execute() bliver kaldt viser den MessageBox med den tekst som brugeren har valgt i Object Inspectoren.
Nu skulle dit CPP dokument f.eks. gerne se ud som dette (Der har jeg kaldt komponentet for TVlamikDialog):
#pragma hdrstop
#include "VlamikDialog.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//
static inline void ValidCtrCheck(TVlamikDialog *)
{
new TVlamikDialog(NULL);
}
//---------------------------------------------------------------------------
__fastcall TVlamikDialog::TVlamikDialog(TComponent* Owner)
: TComponent(Owner)
{
}
//---------------------------------------------------------------------------
bool __fastcall TVlamikDialog::Execute()
{
ShowMessage(Text);
return true;
}
//---------------------------------------------------------------------------
namespace Vlamikdialog
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TVlamikDialog)};
RegisterComponents("Vlamik", classes, 0);
}
}
//---------------------------------------------------------------------------
15. Nu er vi faktisk færdige med koderiet. Gem det hele i din komponentfolder, og luk alt.
16. Vælg Component og Install Component
17. I vinduet som fremkommer skal du vælge fanebladet 'Into new package'
18. I 'Unit file name' browse til din komponentfolder og vælg CPPfilen
19. I 'Package file name' vælg det sted hvor du vil have din package med komponenter liggende
20. Skriv din beskrivelse af komponentet i 'Package desciption'
21. Klik OK
22. Lad den compile pakken og gem det og luk det hele bagefter
23. Vælg Component og Install Packages
24. Add TMessageBox.bpl eller hvad du nu har kaldt den
Hvis alt er gået godt kan du nu lave et program hvor du har droppet TMessageBox, eller hvad du nu har kaldt komponentet, og en TButton som har denne kode: MessageBox1->Execute();
Og så burde det virke!
PS: Du kan downloade sourcen i Download sektionen.