[Back to OOP SWAG index] [Back to Main SWAG index] [Original]
{
672: How to Create a Listbox and Get a Double Click
Pascal All TI-09/30/94
Demonstrates handling double click on a
listbox.
PRODUCT : Pascal NUMBER : 672
VERSION : All
OS : DOS
DATE : September 30, 1994 PAGE : 1/1
TITLE : How to Create a Listbox and Get a Double Click
{
The following example demonstrates how to create a listbox
of file items and enable the user to double click on any item.
This produces a Message Box containing the listbox selected
item.
}
{$X+}
Program Simple_ListBox;
Uses
Objects, Drivers, Views, Menus, Dialogs, App, Crt, Dos, MsgBox;
Const
cmNewCollect = 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);
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;
PBorland: ^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);
PBorland:= New(PScrollBar, Init(R));
R.Assign(9, 1, 40, 9);
Plist:=New(PListbox, Init(R,Col,PBorland));
Plist^.Newlist(Namelist);
MyBox^.Insert(PBorland);
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: Newcollect;
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;
PRODUCT : Turbo Pascal NUMBER : 672
VERSION : 6.0
OS : MS/PC DOS
DATE : June 23, 1994 PAGE : 2/5
TITLE : How to Create a Listbox and Get a Double Click
Begin
MyApp.Init;
MyApp.Run;
MyApp.Done;
End.
DISCLAIMER: You have the right to use this technical information
subject to the terms of the No-Nonsense License Statement that
you received with the Borland product to which this information
pertains.
PACHXA296:PACHXA296
[Back to OOP SWAG index] [Back to Main SWAG index] [Original]