SelectDirectory

Från Wikibooks

Visar en dialogruta där användaren kan välja en katalog.

Unit
  FileCtrl
function SelectDirectory(const Caption: string; const Root: WideString; out Directory: string): Boolean; overload;
function SelectDirectory(var Directory: string; Options: TSelectDirOpts; HelpCtx: Longint): Boolean; overload;

Beskrivning[redigera]

Anropa SelectDirectory då användaren bör välja en katalog. Den första funktionen ger en dialog med ett modern utseende, men saknar en del funktioner, exemplevis möjligheten att skapa en en ny katalog. Caption parametern anger titeln för fönstret och Root anger vilken katalog som användaren utgår från. Den valda katalogen sparas i variabeln Directory. När denna syntax används så ändras inte systemets nuvarande katalog.


Samma parameter kan inte användas till både Root och Directory.


Oavsett vilken funktion som används så skickar SelectDirectory tillbaka True om användaren väljer OK och False om användaren väljer Cancel/Avbryt eller avbryter på annat sätt.


Endast den första syntaxen eller Exempel 1 visar en dialog med text på svenska, eller det språk som operativsystemet använder.


Exempel 1[redigera]

Detta exempel använder den första funktionen och koden ser ut så här:

procedure TForm1.Button1Click(Sender: TObject);
var
  Rot, Dir: string;
begin
 Dir := 'D:\';
 Rot := 'D:\Delphi\';
  if SelectDirectory('Programmera i Pascal',Rot,Dir) then
   Label1.Caption := Dir;
end;

Resultatet som genereras med ovanstående kod ser ut så här:

Fil:SelectDirectoryNew.jpg

Den andra funktionen ser ganska gammalmodig ut, men innehåller en hel del möjligheter som den tidigare saknar, exempelvis att skapa en ny katalog. Directory parametern som skickas till denna funktion blir den valda katalogen i dialogen, men kommer även att innehålla den katalog som användaren väljer i form av en textsträng. HelpCtx parametern anger det ID nummer i hjälpfilen som ska anropas. Options parametern kan vara sdAllowCreate, sdPerformCreate eller sdPrompt. sdAllowCreate visar en textruta där användaren kan ange en katalog som inte finns ännu, men den skapas inte utan ger programmet den möjligheten. sdPerformCreate i kombination med sdAllowCreate skapar även den katalog som angivits av användaren. sdPrompt ska bara användas ihop med sdAllowCreate, då denna parametern visar en meddelanderuta som talar om att katalogen inte finns och frågar om den skall skapas.


Exempel 2[redigera]

I detta exempel så används den andra funktionen av SelectDirectory. Koden som används är:

procedure TForm1.Button1Click(Sender: TObject);
const
  SELDIRHELP = 1000;
var
  Dir: string;
begin
  Dir := 'D:\Delphi\';
  if SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP) then
    Label1.Caption := Dir;
end;

Resultatet av förgående exempel kan ses här:

Fil:SelectDirectoryOld.jpg



Funktion och desigkvalitet är många gånger en ballansgång när det gäller programmering. För att undvika dessa val väljer många att tillverka consolprogram.