Delphi 5 - comando dopo taskbar

di Anonimizzato24685 il
25 risposte
Salve a tutti. richiesta di aiuto:

clicco sul pulsante "hide on system tray".
l'applicazione si nasconde e appare l'icona nella system tray.
clicco sull'icona nella system tray.
l'applicazione si mostra ed esegue il comando:

procedure TForm1.FormShow(Sender: TObject);
begin
ShowMessage('ciao');
end;

-

clicco sul pulsante minimize delle BorderIcons.
l'applicazione si nasconde nella taskbar.
clicco sul pulsante nella taskbar per far apparire l'applicazione ...e quando appare vorrei far eseguire lo stesso comando.

25 Risposte

  • Ciao,

    se lo showmessage te lo fa al primo giro non vedo perchè non te lo debba fare anche nel secondo, mi sembra la stessa cosa che fai.

    Ciao.
  • Ciao,

    no, nel primo giro faccio click sull'icona nella system tray, nel secondo giro faccio click sul tasto (relativo alla mia applicazione) sulla taskbar.
  • Quindi sul primo può funzionare il "OnShow", mentre sul secondo forse bisogna lavorare su qualcosa tipo "SIZE_RESTORED" o altro.
    evidentemente il "minimize" non è un "hide".
  • gabbiano ha scritto:


    Quindi sul primo può funzionare il "OnShow", mentre sul secondo forse bisogna lavorare su qualcosa tipo "SIZE_RESTORED" o altro.
    evidentemente il "minimize" non è un "hide".
    Che io mi ricordo, almeno quando feci ai tempi un qualcosa del genere, il programma stava solo nella tray bar, prova eventualmente a spostare la showmessage nell'evento activate del form per vedere se cambia qualcosa.

    Ciao.
  • Il programma sta SOLO nella systemtray quando gli do il comando di nascondersi nella systemtray.
    e sta SOLO nella taskbar quando gli do il comando di nascondersi nella taskbar (usando la BorderIcon del minimize).

    provato già Activate ma non va
  • gabbiano ha scritto:


    Il programma sta SOLO nella systemtray quando gli do il comando di nascondersi nella systemtray.
    e sta SOLO nella taskbar quando gli do il comando di nascondersi nella taskbar (usando la BorderIcon del minimize).
    provato già Activate ma non va
    Se lo showmessage lo sposti nell'evento FormPaint dovrebbe funzionare.
  • Scusa ma non capisco bene cosa vuoi fare, prova ad esplicirarlo
  • Grande Doctorj, con FormPaint ha funzionato. grazie
  • Personalmente scrivere qualcosa nell'evento OnFormPaint, che non sia legato al disegno stesso della form, lo escluderei a priori.
    Come ha detto +m2+ se provi a raccontarci cosa vuoi fare forse qualche altra idea salta fuori.
  • Wolfen ha scritto:


    Personalmente scrivere qualcosa nell'evento OnFormPaint, che non sia legato al disegno stesso della form, lo escluderei a priori.
    Come ha detto +m2+ se provi a raccontarci cosa vuoi fare forse qualche altra idea salta fuori.
    Rispondo a gabbiano, personalmente ho dato la "soluzione" più facile che mi è venuta in mente, ma sono pienamente d'accordo con +m2+ e Wolfen nel dirti che magari non è la soluzione perfetta dato che potrebbe implicare altri comportamenti imprevedibili, il tutto detto senza sapere bene cosa vuoi fare e senza conoscere il tuo programma.

    Ciao.
  • gabbiano ha scritto:


    Quindi sul primo può funzionare il "OnShow", mentre sul secondo forse bisogna lavorare su qualcosa tipo "SIZE_RESTORED" o altro.
    evidentemente il "minimize" non è un "hide".
    Guarda che ci eri vicino. Io non userei onpaint a meno che non devi ridisegnare qualcosa sulla form

    Puoi catturare il messaggio di restore, come appunto avevi intuito.
    Per esempio così
    procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
    begin
      if (Message.CmdType and $FFF0 = SC_RESTORE) then
        ShowMessage('ciao');
      inherited;
    end;
  • Salve ragazzi, scusate la lunga assenza causa mamme ospedalate.
    infatti il FormPaint mi fa partire lo ShowMessage in ogni occasione in cui l'applicazione torna "on top" o comunque visibile dopo un'occultazione (cartelle, browser ecc).

    grazie f3rr0, hai colto nel segno.

    private
    { Private declarations }
    procedure WMSyscommand(var msg: TWmSysCommand); message WM_SYSCOMMAND;

    procedure TForm1.WMSyscommand(var msg: TWmSysCommand);
    begin
    if (msg.CmdType and $FFF0 = SC_RESTORE) then
    ShowMessage('ciao');
    inherited;
    end;
  • La F e il 3 purtroppo da una faccina idiota. proviamo così:

    grazie f 3 r r 0
  • Strana cosa, tra i WM_SYSCOMMAND esiste:

    SC_CLOSE, SC_CONTEXTHELP, SC_DEFAULT, SC_HSCROLL, SC_KEYMENU, SC_MAXIMIZE, SC_MINIMIZE, SC_MOUSEMENU, SC_MOVE, SC_RESTORE, SC_SIZE ecc ecc ecc

    ma non esiste un "SC_RESTOREFROMTASKBAR" (è un nome inventato da me come esempio), ovvero quando l'applicazione è minimizzata nella taskbar e poi la si fa riapparire cliccando sul pulsante sulla taskbar relativo all'applicazione.
Devi accedere o registrarti per scrivere nel forum
25 risposte