DELPHI - dialogs

Strona g│≤wna

 

Delphi - Obiekty - TCommonDialog i jej pochodne

 

Ostatnio przegl▒daj▒c listy i FAQ stron po╢wiΩconych Delphi zauwa┐y│em, ┐e u┐ytkownicy Delphi maj▒ problemy ze standardowymi oknami dialogowymi. S▒ to okna, kt≤re u┐ywa siΩ do: otworzenia pliku, zapisania pliku, wybrania niestandardowego koloru, sformatowania (dysku C?) tekstu ustawie± strony do wydrukowania. Sporo tego (ci▒gle nic nie rozumisz? ;)). Tylko po co one s▒? Projektanci Windows (wyczyta│em to z bardzo m▒drej ksi▒┐ki, wiΩc nie mogΩ siΩ myliµ ;)) postanowili dostarczyµ standaryzowanego (du┐o razy bΩdzie siΩ jeszcze powtarza│o to s│owo, a ile b│Ωd≤w mo┐na w nim zrobiµ!) interfejsu, kt≤rego u┐ytkownik mo┐e oczekiwaµ w ka┐dej aplikacji, np.: menu, przyciski, paski statusu itp. MiΩdzy innymi s▒ te┐ znane Ci okna dialogowe, a Delphi implementuje je za po╢rednictwem klasy TCommonDialog i pochodnych. Klasa TCommonDialog sk│ada siΩ z: TColorDialog, TPrintDialog, TFindDialog, TReplaceDialog, TOpenDialog, TSaveDialog, TFontDialog i TPrinterDialog. Wsp≤lne ich w│a╢ciwo╢ci:

Korzystaj▒c z tego Mamy takie Skutki
Assign Przypisaµ jeden obiekt trwa│y innemu
ClassName Nazwa klasy
ClassParent Nazwa klasy nadrzΩdnej
ClassType Faktyczny typ obiektu
ComponentCount Okre╢liµ liczbΩ posiadanych sk│adnik≤w
ComponentIndex Okre╢liµ indeks sk│adnika na li╢cie Components
Components Okre╢liµ listΩ posiadanych sk│adnik≤w
ComponentState Wyznaczyµ stan bie┐▒cego sk│adnika
Create Utworzyµ nowy sk│adnik
Ctl3D Je╢li przyjmuje warto╢µ True, okno jest wy╢wietlane w 3D, a je╢li przyjmuje False okno jest wy╢wietlane w 2D
Destroy Usuwa obiekt
DestroyComponents Usun▒µ wszystkie sk│adniki posiadane przez sk│adnik
Destroying Powiadomiµ sk│adnik, ┐e jest usuwany
FindComponent Odnale╝µ sk│adnik w ramach tablicy Components
Free Bezpiecznie usun▒µ sk│adnik
Help Wyznaczyµ identyfikator pomocy kontekstowej dla okna dialogowego
InheritsFrom Okre╢liµ, czy dany sk│adnik pochodzi z danej klasy
InstanceSize Wyznaczyµ rozmiar pamiΩci przydzielonej obiektowi
Name Okre╢liµ nazwΩ sk│adnika
Owner Okre╢liµ w│a╢ciciela sk│adnika
Tag Przypisaµ wraz ze sk│adnikiem dodatkow▒ liczbΩ ca│kowit▒

No coments :). Teraz opiszΩ wszystkie obiekty typu Dialog:

TColorDialog
Obiekt ten, s│u┐y do wy╢wietlania okna dialogowego, zkt≤rego u┐ytkownik mo┐e wybraµ, z palety kolor≤w, kolor (trochΩ g│upio brzmi, ale to prawda ;)). Mo┐e np.: s│u┐yµ do ustalenia koloru dowolnego obiektu.

Korzysatj▒c z tego Mamy takie skutki
Color Kolor wybrany przez u┐ytkownika
CustomColors Okre╢liµ, czy wy╢wietlana jest sekcja Kolory u┐ytkownika
Execute Otworzyµ okno
Options Ustawiµ opcje okna

TFindDialog
Obiekt wy╢wietla standardowe okno znajd╝, s│u┐▒ce do znalezienia tekstu.

TReplaceDialog
Obiekt taki sam jak powy┐ej, ale znaleziony tekst zamienia na inny. Obiekty te maj▒ prawie takie same w│a╢ciwo╢ci, wiΩc:

