Link to home
Start Free TrialLog in
Avatar of emi_sastra
emi_sastra

asked on

PLUGIN PROBLEM

Hi All,

I usually call form using :

  Private Sub mnuSetupMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuSetupMenu.Click
        Dim strAppNo As String = ERV_Screen_Function.Get_App_No(sender, strMainMenuId, strMainMenuName)

        Dim clsFormAuthority As New clsFormAuthority(ERV_Global.strLoginUserID, _
                                                     strAppId, _
                                                     strMainMenuId, _
                                                     strMainMenuName, _
                                                     strAppNo, _
                                                     "TMUSERMENU", _
                                                     "USER MENU")

        If Not ERV_Global.Form_Active("frmTMUSERMENU", Me) Then
            If clsFormAuthority.blnAccess Then
                Dim frmTMUSERMENU As New frmTMUSERMENU()
                frmTMUSERMENU.clsFormAuthority = clsFormAuthority
                frmTMUSERMENU.MdiParent = Me
                frmTMUSERMENU.Show()
            End If
        End If
    End Sub

The form is inside the same project ?

Could I use the above method for form that came from plugin ?

The are several things that should aware at the plugin :

1. Connection.
2. Authority
3. Parameter

That usually there are no problem when it is inside the same project.

How could I  overcome this stuff ?

Thank you.
Avatar of Nasir Razzaq
Nasir Razzaq
Flag of United Kingdom of Great Britain and Northern Ireland image

You can create and show a form from plugin the same way you can any other object.

Not sure what you mean by the 3 items you listed. Are these some variables that the form needs access to? Can you not pass these to the form?
Avatar of emi_sastra
emi_sastra

ASKER

The are several things that should aware at the plugin :

1. Connection.
    Usually the form get variable from main application.

2. Authority
    frmTMUSERMENU.clsFormAuthority = clsFormAuthority

3. Parameter
    We need to show certain data for example.

Thank you.
Option Explicit On

Imports System.Data.SqlClient

Public Class frmTMUSERMENU

    Public clsFormAuthority As clsFormAuthority

End Sub
Is frmTMUSERMENU from plugin? If not, plugin form would need you to pass that information the same way you are currently passing. Are you writing the plugin?
- Is frmTMUSERMENU from plugin?
Currently not, but I am trying to do so. The sample above does not using plugin.

-If not, plugin form would need you to pass that information the same way you are currently passing.
Ok. Thus, there is not changing code at the plugin form ?

-Are you writing the plugin?
Currently not, but I am trying to do so.

Thank you.
Can you elaborate more on your requirements and why you are writing plugin? From information given, does not look like you need to make much changes.
- Can you elaborate more on your requirements and why you are writing plugin?
Generate different report for different company. I don't want to change the main application.

-From information given, does not look like you need to make much changes.
Why ?

Thank you.
>Why ?
Keep passing the same information to the form loaded from pluggin.
Would you please explain :

1. Form compiled to dll
2. Form using plugin
3. MEF

What makes them different ?

Thank you.
1. Class in DLL just like any other class
2. A technique which can be implemented by 1 and 3
3. A framework to implement a plugin.


Would you have multiple plugins (companies) for each installation or is it one per installation?
-Would you have multiple plugins (companies) for each installation or is it one per installation?
Don't get it. What makes it different ?

Thank you.
>Don't get it. What makes it different ?

There is a difference between having a different but only one DLL per installation vs having the possibility to load an infinite number of DLLs from a plugins folder based on some configuration/condition.

If its a single DLL, you can just keep one DLL per installation and load a form from it. On the source side, you will maintain that DLL for each company separately and then copy the correct DLL for the company when deploying.

If its multiple DLLs per installation, you need to add logic to load the correct DLL in current situation (company drop down on a form for example).
Ok. I think single dll is more simple to deploy. Is it correct ?
Does it mean, we just have one main application for all of the companies ?
Anything different just replace the dll (the plugin) ?

Thank you.
Ok. Back to the pluging problem :

1. Connection.
2. Authority
3. Parameter

How to communicate among Main App, Plugin and DLL Forms for the above stuff ?

Thank you.
Reference the DLL, create the form from DLL, and assign these values to properties of form.
- Reference the DLL
From where ? Main or Plugin ?

 - create the form from DLL
I am sorry, do not get it.

-and assign these values to properties of form.
I am sorry, do not get it too.

Thank you.
ASKER CERTIFIED SOLUTION
Avatar of Nasir Razzaq
Nasir Razzaq
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Great.

Thank you very much for your help.