[Back to OOP SWAG index]  [Back to Main SWAG index]  [Original]

{
> I need help with the turbo vision handleevent procedure...I can't get a
> dialog box to handle any events of its own...I got Tapplications
> handlevent to work for me, but it just won't work in a dialog box.  Please
> help.

Normally a dialog can handle some 4 types of events - that is END the dialog
with the return code of your event - I'm guessing that you want a dialog with
some ten buttons or something like that ?
I've designed a dialog decendor that will take up to 16k buttons

Extract from peldialogs - Copyright 1994 PEL-Data Bor†s Sweden
Released for public domain on term that origin of code is mentioned in
credits part of your program !
}

unit peldialogs;

interface

uses
 Objects,
 Drivers,
 dialogs,
 views,
 pelRegtypes,
 pelobjects,
 msgbox;

Type
 Ppeldialog = ^Tpeldialog;
 Tpeldialog = object(tdialog)
  endcmds:Ppelwordcollection;
  constructor Init(var Bounds: TRect; ATitle: TTitleStr);
  destructor done;virtual;
  procedure addcmd(cmd:word);virtual;
  procedure HandleEvent(var Event: TEvent); virtual;
 end;

implementation
uses
 Dos,    Memory,
 StdDlg,  app,
 peltextlang,
 pelfile, validate, pelvalidate,pelstrings;


constructor Tpeldialog.Init(var Bounds: TRect; ATitle: TTitleStr);
begin
 inherited Init(Bounds,ATitle);
 endcmds:=new(Ppelwordcollection,init(5,5));
end;

destructor Tpeldialog.done;
begin
 dispose(endcmds,done);
 inherited done;
end;

procedure Tpeldialog.addcmd(cmd:word);
var
 p:pword;
begin
 new(p);
    p^:=cmd;
 endcmds^.insert(p);
end;

procedure Tpeldialog.HandleEvent(var Event: TEvent);
var Index: Integer;
begin
 inherited HandleEvent(event);
 if Event.What = evCommand then begin
  if endcmds^.search(@Event.Command,index) then begin
   if State and sfModal <> 0 then begin
    EndModal(Event.Command);
    ClearEvent(Event);
   end;
  end;
 end;
end;

end.
{
Use the ppeldialog instead of the pdialog

Add a call to addcmd() for every command you want the dialog to exit with
normally a dialog will end for cmok,cmcancel,cmyes and cmno - those dont need
to be added !
}

[Back to OOP SWAG index]  [Back to Main SWAG index]  [Original]