OpenDialog – âèçóàëüíûé êîìïîíåíò. Îí èñïîëüçóåòñÿ, ÷òîáû ïîçâîëèòü ïîëüçîâàòåëþ âûáèðàòü îäèí èëè áîëåå ôàéëîâ, äëÿ îòêðûòèÿ. Îí ìîæåò áûòü îïðåäåëåí, ïåðåìåùåíèåì çíà÷êà Open Dialog ñ âêëàäêè Dialogs, èëè îïðåäåëÿÿ ïåðåìåííóþ TOpenDialog.
Îñíîâíûå ñâîéñòâà:
– Title – èñïîëüçóåòñÿ äëÿ óñòàíîâêè çàãîëîâêà äèàëîãà;
– FileName – âûäàåò èìÿ ôàéëà äëÿ îòêðûòèÿ, çàäàííîå ïî óìîë÷àíèþ (èíà÷å, ïîëå èìåíè ôàéëà áóäåò ïðîáåëîì). Ïðè âîçâðàùåíèè èç äèàëîãà, åñëè ïîëüçîâàòåëü íàæàë, OK, ýòî ñâîéñòâî áóäåò ñîäåðæàòü (ïåðâîå) âûáðàííîå èìÿ ôàéëà, âêëþ÷àÿ åãî ïîëíûé ïóòü;
– Filter – ïîçâîëÿåò îòîáðàæàòü è âûáèðàòü òîëüêî íåêîòîðûå òèïû ôàéëîâ. Òåêñò ôèëüòðà îòîáðàæàåòñÿ â íèñïàäàþùåì ïîëå, ÷óòü íèæå ïîëÿ èìåíè ôàéëà.
Ñëåäóþùèé ïðèìåð âûáèðàåò òîëüêî òåêñòîâûå ôàéëû:
openDialog.Filter := 'Text files only|*.txt';
Ðàñêðûâàþùèéñÿ ñïèñîê ïîêàçûâàåò òåêñò, íàõîäÿùèéñÿ ïåðåä ðàçäåëèòåëåì |. Ïîñëå ðàçäåëèòåëÿ ìîæíî îïðåäåëèòü ìàñêó, êîòîðàÿ âûáèðàåò ôàéëû:
openDialog.Filter := 'Text and Word files only|*.txt;*.doc';
– FilterIndex – îïðåäåëÿåò, êàêîé ôèëüòð íèñïàäàþùåãî ïîëÿ áóäåò îòîáðàæåí ïåðâûì;
– InitialDir – óñòàíàâëèâàåò íà÷àëüíûé êàòàëîã â äèàëîãå;
– Options – ýòî íàáîð TOpenOptions ôëàæêîâ. Îíè ÿâëÿþòñÿ èñ÷åðïûâàþùèìè. Êëþ÷åâûå çíà÷åíèÿ:
– ofReadOnly – îòêðûâàåò ôàéë äîñòóïíûé òîëüêî äëÿ ÷òåíèÿ;
– ofFileMustExist – ìîæåò áûòü îòêðûò òîëüêî ñóùåñòâóþùèé ôàéë;
– ofAllowMultiSelect – ïîëüçîâàòåëü ìîæåò âûáðàòü 2 èëè áîëüøå ôàéëîâ.
Äëÿ îòîáðàæåíèÿ äèàëîãà âûçûâàåòñÿ ìåòîä TOpenDialog:
if openDialog.Execute then ...
Execute âîçâðàòèò èñòèíó, åñëè ïîëüçîâàòåëü âûáðàë ôàéë è íàæàë OK. Òåïåðü âû ìîæåòå èñïîëüçîâàòü âûáðàííûé ôàéë:
ÏÐÈÌÅÐ: Âûâîä ñîäåðæèìîãî ôàéëà â êîìïîíåíò Memo1 ÷åðåç OpenDialog1
if OpenDialog1.Execute then
begin
AssignFile(f,OpenDialog1.FileName);
reset(f);
Memo2.Text:='';
while not eof(f) do
begin
Read(f,buf);
Memo2.Text:=Memo2.Text+buf;
end;
closefile(f);
end;
|