home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
magazine
/
drdobbs
/
1990
/
09
/
entsming.asc
< prev
next >
Wrap
Text File
|
1990-07-25
|
5KB
|
176 lines
_INSIDE OBJECT PROFESSIONAL_
by Gary Entsminger
[LISTING ONE]
program Edit;
uses OpCrt, OpRoot, OpCmd, OpFrame, OpWindow, OpMemo, OpEditor;
var
TE : TextEditor;
FSize : LongInt;
ExitCommand : Word;
AllDone : Boolean;
begin
if not TE.InitCustom(2, 4, 79, 24, { Window coordinates }
DefaultColorSet, { ColorSet }
DefWindowOptions or wBordered, { Win options }
65521) { Buffer size }
then
begin
WriteLn('Failed to init TextEditor. Status = ', InitStatus);
Halt;
end;
{ use built-in status and error handlers provided by OPMEMO }
TE.SetStatusProc(MemoStatus);
TE.SetErrorProc(MemoError);
{ Create and Read a text file }
TE.ReadFile('AnyFile', FSize);
AllDone := False;
repeat
TE.Process;
ExitCommand := TE.GetLastCommand;
case ExitCommand of
ccSaveExit, { Save and exit -- file already saved }
ccAbandonFile, { Abandon file }
ccError : { Fatal error }
AllDone := True;
{...user exit commands..}
end;
until AllDone;
TE.Erase;
TE.Done;
ClrScr;
end.
[LISTING TWO]
program HelloWorld;
Uses HWMain, OpSwap;
begin
HelloWorldMain;
end;
unit HWMain;
interface
uses
OpInLine, OpSwap1;
procedure HelloWorldMain;
implementation
const
HotKey = $080F { code for ALT-TAB }
Swap1 = 'Hello1.SWP';
Swap2 = 'Hello2.SWP';
{$F+}
procedure PopUpEntryPoint;
begin
Writeln('Hello World');
end;
{$F-}
procedure HelloWorldMain;
begin
SetSwapMsgOn( not WillSwapUseEMS(ParagraphsToKeep) );
{ define the popup }
if DefinePop(HotKey, PopUpEntryPoint, Ptr($SSeg,SPtr)) then
begin
Writeln('PopUp loaded, press <ALT><TAB> to activate.');
{ Make PopUp routines active. }
PopUpsOn;
{ Try to go resident. }
StayResSwap(ParagraphsToKeep, 0, Swap1, Swap2, True);
end;
{ If we get here, report failure. }
Writeln('Unable to go resident. ');
end;
end.
[LISTING THREE]
program CommandWindowExample; {EXCMDWIN.PAS}
uses
OpCrt, OpRoot, OpCmd, OpFrame, OpWindow;
const
{Define a trivial KeySet of a few cursor commands}
KeyMax = 18;
KeySet : array[0..KeyMax] of Byte = (
{length keys command type key sequence}
3, $00, $48, ccUp, {Up}
3, $00, $50, ccDown, {Down}
3, $00, $4B, ccLeft, {Left}
3, $00, $4D, ccRight, {Right}
2, $1B, ccQuit); {Esc}
type
SampleWindow =
object(CommandWindow)
procedure Process; virtual;
end;
var
Commands : CommandProcessor;
CmdWin : SampleWindow;
Finished : Boolean;
procedure SampleWindow.Process;
begin
repeat
{Get a command}
GetNextCommand;
case GetLastCommand of
ccUp : WriteLn('ccUp');
ccDown : WriteLn('ccDown');
ccLeft : WriteLn('ccLeft');
ccRight : WriteLn('ccRight');
ccQuit : WriteLn('ccQuit');
ccChar : WriteLn('ccChar: ', Char(Lo(GetLastKey)));
else WriteLn('ccNone');
end;
until (GetLastCommand = ccQuit) or (GetLastCommand = ccError);
end;
begin
{Make a small CommandProcessor}
Commands.Init(@KeySet, KeyMax);
{Make a bordered CommandWindow}
if not CmdWin.InitCustom(30, 5, 50, 15, {Window coordinates}
DefaultColorSet, {Color set}
wBordered+wClear+wSaveContents, {Window options}
Commands, {Command processor}
ucNone) {Unit code}
then begin
WriteLn('Failed to init CommandWindow. Status = ', InitStatus);
Halt;
end;
{Add headers and draw window}
CmdWin.wFrame.AddHeader(' Command window ', heTC);
CmdWin.wFrame.AddHeader(' <Esc> to Quit ', heBC);
CmdWin.Draw;
{Get and process commands}
Finished := False;
repeat
CmdWin.Process;
case CmdWin.GetLastCommand of
ccQuit : Finished := True; {Quit}
ccError : begin {Error}
WriteLn('Error: ', CmdWin.GetLastError);
Finished := True;
end;
ccUser0..ccUser55 : WriteLn('user command'); {Handle exit command}
end;
until Finished;
{Clean up}
CmdWin.Done;
Commands.Done;
end.