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';