Rozdział 14

 [ Powrót ]

Pamiętasz - w poprzednim rozdziale pisałeś przeglądarkę plików graficznych? Teraz napiszemy inną przeglądarkę - zapraszam.
    1. Umieść na formularzu komponent Panel -  wymaż jego właściwość Caption. 
   
2. Umieść na formularzu komponent ToolBar. 
    2.  Przejdź do zakładki 'Win 3.1'. Na Panelu umieść następujące komponenty:

-  DirectoryListBox
- FileListBox
- DriveComboBox
- FilterComboBox

    3. Umieść je na Panelu w kolejności podanej powyżej
    4  We właściwości DirectoryListBox1 zmień właściwość FileList na FileListBox1. 
    5. We właściwości DriveComboBox1 zmień właściwość DirList na DirectoryListBox1.
    6. We właściwości FilterComboBox1 zmień właściwość FileList na FileListBox1
    6  Właściwość Align Panelu zmień na alLeft. 
   
7. Umieść na formularzu  komponent Image, zmień jego właściwość Align na alClient. 
   
8. Kliknij pojedynczo na FilterComboBox1 i kliknij na właściwość Filter. Następnie naciśnij na symbol trzykropka - uruchomi się edytor filtrów. Po lewej stronie wpisuje się nazwę filtrów, a po prawej sam filtr. Wymaż filtry, które są tam napisane. Po lewej stronie wpisz np. "Pliki JPG", a po prawej: "*.jpg". Zrób tak jeszcze z rozszerzeniem *.ico, *.wmf itp.

    9. Kliknij pojedynczo na komponent FileListBox1. W Inspektorze Obiektów kliknij na zakładkę 'Events' i odnajdź pole OnClick. Kliknij dwukrotnie na obszar obok tego pola - kod zdarzenia uzupełnij następująco:

procedure TForm1.FileListBox1Click(Sender: TObject);
begin

     try
Image1.Picture.LoadFromFile(FileListBox1.FileName); 

      except

          ShowMessage('To nie jest prawidłowy format plików.');
end;

Myślę, że objaśnienia są tu zbędne. Po prostu wyświetlony zostaje obrazek na który postawiony został kursor. Jeszcze jedna sprawa - do listy uses dodaj słówko: jpeg - pozwoli to na wyświetlanie obrazków w formaie *.jpg. (Funkcja ta niestety nie działa w Delphi 2).

Pozostało jedynie dodanie przycisków na Pasku ToolBar. Kliknij więc w jego obrębie prawym przyciskiem myszy i z menu wybierz NewButton. Stwórz w ten sposób jeszcze dwa przyciski.

  1. Zmień właściwość Name pierwszego z nich na  Save, a drugiego na Edit.

  2. Umieść na formularzu komponent SavePictureDialog.

  3. Treść procedury OnClick pierwszego uzupełnij tak:

 if SavePictureDialog1.Execute then begin
           
Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
end;

   4.  Treść procedury 2 przycisku uzupełnij następująco:

ShellExecute(Handle,'open',PChar(FileListBox1.FileName),nil,nil,SW_SHOWMAXIMIZED);

Metoda ShellExecute otwiera dany program - w tym wypadku domyślny program graficzny jaki przypisany jest danemu rozszerzeniu. Pierwszy parametr jest uchwytem okna gdyż jest to funkcja API. Następnie następuje rzutowanie nazwy pliku FileListBox1 na PCHar. Dwa kolejne parametry to wskaźniki (będziemy mówić o nich później). Ostatni parametr otwoera okno w postaci zmaksymilizowanej. Dostępne są też SW_HIDE, SW_SHOW, SW_SHOWNORMAL, SW_SHOWMINIMALIZE. 

Dodaj jeszcze do listy uses słówko SHELLAPI Program możesz już odpalić. Pozostały jeszcze tylko kosmetyczne poprawki.
Fajnie by było gdyby na przyciskach widniały jakiś ikony, nie? Na palecie Win 32 znajduje się komponent ImageList - umieść go na komponencie. Naciśnij dwukrotnie na niego - otworzy się edytor w którym Importujemy ikony. Naciśnij na przycisku 'Add' i wybierz ikonę.Gdy wybierzesz dwie naciśnij na OK. Zaznacz komponent ToolBar1, w Inspektorze Obiektów z menu Images wybierz ImageList1. Ikony zostaną przypisane - program gotowy!

Cześć!

Adam Boduch

 [ Powrót ]