Delphi


Delphi. Siedem duchów

Ok, teraz powiem coś więcej o SaveDialog i OpenDialog, a także dokończę problem podstawowej komunikacji programu z użytkownik.

Powiedzmy najpierw co nieco o właściwościach:

DefaultExt - domyślne rozszerzenie. Z takim rozszerzeniem będą otwierane/zapisywane pliki. Oczywiście, jeśli użytkownik go nie zmieni...

Filter - bardzo fajna rzecz. :) Tutaj przechowujemy wszystkie rozszerzenia i ich opisy rozpoznawane przez nasz program.

Np. otwórz choćby głupiego notatnika. Wybierz opcję: Zapisz jako. Otworzy Ci się okienko SaveDialog. Będziesz na dole miał:

"Zapisz jako typ" i tam Plik Tekstowy, a poniżej Wszystkie pliki.

To robimy właśnie w Filter. W następujący sposób:

Plik tekstowy (*.txt)|*.txt|Wszystkie pliki(*.*)|*.*

W czasie projektowania, no to po prostu trzeba wpisać odpowiednie wartości w tabeli, która się pojawia po kliknięciu dwukrotnym w wartość Filter.

Filter Name      |Filter
------------------------
Plik txt (*.txt)  |*.txt

W pierwszej kolumnie mamy to, co widzi użytkownik w liście wyboru. Druga natomiast mówi programowi, jakiego typu pliki mają być pokazane (lub jako jaki typ ma zapisać).

Oczywiście filtr też można ustawić w kodzie programu:

OpenDialog1.Filter:='Plik tekstowy(*.txt)|*.txt|
Wszystkie pliki(*.*)|*.*'

Zwróćcie uwagę, że filtr jest wpisany jako łańcuch tekstowy.

FilterIndex - LICZONY OD 1. Gdy mamy kilka filtrów, to to oznacza, który ma być "aktywny" A także zwraca index wybranego filtra. Pamiętajcie, że liczony jest od 1.

InitialDir - katalog, który będziemy widzieli po wykonaniu metody Execute. Czyli taki jakby katalog startujący. Np. w Notatniku jest to katalog: Moje Dokumenty.

Options - tutaj się przyjrzyjmy trochę bliżej:

ofReadOnly - tylko do odczytu,
ofOverwritePrompt - gdy próbujemy zapisać plik o nazwie pliku już istniejącego, to gdy ta opcja jest ustawiona na True, to program najpierw wyświetli okienko z pytaniem, czy na pewno chcemy nadpisać plik. Jeśli opcja jest ustawiona na False, to program bez pytania go nadpisze...
ofHideReadOnly - ukrywa pliki tylko do odczytu,
ofNoChangeDir - gdy opcja jest na True, to wtedy gdy wybierzemy jakiś plik, a po jakimś czasie chcemy kolejny, to wtedy open/saveDialog otworzy nam się w folderze, w którym wybraliśmy ostatni plik.
ofShowHelp - pokazuje przycisk pomocy,
ofAllowMultiSelect - można wybierać więcej niż jeden plik, jeśli opcja jest na TRUE,
ofForceShowHidden - pokazuje ukryte pliki.

Więcej opcji nie ma sensu przedstawiać, bo albo nazwy mówią same za siebie, albo należy samemu trochę pokombinować. :) To były te najważniejsze i najczęściej używane.

Title - tytuł okienka, np: "Wybierz plik do odczytu", lub "Zapisz se plika" Pojawi się ten tytuł w okienku dialogowym.

Teraz trochę o metodach i innych właściwościach niedostępnych w ObjectInspector, tylko z poziomu kodu:

execute - omówiłem w poprzedniej części,
files - gdy wybieramy więcej niż jeden plik, wtedy ich nazwy są przechowywane w tej właściwości jako zmienna TStrings, czyli łańcuchy tekstowe.

To w sumie wszystko, co Was powinno interesować na tym poziomie. Pamiętajcie, jak wywołujemy te okienka, aby wszystko poszło ok:

if openDialog.Execute then...blablabla

Teraz zakończę kolejną rzeczą komunikację z użytkownikiem. Są takie 2 funkcje: InputBox i InputQuery.

Obydwie wyświetlają pewne okienko, w którym możemy coś wpisać.

InputBox

Składnia:

inputBox(const ACaption, APrompt, ADefault: string):string;

ACaption - tytuł okna dialogowego,
APrompt - tekst zachęcający do wprowadzania danych,
ADefault - tekst domyślny.

Na przykład:

var
    imie: string;

begin
    imie:=inputBox('Mój program', 'Podaj swoje imię', 'Adam');
end;

Oczywiście jako tekst domyślny możemy wpisać: '' - wtedy nie będzie żadnego tekstu domyślnego.

Funkcja InputQuery nieco się różni. Program rozpoznaje, kiedy został wciśnięty klawisz OK (zatwierdzono), a kiedy ESC lub Anuluj.

Składnia:

inputQuery(const ACaption, APrompt: string; var Value: string):
boolean;

ACaptioni APrompt - jak w InputBox,
Value - tutaj przechowywany jest tekst wpisany przez użytkownika.

Po co nam to? Ano np. jeśli chcemy wyświetlić jakieś informacje z danymi, lub jakiś komunikat, gdy nie zatwierdzono wprowadzania danych. Umieśćmy na formie LABEL i Button. W kodzie onClick Buttona wpiszmy:

var
    imie: string;

begin
    if inputQuery('Mój Program', 'Podaj imię', imie)=true then
        label1.Caption:=imie
    else label1.Caption:='Brak danych';
end;

Widzicie różnicę? To na razie tyle. Jeśli macie pytania, to piszcie.

Dodał: Adam​Jachocki
Dział: Delphi


 

ComputerSun.pl na FaceBooku
Polecamy lekturę:

Mac OS X Leopard PL. Leksykon kieszonkowy



X

Zapisz się na biuletyn serwisu ComputerSun.pl, aby otrzymać poradnik:

Zabezpieczanie sieci bezprzewodowych. Przydatne wskazówki jak chronić sieć domową przed intruzami

Imię:  
Email:
Tak, akceptuję Politykę Prywatności