Jump to content

Вызов add-in из карты данных


Recommended Posts

Loginsan

Доброго времени суток! При изучении данного вопроса столкнулся с такой проблемой: не получается вызвать окно сообщения/форму при нажатии по кнопке в карте данных. Пример из руководства с вызовом Add-in работает, но если я пытаюсь просто вызвать окно сообщения (Например: 

                EdmVault5 vault = default(EdmVault5);
                vault = (EdmVault5)poCmd.mpoVault;
                vault.MsgBox(poCmd.mlParentWnd, "Окно сообщения");
) то ничего не происходит. В чём может быть проблема? Код на С# ниже. В самой кнопке Имя вызываемого add-in приложения "MyButton:Title"(как в руководстве).
 

using EdmLib;
using Microsoft.VisualBasic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TestAddIn
{
    
    [ComVisible(true)]
    [Guid("9D17B8F8-AE3D-470B-8228-48F83F415B1D")]
    public class TestAddIn : IEdmAddIn5
    {

        public void GetAddInInfo(ref EdmAddInInfo poInfo, IEdmVault5 poVault, IEdmCmdMgr5 poCmdMgr)
        {

            poInfo.mbsAddInName = "Тест";
            poInfo.mbsCompany = "Тест";
            poInfo.mbsDescription = "Тест";
            poInfo.mlAddInVersion = 1;


            poInfo.mlRequiredVersionMajor = 1;
            poInfo.mlRequiredVersionMinor = 1;

            //Notify the add-in when a file data card button is clicked
            poCmdMgr.AddHook(EdmCmdType.EdmCmd_CardButton);
        }

        public void OnCmd(ref EdmCmd poCmd, ref Array ppoData)
        {

            //Respond only to a specific button command
            //The button command to respond to begins with "MyButton:" and ends with the name of the 
            //variable to update in the card 
            if (Strings.Left(poCmd.mbsComment, 9) == "MyButton:")
            {

                EdmVault5 vault = default(EdmVault5);
                vault = (EdmVault5)poCmd.mpoVault;
                vault.MsgBox(poCmd.mlParentWnd, "Окно сообщения");
            }  
        }
    }
}

 

 

Link to post
Share on other sites


UnPinned posts
streamdown
2 часа назад, Loginsan сказал:

то ничего не происходит

а вы кнопке в карточке правильно прописали вызов? 

а сам аддон зарегистрирован без ошибок?

Link to post
Share on other sites
Loginsan
3 минуты назад, streamdown сказал:

а вы кнопке в карточке правильно прописали вызов? 

а сам аддон зарегистрирован без ошибок?

Да. Я попробовал вызвать класс с формой (См. ниже). И это работает. Но почему со стандартным окном оповещения работать не хочет я так и не понял.

if (Strings.Left(poCmd.mbsComment, 9) == "MyButton:")
{

                Form1 Form = new Form1();
                Application.Run(Form);

}

Link to post
Share on other sites
streamdown

Возможно, mlParentWnd равно нулю.

вызывайте штатное NET сообщение

MessageBox.Show("Юхууу");

Собственно, тут проблема может быть в том, что MessageBox будет показан ЗА проводником.

Так это, а отладчиком то чего не пройдётесь?

Так же, вот это сделали на проекте?

    1. On the Build tab, select Any CPU for Platform target, de-select Prefer 32-bit, and select Register for COM interop.

Edited by streamdown
  • Нравится 1
Link to post
Share on other sites
Loginsan
18 минут назад, streamdown сказал:

Возможно, mlParentWnd равно нулю.

вызывайте штатное NET сообщение

MessageBox.Show("Юхууу");

Собственно, тут проблема может быть в том, что MessageBox будет показан ЗА проводником.

Так это, а отладчиком то чего не пройдётесь?

Так же, вот это сделали на проекте?

    1. On the Build tab, select Any CPU for Platform target, de-select Prefer 32-bit, and select Register for COM interop.

ДотНетовский тоже пробовал. В конфиге проекта указывал Any CPU. Самое интересное, что сейчас заработали оба варианта))) (ДотНетовский и который я скидывал до этого. Магия PDM?????)

Link to post
Share on other sites
streamdown

Кэш чистили? Как только добавляете аддон в хранилище, он локально тусуется, пока не очистится кэш. Т.е. перекомпиляция и передобавление иногда не помогают.

Сделайте батник. И при изменении кода и заново помещении аддона в приложения, запускайте его.

TASKKILL /F /IM explorer.exe
TASKKILL /F /IM EdmServer.exe
TASKKILL /F /IM ConisioAdmin.exe
TASKKILL /F /IM AddInSrv.exe

START explorer.exe

 

Edited by streamdown
  • Нравится 1
Link to post
Share on other sites
Loginsan
14.05.2022 в 22:33, streamdown сказал:

Кэш чистили? Как только добавляете аддон в хранилище, он локально тусуется, пока не очистится кэш. Т.е. перекомпиляция и передобавление иногда не помогают.

Сделайте батник. И при изменении кода и заново помещении аддона в приложения, запускайте его.


TASKKILL /F /IM explorer.exe
TASKKILL /F /IM EdmServer.exe
TASKKILL /F /IM ConisioAdmin.exe
TASKKILL /F /IM AddInSrv.exe

START explorer.exe

 

Я перезагружал комп) За батник благодарю!!!
P.S. Может знаете как получить путь к файлу, из карты данных которого вызывается add-in?

Link to post
Share on other sites
Loginsan
2 часа назад, Loginsan сказал:

Я перезагружал комп) За батник благодарю!!!
P.S. Может знаете как получить путь к файлу, из карты данных которого вызывается add-in?

Решил вопрос через poCmd.mlCurrentFolderID, но может есть какие-то изящные способы (получить путь не из БД)?

Link to post
Share on other sites
streamdown
19 минут назад, Loginsan сказал:

получить путь не из БД

Вся PDM - это обёртка над БД, включая API.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.



×
×
  • Create New...