Главная страница | назад

Article #17457: Exporting a Form as A class

 Question and Answer Database

FAQ2457C.txt   Exporting a Form as A class
Category   :VCL
Platform    :All
Product    :C++Builder  3.x

I've an application which have a lot of Forms (about 20), and I would like
to convert all the files to DLL but how can I include all the Forms which I
already created at design time?

OK.  Here's a simple example.....   Everybody got their IDEs ready?

1. Create a new DLL project (File | New | DLL).

2. Add a new form to the project (click on the new form speed button).

3. Add a TLabel to the form.

4. Add the following to the Unit1.h file, just after all the #include

#define EXPORT_CLASS __declspec(dllexport)
#define EXPORT_CLASS __declspec(dllimport)

5. Now, add EXPORT_CLASS just in front of your form class declaration and
add a Setlabel method so that your declaration looks like this:

EXPORT_CLASS class TForm1 : public TForm
__published:    // IDE-managed Components
    TLabel *Label1;
private:        // User declarations
public:         // User declarations
    void SetLabel(char const *);
    __fastcall TForm1(TComponent* Owner);

6. Edit Unit1.cpp, and add the following, right before you include Unit1.h:


7. Add the SetLabel implementation:

void TForm1::SetLabel(char const *label)
    Label1->Caption = label;

8. Add the form header to the .dll source file and add the following
   to the DllEntryPoint() fnc:

    case DLL_PROCESS_ATTACH : Form2 = new TForm2(NULL);

    case DLL_PROCESS_DETACH : delete Form2;
  return 1;

8. Build the DLL (Project | Make)

9. The ide will genererate a .lib file that you can include in 
   another application to use the form.

An example of a function in a test app might look like this:

void __fastcall TMyTestAppForm::Button1Click(TObject *Sender)
  Form2->SetLabel("Some bit of text.");

7/2/98 10:32:32 AM

Last Modified: 01-SEP-99