Korzystaj▒c z tego Mamy takie skutki
Execute Otworzyµ okno
FindText Okre╢liµ tekst do znalezienia
Handle Otrzymaµ uchwyt Windows okna
Left Wyznaczyµ wsp≤│rzΩdn▒ x, gdzie pojawi siΩ okno
OnFind Obs│u┐yµ zdarzenie po znalezieniu tekstu
Options Okre╢liµ opcje okna
Position Okre╢liµ pozycjΩ okna na ekranie
Top Wyznaczyµ wsp≤│rzΩdn▒ y, gdzie pojawi siΩ okno
OnReplace Obs│u┐yµ zdarzenie po zamienieniu tekstu
ReplaceText Okre╢liµ zamieniany tekst

TFontDialog
Okno, te s│u┐y do wyboru czcionki i formatowanie jej. Automatycznie s▒ wy╢wietlane wszystkie zinstalowane czcionki.

Korzystaj▒c z tego Mamy takie skutki
Device Okre╢liµ, kt≤rego urz▒dzienia dotyczy zwr≤cona czcionka
Execute Otworzyµ okno
Font Okre╢liµ, kt≤ra czcionka zosta│a wybrana
MaxFontSize Ustawiµ maksymaln▒ wysoko╢µ czcionki do wyboru
MinFontSize Ustawiµ minimaln▒ wysoko╢µ czcionki do wyboru
OnApply Obs│u┐yµ zdarzenie po naci╢niΩciu Zastosuj
Options Ustawiµ opcj okna

TOpenDialog i TSaveDialog
S▒ bardzo podobne, ale pierwszy dialog umo┐liwia wybranie ╢cie┐ki i otworzenie pliku, a drugi wybranie ╢cie┐ki i zapisanie pliku.

Korzystaj▒c z tego Mamy takie skutki
DefaultExt Okre╢liµ domy╢lne rozszerzenie pliku w oknie dialogowym
Execute Otworzyµ okno
FileName Okre╢liµ nazwΩ pliku
Files Okre╢liµ nazwy plik≤w
Filter Okre╢liµ filtr lub filtry, z kt≤rych korzysta okno
FilterIndex Okre╢liµ domy╢lny filtr stosowany w oknie
InitialDir Okre╢liµ katalog, kt≤re wy╢wietli okno
Options Okre╢liµ opcje okna
Title Okre╢liµ tytu│ okna (pasek)

Przy okazji opiszΩ edytor filtr≤w, czyli edytor rozszerze± jakie maj▒ byµ wy╢wietlane przez okno:

1. Naci╢nij na obiekt typu TSaveDialog lub TOpenDialog.
2. W Object Inspector znajd╝ w│a╢ciwo╢µ Filter i kliknij na ni▒. Wy╢wietli siΩ okno.
3. Jak widzisz pojawi│y siΩ dwie tabelki (to nie efekt piwa :)). Po lewej stronie piszemy nazwΩ rozszerzenia (np.: Delphi Unit), a po drugiej odpowiadaj▒ce rozszerzenie (np.: *.pas PamiΩtaj musi byµ gwiazdka (*) i kropka przed rozszerzeniem!). Naci╢nij OK. I wszystko ju┐ gra.

TPrintDialog
TPrintDialog obejmuje standardowe okno dialogowe Drukuj. Dialog ten umo┐liwia ustawienie wydruku. WiΩcej o drukowaniu:
przeczytaj.

Korzystaj▒c z tego Mamy takie skutki
Collate Okre╢liµ czy w│▒czono sortowanie kopii
Copies Okre╢liµ ilo╢µ kopii
Execute Otworzyµ okno
FromPage Okre╢liµ pocz▒tek zakresu wydruku
MaxPage Okre╢liµ najwiΩkszy numer strony do wyboru
MinPage Okre╢liµ najmniejszy numer strony do wyboru
Options Ustawiµ opcje okna
PrintRange Okresliµ rodzaj zakresu wydruku
PrintToFile Okre╢liµ czy wydruk skierowany jest do drukarki czy do pliku
ToPage Okre╢liµ ko±cow▒ stronΩ wydruku

TPrinterSetup
Okno te umo┐liwia u┐ytkownikowi ustawienie w│a╢ciwo╢ci drukarki. Okno to je╢li chcesz daµ do programu nie musisz wstawiaµ do formularza, okno ustawie± drukarki jest automatycznie wywo│ywane przez TPrintDialog (opis powy┐ej). WiΩcej o drukowaniu:
przeczytaj. W│a╢ciwo╢ci brak, poniewa┐ Windows sam je przetwarza po klikniΩciu OK.

Teraz wypiszΩ przyk│ady g│≤wnych w│a╢ciwo╢ci implementowanych przez obiekty typu Dialogs:

Color


Dotyczy: TColorDialog
Opis: W│a╢ciwo╢µ Color okre╢la jaki kolor u┐ytkownik wybra│ przy u┐yciu TColorDialog.
Przyk│adzik:

if ColorDialog1.Execute then {otwieramy okno i je╢li u┐ytkownik nacisn▒│ OK to...}
Button1.Color := ColorDialog1.Color;
[... obiekt Button1 zostanie pomalowany na wybrany kolor}


DefaultExt


Dotyczy: TSaveDialog i TOpenDialog
Opis: W│a╢ciwo╢µ DefaultExt powoduje, ┐e rozszerzenie pliku zostaje automatycznie dodane do nazwy pliku, je╢li u┐ytkownik nie zrobi│ tego rΩcznie.
Przyk│adzik:

SaveDialog1.DefaultExt := 'pas';


Execute


Dotyczy: wszystkich obiekt≤w typu Dialogs
Opis: Otwiera okno dialogowe i zwraca True je╢li u┐ytkownik potwierdzi dane
Przyk│adzik:

if SaveDialog1.Execute then {otwieramy okno i je╢li u┐ytkownik potwierdzi (Zapisz) to...}
begin
{... to robimy to co jest tu napisane}
end;


FileName


Dotyczy: TSaveDialog i TOpenDialog
Opis: Jest to w│a╢ciwo╢µ typu String. W niej zawarta jest nazwa pliku.
Przyk│adzik:

if SaveDialog1.Execute then {otwieramy okno i je╢li u┐ytkownik naci╢nie Zapisz to...}
Memo1.Lines.SaveToFile(SaveDialog1.FileName)
{... zapisujemy zawarto╢µ Memo1 do pliku o nazwie wybranej przez u┐ytkownika, przy udziale SaveDialog};


Font


Dotyczy: TFontDialog
Opis: W│a╢ciwo╢µ Font zawiera czcionkΩ wybran▒ przez u┐ytkownika przy udziale TFontDialog.
Przyk│adzik:

if FontDialog1.Execute then
Memo1.Font := FontDialog1.Font;

Mo┐na te┐ pobraµ np.: tylko kolor tekstu. A ┐eby to zrobiµ musimy napisaµ:

Memo1.Font.Color := FontDialog1.Font.Color;

W│a╢ciwo╢ci jakie mo┐e mieµ Font:

W│a╢ciwo╢µ Opis
Name Nazwa czcionki, np.: Times New Roman
Size Rozmiar czcionki
Style Styl czcionki, np.: Kursywa (In English: Italic)
Color Kolor czcionki

InitialDir


Dotyczy: TOpenDialog i TSaveDialog
Opis: W│a╢ciwo╢µ InitialDir okre╢la katalog, kt≤ry ma wy╢wietliµ siΩ po wy╢wietleniu okna
Przyk│adzik:

SaveDialog1.InitialDir := 'C:\Program Files\'; {ustawiamy katalog na: Program Files}


Options


Dotyczy: wszystkie obiekty typu Dialogs
Opis: Okre╢la opcje obiektu
Przyk│adzik:

ColorDialog1.Options := [ofReadOnly,ofShareAware];

Opis dostΩpnych opcji:

