Zdarzenie OnShow formularza jest wywoływane tylko raz po jego tworzenia, czyli najpierw jest wywoływane zdarzenie OnCreate a dopiero potem OnShow, różnicca jest taka, że zdarzenie OnCreate jest wywoływane dla jeszcze nie utworzonego formularza, a zdarzenie OnShow gdy formularz jest już utworzony i jest właśnie wyświetlany. Innym przykładem moze być systuacja w której formualarz zostaje ukryty poprzez np. funkcje Hide(), a potem jest ponownie wyświetlany np. funkcją Show() lub ShowModal(), jak widzisz to zdarzenie jest wywoływane tylko do pokazania formularz, czyli gdy jest niewidoczny, anie zminimalizowany. To tak w uproszczeniu.
Gdy przywołujesz program z paska zadań lub z SysTray'a to nie towarzyszy mu zdarzenie OnShow, gdyż formularz jest już wyświetlany.
Musisz posłużyć się zdarzeniem OnRestore, formularz jednak tego zdarzenia nie posiada. Można posłużyć się mapą komunikatów i przechwytywać komunikat przywrócenia, ale nie wiem dokładnie o jaki komunikat chodzi
(SC_RESTORE - działa tylko na maksymalizację) dlatego proponuję umieścić na formularzu komponent
TApplicationEvents (zakładka Additional), następnie tworzysz dla tego komponentu zdarzenie OnRestore i tam umieszczasz swój kod:
- Kod: Zaznacz cały
void __fastcall TForm1::ApplicationEvents1Restore(TObject *Sender)
{
Edit2->Clear();
Edit2->PasteFromClipboard();
}
Ale uwaga! To zdarzenie jest wywoływane nie tylko gdy przywracasz program z paska zadań, ale również wtedy gdy przywracasz okno z maksymalizacji.