home *** CD-ROM | disk | FTP | other *** search
- {
- The following example will demonstrate how to create a listbox
- of file items and enable the user to double click on any item and
- produce a Message Box with the listbox item selected.
- }
- {$X+}
- Program Simple_ListBox;
-
- Uses
- Objects, Drivers, Views, Menus, Dialogs, App, Crt, Dos, MsgBox;
-
- Const
- cmNewCollect = 102;
- DisableNewcollect: TCommandSet = [102];
-
- Type
-
- Tmyapp = object(Tapplication)
- Constructor Init;
- Procedure Initstatusline; Virtual;
- Procedure Initmenubar; Virtual;
- Procedure NewCollect; Virtual;
- Procedure HandleEvent(var Event: TEvent); Virtual;
- End;
-
- PListBox = ^RListBox;
- RListBox = object(TlistBox)
- Constructor Init(var Bounds:TRect; ANumCols:Word; AScrollBar:
- PScrollBar);
- Procedure Process;
- Destructor Done; Virtual;
- End;
-
- PMyDialog = ^MyDialog;
- Mydialog = object(Tdialog)
- Constructor Init(var bounds:trect; MyTitle:ttitlestr);
- Destructor done; Virtual;
- Procedure HandleEvent(var Event: TEvent); Virtual;
- End;
-
- Var
- NameList: PstringCollection;
- Plist: ^Rlistbox;
- MyApp: Tmyapp;
-
- Constructor Mydialog.Init(var Bounds:TRect; MyTitle: TTitleStr);
- Begin
- TDialog.Init(Bounds, MyTitle);
- End;
-
- Destructor Mydialog.Done;
- Begin
- TDialog.done;
- Dispose(NameList, Done);
- EnableCommands(DisableNewCollect);
- End;
-
- Procedure MyDialog.HandleEvent(var Event:TEvent);
- var
- Index: integer;
- Begin
- TDialog.HandleEvent(Event);
- if (Event.Double = true) and (Event.What = evNothing) then
- begin
- sound(100);
- delay(100);
- nosound;
- Index:=(Plist^.Focused);
- Messagebox(Plist^.GetText(Index,20) ,nil,mfOkButton);
- end;
- ClearEvent(Event);
- End;
-
- Constructor TMyapp.Init;
- Begin
- TApplication.Init;
- End;
-
- Constructor RListBox.Init(var Bounds:TRect; ANumCols:Word;AScrollBar:
- PScrollBar);
- Begin
- TListBox.Init(Bounds, ANumCols, AScrollBar);
- End;
-
- Destructor RListBox.Done;
- Begin
- Tlistbox.Done;
- End;
-
- Procedure TMyApp.InitStatusLine;
- Var
- R:Trect;
- Begin
- GetExtent(R);
- R.A.Y := R.B.Y -1;
- Statusline :=new(Pstatusline, init(R,
- NewStatusDef(0,$FFFF,
- NewStatusKey('~Alt-X~ Exit',kbAltX, cmQuit,
- NewStatusKey('~F10~ Menu',kbF10,cmMenu,
- Nil)),Nil)
- ));
- End;
-
- Procedure Rlistbox.Process;
- var
- DirInfo: SearchRec;
- Begin
- NameList:=New(Pstringcollection,Init(50,10));
- With NameList^ do
- Begin
- FindFirst('*.*', Archive, DirInfo);
- while DosError = 0 do
- Begin
- Insert(Newstr(Dirinfo.Name));
- FindNext(DirInfo);
- End;
- End;
- End;
-
- Procedure TMyApp.NewCollect;
- Var
- MyBox: PMyDialog;
- R : TRect;
- pBor : ^TScrollBar;
- Col: word;
- Begin
- Plist^.Process;
- R.Assign(10,10,60,20);
- MyBox := New(PmyDialog, Init(R, 'Scroll Collection'));
- Col:=1;
- R.Assign(40, 1, 41, 9);
- PBor:= New(Pscrollbar, Init(R));
- R.Assign(9, 1, 40, 9);
- Plist:=New(PListbox, Init(R,Col,PBor));
- Plist^.Newlist(Namelist);
- MyBox^.Insert(PBor);
- MyBox^.Insert(PList);
- Desktop^.insert(myBox);
- End;
-
- Procedure TMyApp.HandleEvent(var Event: TEvent);
- Begin
- TApplication.HandleEvent(Event);
- if Event.What = evCommand then
- Begin
- case Event.Command of
- cmNewCollect: Begin
- DisableCommands(DisableNewCollect);
- Newcollect;
- End
- else
- ClearEvent(Event);
- Exit;
- End;
- ClearEvent(Event);
- End;
- End;
-
- Procedure TMyApp.InitMenubar;
- var
- R:Trect;
- Begin
- GetExtent(R);
- R.B.Y := R.A.Y +1;
- MenuBar :=new(PMenubar, init(R, Newmenu(
- NewSubMenu('~L~istbox Menu',hcnocontext, Newmenu(
- NewItem('~B~ox','',kbF9,cmnewcollect,hcnocontext,
- NewLine(
- NewItem('~E~xit','',kbf10,cmquit,hcnocontext,
- Nil)))), Nil))));
- End;
-
- Begin
- MyApp.Init;
- MyApp.Run;
- MyApp.Done;
- End.