1 (edited by adiziktdy 2021-01-26 05:03:44)

Topic: [Решено] Собственный файл помощи

Как достучаться до свойства Form1.BorderIcons:=biHelp или по-другому: как подключить собственный файл помощи, не назначая действие кнопке Button1, например?

Спасибо.

Yana

Re: [Решено] Собственный файл помощи

Попробовала выйти из положения, создав собственное меню на главной форме

procedure MainForm_OnShow (Sender: TObject; Action: string);
var
   MyItem1: TMenuItem;
   MyItem2: TMenuItem;
   MySubItem3: TMenuItem;
   MySubItem4: TMenuItem;
begin
 Application.ProcessMessages;
     {$MySQL disable_connectdialog}
     MainForm.MySQLConnection.Server := '***.***.*.***';
     MainForm.MySQLConnection.Port := 3306;
     MainForm.MySQLConnection.Username := '****';
     MainForm.MySQLConnection.Password := '****';
     MainForm.MySQLConnection.Database := 'global';

     try
         MainForm.MySQLConnection.Connect;
     except
         MessageBox('Невозможно подсоединиться к базе данных.'+chr(13)+'Обратитесь к системному администратору.','Ошибка соединения',MB_OK+MB_ICONSTOP);
         MainForm.Close;
         Exit;
     end;
     begin
      if FindWindow(nil, APP_NAME) <> 0 then
          begin
              ShowMessage('Программа уже запущена. Используйте диспетчер задач [Ctrl+Alt+Del]'+CHR(13)+'для удаления некорректно закрытой программы из памяти ПК');
              MainForm.Close;
          end
     else begin
     if MainForm.MySQLConnection.Connected then
     begin
       UpdateDatabase(''); // to fill ComboBoxes
       MainForm.mniFile.Visible := False;                          //отключение системного меню
       MainForm.mniOptions.Visible := False;                       // -"-
       MainForm.mniAbout.Visible := False;                         // -"-
       MyItem2 := TMenuItem.Create (MainForm.MainMenu);
       MyItem2.Caption := 'Помощь по работе в АСУ';
       MySubItem3 := TMenuItem.Create (MainForm.MainMenu);
       MySubItem3.Caption := 'Скачать файл помощи на компьютер';
       MySubItem4 := TMenuItem.Create (MainForm.MainMenu);
       MySubItem4.Caption := 'Смотреть в формате PDF';
       MySubItem3.OnClick := @MenuClick3;
       MySubItem4.OnClick := @MenuClick4;
       MainForm.MainMenu.Items.Insert(0, MyItem2);
       MyItem2.Add(MySubItem3);
       MyItem2.Add(MySubItem4);
        end;
      end;
    end;
end;

Всё работает, но... После перехода на другое окно и возвращения на главную форму пункт дублируется почему-то
https://c.radikal.ru/c11/2101/76/4cac02c2b92d.png

Yana

Re: [Решено] Собственный файл помощи

попробуйте сравнить с этим примером выпадающего меню

http://myvisualdatabase.com/forum/viewtopic.php?id=5682

4 (edited by adiziktdy 2021-01-25 11:40:41)

Re: [Решено] Собственный файл помощи

Нужно было не вешать создание меню на событие OnShow главной формы, а вывести в отдельную процедуру и поместить её между

begin
end.



procedure CreateMenu;
var
   MyItem1: TMenuItem;
   MyItem2: TMenuItem;
   MySubItem3: TMenuItem;
   MySubItem4: TMenuItem;

begin
       MyItem2 := TMenuItem.Create (MainForm.MainMenu);
       MyItem2.Caption := 'Помощь по работе в АСУ';
       MySubItem3 := TMenuItem.Create (MainForm.MainMenu);
       MySubItem3.Caption := 'Скачать файл помощи на компьютер';
       MySubItem4 := TMenuItem.Create (MainForm.MainMenu);
       MySubItem4.Caption := 'Смотреть в формате PDF';
       MySubItem3.OnClick := @MenuClick3;
       MySubItem4.OnClick := @MenuClick4;
       MainForm.MainMenu.Items.Insert(0,MyItem2);
       MyItem2.Add(MySubItem3);
       MyItem2.Add(MySubItem4);
end;

begin
  CreateMenu;
end.
Yana