home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
vp11demo.zip
/
rtlsrc.rar
/
tv
/
STDDLG.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1996-10-08
|
10KB
|
303 lines
{*******************************************************}
{ }
{ Turbo Pascal Version 7.0 }
{ Turbo Vision Unit }
{ }
{ Copyright (c) 1992 Borland International }
{ }
{*******************************************************}
{$PureInt+}
unit StdDlg;
{$V-,X+,I-,S-,Cdecl-}
interface
uses Objects, Drivers, Views, Dialogs, Os2Def, Os2Base, Dos, Use32;
const
{ Commands }
cmFileOpen = 800; { Returned from TFileDialog when Open pressed }
cmFileReplace = 801; { Returned from TFileDialog when Replace pressed }
cmFileClear = 802; { Returned from TFileDialog when Clear pressed }
cmFileInit = 803; { Used by TFileDialog internally }
cmChangeDir = 804; { Used by TChDirDialog internally }
cmRevert = 805; { Used by TChDirDialog internally }
{ Messages }
cmFileFocused = 806; { A new file was focused in the TFileList }
cmFileDoubleClicked { A file was selected in the TFileList }
= 807;
type
{ TSearchRec }
{ Record used to store directory information by TFileDialog }
TSearchRec = record
Attr: Byte;
Time: Longint;
Size: Longint;
Name: String;
end;
type
{ TFileInputLine is a special input line that is used by }
{ TFileDialog that will update its contents in response to a }
{ cmFileFocused command from a TFileList. }
PFileInputLine = ^TFileInputLine;
TFileInputLine = object(TInputLine)
constructor Init(var Bounds: TRect; AMaxLen: Integer);
procedure HandleEvent(var Event: TEvent); virtual;
end;
{ TFileCollection is a collection of TSearchRec's. }
PFileCollection = ^TFileCollection;
TFileCollection = object(TSortedCollection)
function Compare(Key1, Key2: Pointer): Integer; virtual;
procedure FreeItem(Item: Pointer); virtual;
function GetItem(var S: TStream): Pointer; virtual;
procedure PutItem(var S: TStream; Item: Pointer); virtual;
end;
{ TSortedListBox is a TListBox that assumes it has a }
{ TStoredCollection instead of just a TCollection. It will }
{ perform an incremental search on the contents. }
PSortedListBox = ^TSortedListBox;
TSortedListBox = object(TListBox)
SearchPos: Word;
ShiftState: Byte;
constructor Init(var Bounds: TRect; ANumCols: Word;
AScrollBar: PScrollBar);
procedure HandleEvent(var Event: TEvent); virtual;
function GetKey(var S: String): Pointer; virtual;
procedure NewList(AList: PCollection); virtual;
end;
{ TFileList is a TSortedList box that assumes it contains }
{ a TFileCollection as its collection. It also communicates }
{ through broadcast messages to TFileInput and TInfoPane }
{ what file is currently selected. }
PFileList = ^TFileList;
TFileList = object(TSortedListBox)
constructor Init(var Bounds: TRect; AScrollBar: PScrollBar);
destructor Done; virtual;
function DataSize: Word; virtual;
procedure FocusItem(Item: Integer); virtual;
procedure GetData(var Rec); virtual;
function GetText(Item: Integer; MaxLen: Integer): String; virtual;
function GetKey(var S: String): Pointer; virtual;
procedure HandleEvent(var Event: TEvent); virtual;
procedure ReadDirectory(AWildCard: PathStr); virtual;
procedure SetData(var Rec); virtual;
end;
{ TFileInfoPane is a TView that displays the information }
{ about the currently selected file in the TFileList }
{ of a TFileDialog. }
PFileInfoPane = ^TFileInfoPane;
TFileInfoPane = object(TView)
S: TSearchRec;
constructor Init(var Bounds: TRect);
procedure Draw; virtual;
function GetPalette: PPalette; virtual;
procedure HandleEvent(var Event: TEvent); virtual;
end;
{ TFileDialog is a standard file name input dialog }
TWildStr = PathStr;
const
fdOkButton = $0001; { Put an OK button in the dialog }
fdOpenButton = $0002; { Put an Open button in the dialog }
fdReplaceButton = $0004; { Put a Replace button in the dialog }
fdClearButton = $0008; { Put a Clear button in the dialog }
fdHelpButton = $0010; { Put a Help button in the dialog }
fdNoLoadDir = $0100; { Do not load the current directory }
{ contents into the dialog at Init. }
{ This means you intend to change the }
{ WildCard by using SetData or store }
{ the dialog on a stream. }
type
PFileDialog = ^TFileDialog;
TFileDialog = object(TDialog)
FileName: PFileInputLine;
FileList: PFileList;
WildCard: TWildStr;
Directory: PString;
constructor Init(AWildCard: TWildStr; const ATitle,
InputName: String; AOptions: Word; HistoryId: Byte);
constructor Load(var S: TStream);
destructor Done; virtual;
procedure GetData(var Rec); virtual;
procedure GetFileName(var S: PathStr);
procedure HandleEvent(var Event: TEvent); virtual;
procedure SetData(var Rec); virtual;
procedure Store(var S: TStream);
function Valid(Command: Word): Boolean; virtual;
procedure ReadDirectory;
end;
{ TDirEntry }
PDirEntry = ^TDirEntry;
TDirEntry = record
DisplayText: PString;
Directory: PString;
end;
{ TDirCollection is a collection of TDirEntry's used by }
{ TDirListBox. }
PDirCollection = ^TDirCollection;
TDirCollection = object(TCollection)
function GetItem(var S: TStream): Pointer; virtual;
procedure FreeItem(Item: Pointer); virtual;
procedure PutItem(var S: TStream; Item: Pointer); virtual;
end;
{ TDirListBox displays a tree of directories for use in the }
{ TChDirDialog. }
PDirListBox = ^TDirListBox;
TDirListBox = object(TListBox)
Dir: DirStr;
Cur: Word;
constructor Init(var Bounds: TRect; AScrollBar: PScrollBar);
destructor Done; virtual;
function GetText(Item: Integer; MaxLen: Integer): String; virtual;
procedure HandleEvent(var Event: TEvent); virtual;
function IsSelected(Item: Integer): Boolean; virtual;
procedure NewDirectory(var ADir: DirStr);
procedure SetState(AState: Word; Enable: Boolean); virtual;
end;
{ TChDirDialog is a standard change directory dialog. }
const
cdNormal = $0000; { Option to use dialog immediately }
cdNoLoadDir = $0001; { Option to init the dialog to store on a stream }
cdHelpButton = $0002; { Put a help button in the dialog }
type
PChDirDialog = ^TChDirDialog;
TChDirDialog = object(TDialog)
DirInput: PInputLine;
DirList: PDirListBox;
OkButton: PButton;
ChDirButton: PButton;
constructor Init(AOptions: Word; HistoryId: Word);
constructor Load(var S: TStream);
function DataSize: Word; virtual;
procedure GetData(var Rec); virtual;
procedure HandleEvent(var Event: TEvent); virtual;
procedure SetData(var Rec); virtual;
procedure Store(var S: TStream);
function Valid(Command: Word): Boolean; virtual;
procedure SetUpDialog;
end;
const
CInfoPane = #30;
{ TStream registration records }
const
RFileInputLine: TStreamRec = (
ObjType: 60;
VmtLink: Ofs(TypeOf(TFileInputLine)^);
Load: @TFileInputLine.Load;
Store: @TFileInputLine.Store
);
const
RFileCollection: TStreamRec = (
ObjType: 61;
VmtLink: Ofs(TypeOf(TFileCollection)^);
Load: @TFileCollection.Load;
Store: @TFileCollection.Store
);
const
RFileList: TStreamRec = (
ObjType: 62;
VmtLink: Ofs(TypeOf(TFileList)^);
Load: @TFileList.Load;
Store: @TFileList.Store
);
const
RFileInfoPane: TStreamRec = (
ObjType: 63;
VmtLink: Ofs(TypeOf(TFileInfoPane)^);
Load: @TFileInfoPane.Load;
Store: @TFileInfoPane.Store
);
const
RFileDialog: TStreamRec = (
ObjType: 64;
VmtLink: Ofs(TypeOf(TFileDialog)^);
Load: @TFileDialog.Load;
Store: @TFileDialog.Store
);
const
RDirCollection: TStreamRec = (
ObjType: 65;
VmtLink: Ofs(TypeOf(TDirCollection)^);
Load: @TDirCollection.Load;
Store: @TDirCollection.Store
);
const
RDirListBox: TStreamRec = (
ObjType: 66;
VmtLink: Ofs(TypeOf(TDirListBox)^);
Load: @TDirListBox.Load;
Store: @TDirListBox.Store
);
const
RChDirDialog: TStreamRec = (
ObjType: 67;
VmtLink: Ofs(TypeOf(TChDirDialog)^);
Load: @TChDirDialog.Load;
Store: @TChDirDialog.Store
);
const
RSortedListBox: TStreamRec = (
ObjType: 68;
VmtLink: Ofs(TypeOf(TSortedListBox)^);
Load: @TSortedListBox.Load;
Store: @TSortedListBox.Store
);
procedure RegisterStdDlg;
function PathValid(var Path: PathStr): Boolean; { !!! made public }
function IsWild(const S: String): Boolean; { !!! made public }
function IsDir(const S: String): Boolean; { !!! made public }
implementation
uses App, Memory, HistList, MsgBox;
end.