logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Delphi] Jak ukryć główny formularz przy użyciu CoolTryIcon?

smalski 24 Maj 2004 14:59 2500 8
REKLAMA
  • #1 657250
    smalski
    Poziom 17  
    Posty: 317
    Pomógł: 2
    Ocena: 8
    Witam!!
    Znalazlem taki sprytny:) komponent do dodawania ikonek w tray`u.Chce,zeby moj programik dzialal w tle.Co zrobic,zeby po uruchomieniu nie bylo formularza glownego??
    Dzieki/smalski

    Zamykam. - arnoldziq
  • REKLAMA
  • #2 657397
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    w pliku głównym projektu dodajesz:
    Application.ShowMainForm:=false;
    przed linijke
    Application.Initialize;
    ...
    potem forme sie wyświetla Form1.Show; a ukrywa Form1.Hide; (zał że nazwa formy to Form1)
  • #3 657398
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Wywołaj przy zdarzeniu OnShow metode Hide dla okna głównego.
  • REKLAMA
  • #4 657423
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    elektryk napisał:
    Wywołaj przy zdarzeniu OnShow metode Hide dla okna głównego.

    podczas OnShow niemożna ustawić Hide.. pytanie:
    jak twoją metodą można uczynić żeby okno było widoczne? by trzeba było obsadzić Hide jakimiś warunkami..
    p.s. u mnie Hide w OnShow wyrzuca wyjątek EInvalidOperation
  • #5 657595
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Właśnie też to sprawdziłem że jes wyjatek. To pozostaje rozwiązanie "extremalne": usunąć automatyczne tworzenie formy głównej, tworzyć ją w momencie pierwszego wywołania, a następnie już ukrywać "normalnie".
  • REKLAMA
  • #6 657869
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    elektryk: czytaj post drugi z góry, żadne extremalne.. raczej dynamiczne tworzenie formy. takie też jest przydatne, ale wtedy kiedy aplikacja ma mieć kilka takich samych okienek.. najlepiej skorzystać z metod Application.. a pozatym jak smalski umieści TCoolTrayIcon na formie to jak ma uruhomić Forme skoro potrzebuje icony w trayu? a żeby meć ikone w trayu musi utworzyć forme.. pentelka sie robi i sie nic niezdziała...
  • REKLAMA
  • #7 658650
    smalski
    Poziom 17  
    Posty: 317
    Pomógł: 2
    Ocena: 8
    I co ja mam z tym dalej zrobic??
    Rzeczywiscie nie da sie przypisac form1.hide do onshow.A forma musi istniec,tyle ze byc niewidzialna...
  • #8 659870
    BoskiDialer
    Poziom 34  
    Posty: 1530
    Pomógł: 353
    Ocena: 42
    Cytat:
    w pliku głównym projektu dodajesz:
    Application.ShowMainForm:=false;
    przed linijke
    Application.Initialize;

    Nielubie sie powtarzać...
    Jak dam nowy projekt, to daje Project->View source..
    tam wpisuje właśnie tą linijke:
    Application.ShowMainForm:=false;
    wtedy całość wygląda tak:
    
    program Project1;
    
    uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1};
    
    {$R *.res}
    
    begin
      Application.ShowMainForm:=false;
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
    

    i koniec... forma po uruhomieniu programu sie niewyświetla... dopiero po Form1.Show (Form1.Hide). do tego nietrzeba żadnego OnShow....
  • #9 660826
    smalski
    Poziom 17  
    Posty: 317
    Pomógł: 2
    Ocena: 8
    Spoko nie denerwuj sie...
    Wszystko dziala...

Podsumowanie tematu

✨ Dyskusja dotyczy ukrycia głównego formularza aplikacji Delphi przy użyciu komponentu TCoolTrayIcon, aby program działał w tle bez widocznego okna po uruchomieniu. Zalecanym rozwiązaniem jest ustawienie w pliku głównym projektu przed inicjalizacją aplikacji parametru Application.ShowMainForm:=false, co zapobiega automatycznemu wyświetleniu formularza głównego. Formularz można następnie tworzyć dynamicznie za pomocą Application.CreateForm i kontrolować jego widoczność metodami Form1.Show oraz Form1.Hide. Próby wywołania Form1.Hide w zdarzeniu OnShow powodują wyjątek EInvalidOperation, dlatego nie jest to zalecane. Alternatywnie można zrezygnować z automatycznego tworzenia formularza głównego i tworzyć go ręcznie w momencie potrzeby, co pozwala na jego ukrycie. Komponent TCoolTrayIcon wymaga istnienia formularza, aby wyświetlić ikonę w trayu, co powoduje konieczność dynamicznego zarządzania widocznością formularza.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA