C++Komponent

Tags:    c++
Skrevet af Bruger #75 @ 16.06.2001
Lav komponenter til C++ Builder

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.


Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (1)

User
Bruger #8985 @ 17.09.08 21:01
Jeg synes, det er utroligt skod, at denne Mikkel B. Clemmensen kan oprette nogle korte artikler, hvor uforklaret kode fylder langt det meste, og så endda slippe afsted med points for "artiklen". Er 100 gode artikler ikke bedre end 200 med en masse dårlige iblandt? Jeg mener, udvikleren er da ikke ligefrem i underskud ang. artikler eller noget.

Get a grip, hvem der end accepterede denne artikel.
Du skal være logget ind for at skrive en kommentar.
t