[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]