Domanda

Io uso componente CoolTrayIcon, ma posso modificarlo hand.What che voglio realizzare è quello di aggiornare il testo nel fumetto ho appena creato, senza in realtà la creazione di un altro balloon.Problem è:

function TCoolTrayIcon.ShowBalloonHint(Title: String; Text: String;
  IconType: TBalloonHintIcon; TimeoutSecs: TBalloonHintTimeOut): Boolean;
// Show balloon hint. Return false if error.
const
  aBalloonIconTypes: array[TBalloonHintIcon] of Byte =
    (NIIF_NONE, NIIF_INFO, NIIF_WARNING, NIIF_ERROR);
begin
  // Remove old balloon hint
  HideBalloonHint;
  // Display new balloon hint
  with IconData do
  begin
    uFlags := uFlags or NIF_INFO;
    StrLCopy(szInfo, PChar(Text), SizeOf(szInfo)-1);
    StrLCopy(szInfoTitle, PChar(Title), SizeOf(szInfoTitle)-1);
    TimeoutOrVersion.uTimeout := TimeoutSecs * 1000;
    dwInfoFlags := aBalloonIconTypes[IconType];
  end;
  Result := ModifyIcon;
  { Remove NIF_INFO before next call to ModifyIcon (or the balloon hint will
    redisplay itself) }
  with IconData do
    uFlags := NIF_ICON + NIF_MESSAGE + NIF_TIP;
end;

function TCoolTrayIcon.HideBalloonHint: Boolean;
// Hide balloon hint. Return false if error.
begin
  with IconData do
  begin
    uFlags := uFlags or NIF_INFO;
    StrPCopy(szInfo, '');
  end;
  Result := ModifyIcon;
end;

function TCoolTrayIcon.ModifyIcon: Boolean;
// Change icon or tooltip if icon already placed
begin
  Result := False;
  if InitIcon then
    Result := Shell_NotifyIcon(NIM_MODIFY, @IconData);
end;

Ho pensato che il problema è nella funzione HideBalloonHint, ma ero wrong.I commentato la chiamata a HideBalloonHint a ShowBalloonHint in altri per aggiornare il testo, ma non ha funzionato.

Domanda: Come aggiornare solo il testo nel fumetto cassetto senza creare un altro palloncino

È stato utile?

Soluzione

Sembra che il tuo icona è impostato solo se InitIcon è vero. Cambia la procedura di modifyIcon a leggere:

function TCoolTrayIcon.ModifyIcon: Boolean;
// Change icon or tooltip if icon already placed
begin
  Result := Shell_NotifyIcon(NIM_MODIFY, @IconData);
end;

o impostare InitIcon su true prima di chiamare ModifyIcon.

Modifica - Il formato di registrazione utilizzato per @IconData è documentato sul sito MSDN con il Shell_NotifyIcon chiamata . Da quello che leggono le specifiche, si dovrebbe essere in grado di passare lo stesso record come originariamente inviato per aggiornare, dal momento che non funziona potrebbe essere necessario prendere un altro approccio.

Crea il "proprio" forma palloncino suggerimento, e posizionarlo poco più l'icona del compito, e aggiornarlo direttamente. Questo eliminerebbe le finestre multiple palloncino.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top