Opcje TColorDialog Opis
cdFullOpen Wy╢wietla sekcjΩ Kolory u┐ytkownika
cdPreventFullOpen Wy│▒czyµ przycisk Utw≤rz kolory u┐ytkownika
cdShowHelp Wy╢wietla przycisk Pomoc
Opcje TFindDialog i TReplaceDialog Opis
frDisableMatchCase Wy│▒cza w│a╢ciwo╢µ Enabled przycisku UwzglΩdnij wielkie i ma│e litery
frDisableUpDown Wy│▒cza w│a╢ciwo╢µ Enabled przycisku Kierunek wyszukiwania: w g≤rΩ i w d≤│. Tylko w TFindDialog
frDisableWholeWord W│▒cza w│a╢ciwo╢µ Enabled przycisku Dopasuj ca│e s│owo
frDown Je╢li frDown ma warto╢µ False to kierunek poszukiwania jest ustawiony w g≤rΩ
frFindNext Ta flaga jest obs│ugiwana, gdy u┐ytkownik kliknie Znajd╝ NastΩpny
frHideMatchCase Wy│▒cza w│a╢ciwo╢µ Visible przycisku UwzglΩdnij wielkie i ma│e litery
frHideWholeWord Wy│▒cza w│a╢ciwo╢µ Visible przycisku Dopasuj ca│e s│owo
frHideUpDown Wy│▒cza w│a╢ciwo╢µ Visible przycisku w g≤rΩ i w d≤│. Tylko w TFindDialog
frMatchCase Zaznacza pole UwzglΩdnij wielkie i ma│e litery
frReplace Sygnalizuje, ┐e w Twojej aplikacji powinno zostaµ zast▒pione bie┐▒ce s│owo w FindText na s│owo w ReplaceText
frReplaceAll Sygnalizuje, ┐e w Twojej aplikacji powinny zostaµ zast▒pione wszystkie s│owa w FindText na s│owo w ReplaceText
frShowHelp Wy╢wietla przycisk Pomoc
frWholeWord Zaznacza pole Dopasuj ca│e s│owo
Opcje TFontDialog Opis
fdAnsiOnly Pozwala u┐ytkownikowi wybraµ tylko te czcionki, kt≤re korzystaj▒ ze zbioru znak≤w Windows
fdEffects Uaktywnia pole Efekty (a w nim: kolor, podkre╢lenie i przekre╢lenie)
fdFixedPitchOnly Wy╢wietla tylko czcioniki o sta│ej szeroko╢ci
fdForceFontExists Wy╢wietla komunikat o b│Ωdzie je╢li u┐ytkownik poda z│▒ nazwΩ czcionki
fdLimitSize Ogranicza liczbΩ czcionek do wyboru i uaktywnia w│a╢ciwo╢ci MinFontSize i MaxFontSize
fdNoFaceSel Nie wy╢wietla nazwy wybranej czcionki (w polu kombo)
fdNoOEMFonts Wy╢wietla tylko czcionki niewektorowe
fdScalableOnly Wy╢wietla tylko czcionki skalowalne
fdNoSimulations Wy╢wietla tylko rzeczywiste czcionki, nie ich symulacje z GDI
fdNoSizeSel Nie wy╢wietla wybranej wielko╢ci czcionki
fdNoStyleSel Nie wy╢wietla wybranego stylu
fdNoVectorFonts Wy╢wietla tylko czcionki niewektorowe
fdShowHelp Wy╢wietla przycisk Pomoc
fdTrueTypeOnly Wy╢wietla tylko czcionki True Type
fdWysiwyg Wy╢wietla tylko czcionki dostΩpne zar≤wno dla drukarki i ekranu
Opcje TOpenDialog i TSaveDialog Opis
ofAllowMultiSelect Umo┐liwia wybranie wiecej ni┐ jednego pliku
ofCreatePrompt Wy╢wietla okno z komunikatem, je╢li u┐ytkownik poda nazwΩ pliku nie istniej▒cego
ofExtensionDifferent Ta opcja jest ustawiana gdy nazwa pliku ma inne rozszerzenie ni┐ rozszerzenie domy╢lne (patrz w│a╢ciwo╢ci TOpenDialog i TSaveDialog)
ofFileMustExists Wy╢wietla komunikat je╢li u┐ytkownik poda nazwΩ nieistniejacego pliku
ofHideReadOnly ukrywa pole tylko do odczytu
ofNoChangeDir Ustawia bie┐▒cy katalog r≤wny poprzedniemu katalogowi bie┐▒cemu, ignoruj▒c jakiekolwiek zmiany w katalogu, kt≤rych m≤g│ dokonaµ u┐ytkownik
ofNoReadOnlyReturn Wy╢wietla komunikat, gdy plik jest tylko do odczytu
ofNoTestFileCreate Przy zapisywaniu pliku sprawdza ilo╢µ wolnego miejsca na dysku i zabezpieczenie przed zapisem.
ofNoValidDate Nie umo┐liwia u┐ytkownikowi wprowadzenia do nazwy pliku b│Ωdnych znak≤w
ofOverwritePrompt Wy╢wietla komunikat, gdy plik o podanej nazwie ju┐ istnieje i czy u┐ytkownik mimo to chce zapisaµ ten plik
ofReadOnly Zaznaczyµ pole tylko do odczytu
ofPathMustExists Pozwala u┐ytkownikowi na wpisanie nazw tylko ╢cie┐ek istniej▒cych
ofShareAware Ignoruje wszystkie b│Ωdy dzielenia zasob≤w
ofShowHelp Wy╢wietla przycisk Pomoc
Opcje TPrintDialog Opis
poHelp Wy╢wietla przycisk Pomoc
poPagenums Uaktywnia przycisk radiowy Strony
poPrintToFile Wy╢wietla pole opcji Drukuj do pliku
poSelection Uaktywnia przycisk radiowy Wyb≤r
poWarning Wy╢wietla ostrze┐enie, gdy u┐ytkownik kliknie OK, a ┐adna drukarka nie jest zainstalowana
poDisablePrintToFile Wy│▒cza w│a╢ciwo╢µ Enabled pola Drukuj do pliku

Title


Dotyczy: TOpenDialog i TSaveDialog
Opis: W│a╢ciwo╢c Title okre╢la tytu│ jaki ma siΩ wy╢wietliµ w oknie
Przyk│adzik:

SaveDialog1.Title := 'Zapisz plik pas';