Последняя версия DataExpress 3 beta от 12 февраля 2020 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

Системный трэй.

Предложения по новому функционалу и развитию существующего.
Morozbl4
Интересующийся
Сообщения: 95
Зарегистрирован: Ср дек 04, 2019 11:04 am
Благодарил (а): 50 раз
Поблагодарили: 3 раза

Системный трэй.

Сообщение Morozbl4 » Пт фев 07, 2020 11:33 am

Неплохо было бы предусмотреть возможность сворачивания в трэй.

Аватара пользователя
Develop-Soft
Сообщения: 1232
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 114 раз
Поблагодарили: 292 раза
Контактная информация:

Системный трэй.

Сообщение Develop-Soft » Пт фев 07, 2020 12:56 pm

Она есть, только надо кодить расширение...

Morozbl4
Интересующийся
Сообщения: 95
Зарегистрирован: Ср дек 04, 2019 11:04 am
Благодарил (а): 50 раз
Поблагодарили: 3 раза

Системный трэй.

Сообщение Morozbl4 » Вт фев 11, 2020 3:57 pm

Скрыл окно программы, так что стало видно только из диспетчера задач))) назад не разворачивается)

Код: Выделить всё

Application.MainForm.Hide; 

TTrayIcon насколько понимаю будет работать только если иконку куда-то приложить отдельно?

Vofka18
Опытный
Сообщения: 309
Зарегистрирован: Вс мар 04, 2018 4:54 pm
Благодарил (а): 19 раз
Поблагодарили: 26 раз

Системный трэй.

Сообщение Vofka18 » Вт фев 11, 2020 4:19 pm

Morozbl4 писал(а):Скрыл окно программы, так что стало видно только из диспетчера задач))) назад не разворачивается)

Код: Выделить всё

Application.MainForm.Hide; 

TTrayIcon насколько понимаю будет работать только если иконку куда-то приложить отдельно?

Вот как я реализовал иконку в трее. Только надо предусмотреть чтоб она удалялась при закрытии, а то так и будет висеть в трее.

Код: Выделить всё

const
  TrayIcoStr1 =' тут хранить иконки ';
  TrayIcoStr2 =' тут хранить иконки ';
  TrayIcoStr3 =' тут хранить иконки ';
var
  tIco:TTrayIcon;
  TrayPopup:TPopupMenu;
 
procedure IcoCreate();
var
  SS: TStringStream;
  myIcon:tIcon;
  Img: TdxImage;
  MI: TMenuItem;
begin
   //Load the tray icons.
  tIco:=TTrayIcon.create(nil);
  tIco.Icons := TImageList.Create(nil);

  MyIcon := TIcon.Create;
  SS := TStringStream.Create(DecodeBase64(TrayIcoStr3, False));
  MyIcon.LoadFromStream(SS);
  tIco.Icon.Assign(MyIcon);

  Img := TdxImage.Create(nil);
  SS := TStringStream.Create(DecodeBase64(TrayIcoStr1, False));
  Img.LoadFromStream(SS);
  //img.LoadFromFile('D:\Вова\DOWNLOAD\2.ico');
  tIco.Icons.Add(img.bitmap,nil);

  Img := TdxImage.Create(nil);
  SS := TStringStream.Create(DecodeBase64(TrayIcoStr3, False));
  Img.LoadFromStream(SS);
  //img.LoadFromFile('D:\Вова\DOWNLOAD\2.ico');
  tIco.Icons.Add(img.bitmap,nil);

  SS := TStringStream.Create(DecodeBase64(TrayIcoStr2, False));
  Img.LoadFromStream(SS);
  //img.LoadFromFile('D:\Вова\DOWNLOAD\22.ico');
  tIco.Icons.Add(img.bitmap,nil);

  Img := TdxImage.Create(nil);
  SS := TStringStream.Create(DecodeBase64(TrayIcoStr3, False));
  Img.LoadFromStream(SS);
  //img.LoadFromFile('D:\Вова\DOWNLOAD\2.ico');
  tIco.Icons.Add(img.bitmap,nil);

  // Set up a hint message and the animation interval.
  tIco.Hint := 'DataExpress Оповещания';
  tIco.AnimateInterval := 200;
  tIco.Animate:=true;

   //Set up a hint balloon.
  tIco.BalloonTitle := 'DataExpress Оповещания';
  tIco.BalloonHint :=
    'Оповещаний нет';
  tIco.BalloonFlags := bfInfo;
  tIco.BalloonTimeOut:=10000;
  tIco.ShowBalloonHint();

  tIco.visible:=true;
  tIco.ShowIcon:=true;


  TrayPopup := TPopupMenu.Create(tIco);

  MI := TMenuItem.Create(TrayPopup);
  MI.Caption := 'Добавить напоминание';
  //MI.OnClick := @Rem_AddBtnClick;
  TrayPopup.Items.Add(MI);

  MI := TMenuItem.Create(TrayPopup);
  MI.Caption := 'Перейти к форме';
  //MI.OnClick := @Rem_GoToFormBtnClick;
  TrayPopup.Items.Add(MI);

  MI := TMenuItem.Create(TrayPopup);
  MI.Caption := '-';
  TrayPopup.Items.Add(MI);

  tIco.PopUpMenu:=TrayPopup;

  ss.free;
  img.free;
  MyIcon.free;
