Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 4)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

procedure TfmMain.LoadPlugins();
Var
  i, iDllHandle:integer;
  PlugExec        : procedure(sender :TObject) of object;
  PlugType        : function : integer;  //Объявление функции, которая будет возвращать тип плугина
  GetConnectInfo  : procedure(fbclient,DB:PChar;db_connected:boolean);
  GetUserData     : procedure(UID:integer;UserName:PChar);
  MenuCaption : function : PChar;
 
  //для вывода кнопки плагина
  act:         TAction;
  NewButton:   TdxBarButton;
  NewItemLink: TdxBarItemLink;
begin
  iDllHandleAreas  := 0;
  slPlagins        := TStringList.Create;
  slPlaginsHandles := TStringList.Create;
  Log(IncludeTrailingPathDelimiter(sAppPath2)+'Plugins\');
  FindPlugins(IncludeTrailingPathDelimiter(sAppPath2)+'Plugins\');
 
  Log('Найдено:' + IntToStr(slPlagins.Count));
  if slPlagins.Count <= 0 then begin
    FreeAndNil(slPlagins);
    exit;
  end;
  LOG(self.Name+' Загрузка плагинов');
  //если найдены плагины, то пытаемся их загрузить
  for I := 0 to slPlagins.Count - 1 do begin
    //iDllHandleAreas
    iDllHandle := LoadLibrary(PChar(slPlagins[i]));
    slPlaginsHandles.Add(IntToStr(iDllHandle));
 
    if iDllHandle <> 0 then begin
      @plugExec := GetProcAddress(iDllHandle,'PluginExec');
      @plugType := GetProcAddress(iDllHandle,'PluginType');
      @GetConnectInfo := GetProcAddress(iDllHandle,'GetConnectInfo');
      @GetUserData    := GetProcAddress(iDllHandle,'GetUserData');
 
      GetUserData(UserData.UserID,PChar(UserData.UserName));
      GetConnectInfo(PChar(DM.fibDB.LibraryName),PChar(DM.fibDB.DBName),DM.fibDB.TestConnected);
 
      NewButton             := TdxBarButton.Create(self);
 
      @MenuCaption    := GetProcAddress(iDllHandle,'MenuCaption');
      act             := TAction.Create(am1);
      act.ActionList  := am1;
      act.onExecute   := plugExec;
      act.caption     := MenuCaption;
      act.Hint        := MenuCaption;
      if MenuCaption = 'Участки [Make It! Innovations]' then
        iDllHandleAreas := iDllHandle;
 
      NewButton.Action  := act;
 
//раньше в главное
//PlugType возвращает индекс, по этому индексу определяем в какой пункт меню ставить новый пункт
      //      mmMainMenu.Items.Items[PlugType].Add(NewItem);
 
ДАЛЬШЕ НЕ МОГУ СООБРАЗИТЬ
 
//      NewItemLink           := MainMenu.ItemLinks.Add;
 
//      NewItemLink := MainMenu.ItemLinks.
 
//      if plugType = 3 then
//        NewItemLink  := mmApart.ItemLinks.Add;
 
      NewItemLink.Item := NewButton;
 
      Log(self.Name+' Плагин успешно загружен: '+MenuCaption);
 
    end;
  end;//for
end;

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 01:22 24-03-2010 | Исправлено: X11, 10:16 24-03-2010
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 4)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru