[Back to DIRS SWAG index] [Back to Main SWAG index] [Original]
{
DAVID DRZYZGA
> And I can't seem to get the OpDir system to work With multiple Files, or
> at least I can't get the "tagging" Function to work.
Here's a somewhat stripped snipit of code from one of my apps that will give
you a clear example of how to use the multiple pick Function of the DirList
Object:
}
Program DirTest;
{$I OPDEFINE.INC}
Uses
Dos,
OpRoot,
OpConst,
OpString,
OpCrt,
OpCmd,
OpFrame,
OpWindow,
OpPick,
OpDir,
OpColor;
Const
SliderChar = '²';
ScrollBarChar = '°';
Frame1 : FrameArray = 'ÚÀ¿ÙÄij³';
Counter : Word = 1;
Var
Dir : DirList;
Finished : Boolean;
SelectedItem : Word;
DirWinOpts : LongInt;
I : Integer;
Procedure ProcessFile(FileName : String);
begin
{This is where you would process each of the tagged Files}
end;
begin
DirWinOpts := DefWindowOptions+wBordered;
if not Dir.InitCustom(20, 4, 50, 19, {Window coordinates}
DefaultColorSet, {ColorSet}
DirWinOpts, {Window options}
MaxAvail, {Heap space For Files}
PickVertical, {Pick orientation}
MultipleFile) {Command handler}
then
begin
WriteLn('Failed to Init DirList, Status = ', InitStatus);
Halt;
end;
{Set desired DirList features}
With Dir do
begin
wFrame.AddShadow(shBR, shSeeThru);
wFrame.AddCustomScrollBar(frRR, 0, MaxLongInt, 1, 1, SliderChar,
ScrollBarChar, DefaultColorSet);
SetSelectMarker(#251' ', '');
SetPosLimits(1, 1, ScreenWidth, ScreenHeight-1);
SetPadSize(1, 1);
diOptionsOn(diOptimizeSize);
AddMaskHeader(True, 1, 30, heTC);
SetSortOrder(SortDirName);
SetNameSizeTimeFormat('<dir>', 'Mm/dd/yy', 'Hh:mmt');
SetMask('*.*', AnyFile);
end;
{<AltP>: process selected list}
PickCommands.AddCommand(ccUser0, 1, $1900, 0);
{Pick Files}
Finished := False;
Repeat
Dir.Process;
Case Dir.GetLastCommand of
ccSelect : ;
ccError : ;
ccUser0 :
begin
Counter := 1;
if Dir.GetSelectedCount > 0 then
begin
Dir.InitSequence(SelectedItem);
While Dir.HaveSelected(SelectedItem) do
begin
ProcessFile(Dir.GetMultiPath(SelectedItem));
Inc(Counter);
Dir.NextSelected(SelectedItem);
Dir.ResetList;
end;
end
end;
ccQuit : Finished := True;
end;
Until Finished;
Dir.Erase;
ClrScr;
Dir.Done;
end.
[Back to DIRS SWAG index] [Back to Main SWAG index] [Original]