end;

procedure onClose (Sender: TObject);
begin
  tico.free;
end; 

Morozbl4
Интересующийся
Сообщения: 95
Зарегистрирован: Ср дек 04, 2019 11:04 am
Благодарил (а): 50 раз
Поблагодарили: 3 раза

Системный трэй.

Сообщение Morozbl4 » Вт фев 11, 2020 4:35 pm

Vofka18 писал(а):Вот как я реализовал иконку в трее. Только надо предусмотреть чтоб она удалялась при закрытии, а то так и будет висеть в трее.

Да, я уже увидел, спасибо!)
Да пусть висит, тут основное - чтобы при нажатии на закрытие база не закрывалась, а просто с глаз исчезала %)

Vofka18
Опытный
Сообщения: 309
Зарегистрирован: Вс мар 04, 2018 4:54 pm
Благодарил (а): 19 раз
Поблагодарили: 26 раз

Системный трэй.

Сообщение Vofka18 » Вт фев 11, 2020 4:49 pm

Morozbl4 писал(а):
Vofka18 писал(а):Вот как я реализовал иконку в трее. Только надо предусмотреть чтоб она удалялась при закрытии, а то так и будет висеть в трее.

Да, я уже увидел, спасибо!)
Да пусть висит, тут основное - чтобы при нажатии на закрытие база не закрывалась, а просто с глаз исчезала %)

А так пробовали в модуле main? Правда надо поразбираться... ну а показывать через двойной клик по трею.

Код: Выделить всё


procedure close(Sender: TObject; var Action: TCloseAction);
begin
  action:=caMinimize;// или caHide
end; 

procedure Database_Open;
begin
  MainWindow.OnClose:=@close;
end;

Morozbl4
Интересующийся
Сообщения: 95
Зарегистрирован: Ср дек 04, 2019 11:04 am
Благодарил (а): 50 раз
Поблагодарили: 3 раза

Системный трэй.

Сообщение Morozbl4 » Вт фев 11, 2020 5:02 pm

Не, не пробовал)
Программист из меня - как из .... пуля :lol:
что-то совсем простое понимаю, чуть глубже уже нет)

Morozbl4
Интересующийся
Сообщения: 95
Зарегистрирован: Ср дек 04, 2019 11:04 am
Благодарил (а): 50 раз
Поблагодарили: 3 раза

Системный трэй.

Сообщение Morozbl4 » Чт фев 13, 2020 5:41 pm

В общем получилось как-то так:

Код: Выделить всё

var
  tIco:TTrayIcon;
  TrayPopup:TPopupMenu;

procedure open(Sender: TObject);
begin
   Application.MainForm.Show;
   tIco.free;
end;

procedure Close(Sender: TObject);
begin
   tIco.free;
   MainWindow.OnClose;
   MainWindow.Free;
end;

procedure Hide(Sender: TObject; var Action: TCloseAction);
var
  SS: TStringStream;
  myIcon:tIcon;
  Img: TdxImage;
  MI: TMenuItem;
begin
  tIco:=TTrayIcon.create(nil);
  tIco.Icons := TImageList.Create(nil);

  MyIcon := TIcon.Create;
  SS := TStringStream.Create(DecodeBase64(TrayIcoStr1, False));
  MyIcon.LoadFromStream(SS);
  tIco.Icon.Assign(MyIcon);

  Img := TdxImage.Create(nil);
  SS := TStringStream.Create(DecodeBase64(TrayIcoStr1, False));
  Img.LoadFromStream(SS);
  tIco.Icons.Add(img.bitmap,nil);

 // Set up a hint message and the animation interval.
  tIco.Hint := 'DataExpress';
  tIco.visible:=true;
  tIco.ShowIcon:=true;

  TrayPopup := TPopupMenu.Create(tIco);

  MI := TMenuItem.Create(TrayPopup);
  MI.Caption := 'Развернуть';
  MI.OnClick := @open;
  TrayPopup.Items.Add(MI);

  MI := TMenuItem.Create(TrayPopup);
  MI.Caption := '-';
  TrayPopup.Items.Add(MI);

  MI := TMenuItem.Create(TrayPopup);
  MI.Caption := 'Выйти';
  MI.OnClick := @close;
  TrayPopup.Items.Add(MI);

  tIco.PopUpMenu:=TrayPopup;
  tIco.Onclick := @open;
  ss.free;
  img.free;
  MyIcon.free;
  action:=caHide;
end;

procedure Database_Open;
begin
  MainWindow.OnClose :=@Hide;
end;     

Единственное - непонятно срабатывает закрытие приложения по кнопке выйти.


Вернуться в «Предложения по развитию проекта.»