Come aggiornare il testo in un vassoio fumetto icona a mano?
-
19-09-2019 - |
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
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.