Edycja kodu projektu

T-kOrreD

Warto wiedzieć, że oprócz kodów tworzonych okien, pod skrótem Ctrl-F12 widnieje lista, na której znajdujemy także pozycję kodu projektu. Ostatnio rozbawił mnie pewien "gotowiec", w którym opisany był sposób na wykonanie tzw. splash screen'a. Nie będę opisywał co w nim jest śmiesznego, ale jego treść wskazuje, że autor najwyraźniej nigdy kodu projektu nie widział.

Gdy tworzymy nowy projekt mamy gotowe okno i otwarte okno kodu. Naciskając Ctrl-F12 ukazujemy listę. Zaznaczamy "Project1" i kilkamy "OK". Oto okno kodu projektu. Najpierw objaśnienia:

program Project1; //Kto by się nie domyślił?

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1}; //Nasze okno, a w zasadzie jego moduł. Zapis w ten sposób, tzn. "Unit1 in 'Unit1.pas' {Form1};" sprawia, że okno jest dostępne w liście okien (Shift-F12). Jeśli zapiszemy tylko "Unit1", to okna na liście nie będzie.

{$R *.res} //Ładowanie zasobów. Usunięcie tego wpisu spowoduje blokadę możliwości zmiany ikony ("Project" -> "Options").

begin
  Application.Initialize; //Inicjalizacja aplikacji. Wg pomocy Delphi wpis nie jest niezbędny. Ja go nie używam.
  Application.CreateForm(TForm1, Form1); //Automatyczne kreowanie formy. Jeżeli usuniemy ten wpis, to na liście "auto-create forms" forma ta nie będzie widoczna. Ważne jest jeszcze jedno: pierwsze okno tworzone w ten sposób będzie oknem głównym aplikacji - czyli gdy ono zostanie zamknięte, program się zamknie.
  Application.Run; //To powoduje zapętlenie programu - odbieranie i reagowanie na komunikaty. W momencie zamknięcia okna głównego program rusza dalej - do "end.".
end.

Tak wygląda podstawowy kod projektu. Ale można wszystko pozmieniać. Oto mój przykład na splash screen'a.

program SplScr;
uses
  Forms,
  USplScr in 'USplScr.pas' {OSplScr}, //Splash screen
  UOknoGlowne in 'UOknoGlowne.pas' {OOknoGlowne}; //Okno główne

{$R *.res}

begin
  OSplScr := TOSplScr.Create(nil);
  OSplScr.Show; //Ukazanie nie-modalne - aplikacja działa dalej.
  Application.ProcessMessages; //Dla odświerzenia okna splash screen'a
  Sleep(1000); //Żeby było dłużej widoczne, czekaj sekundę
  OOknoGlowne := TOknoGlowne.Create(nil); //Być może coś się wczytuje, itd.
  OSplScr.Hide;
  OSplScr.Free;
  OOknoGlowne.ShowModal; //Ukazanie modalne - aplikacja nie zakończy pracy, póki to okno będzie widoczne.
  OOknoGlowne.Free;
end.

I pięknie. A co z programami, które są widoczne na pasku SysTray, bez pokazywania żadnego okna? Ja robię taką pętlę:

repeat
  Sleep(10);
  Application.ProcessMessages;
until JakisTamWarunek

I działa. To tyle.

8 komentarzy

BEZNADZIEJNE POSTARAJ SIę ZROBIć COś LEPSZEGO

Że tak powiem - co to w ogóle ma być :>

nie, pewnie UFO porwie kod i doda to ;)

Detox - Project -> View source, sa dwa :P

hmm - w kod projektu można inaczej wejść jeszcze łatwiej przez dwa kliknięcia .. - nie pamiętam tylko teraz jak się to robiło. Artykuł może być, ale w zasadzie nie wiadomo o co w nim chodzi.. to, że tu jest główny kod programu to wiekszosc userów wie.

yy ze tak spytam niesmialo - o czym jest ten artykul?

Co do tego ostatniego:

Application.ShowMainForm:= False;

byłoby chyba nieco lepsze... O ile dobrze zrozumiałem Twoją intencję ;)

A try-finally to Zajączek Wielkanocny wrzuci?