home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Best of German Only 1
/
romside_best_of_german_only_1.iso
/
wissen
/
dos
/
wgraph
/
entpack.exe
/
WGBSP!.EXE
/
BSP22.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1992-12-05
|
5KB
|
196 lines
program Beispiel22;
uses GDecl,
GDrivers,
GEvent,
GViews,
GDlg,
GApp,
Graph;
const cmErfassen = 101;
cmBlaettern = 102;
cmSaveData = 21;
cmLeft = 22;
cmRight = 23;
type TApplication=object(TApp)
procedure InitMenuBar; virtual;
procedure SetDialogData; virtual;
procedure HandleEvent; virtual;
procedure Erfassen(DInput:boolean);
end;
PAdressWindow=^TAdressWindow;
TAdressWindow=object(TDlgWindow)
PosIndex:word;
constructor Init(var Bounds:TRect;ATitle:str80;AType:byte;DInput:boolean);
destructor Done; virtual;
procedure HandleEvent; virtual;
end;
tAdressData=record
Schalter : string[9];
Firma : string[40];
Ort : string[25];
Strasse : string[30];
Telefon : string[20];
end;
var MyProg:TApplication;
Adresse:tAdressData;
Dat : file of tAdressData;
{Implementation TApplication}
procedure TApplication.InitMenuBar;
begin
Palette[1]:=#14;
Palette[5]:=#14;
Palette[4]:=#4;
Palette[12]:=#4;
MainMenu('~F~enster',0);
SubMenu('~E~rfassen F2',cmErfassen,0,kbF2,false,false);
SubMenu('~B~lättern F3',cmBlaettern,0,kbF3,false,false);
SubMenu('E~x~it Alt-X',cmCloseApplication,0,altX,false,false);
end;
procedure TApplication.SetDialogData;
begin
with Adresse do
begin
Schalter:='TTTTLLLLS';
FillChar(Firma,SizeOf(Firma),' ');
FillChar(Ort,SizeOf(Ort),' ');
FillChar(Strasse,SizeOf(Strasse),' ');
FillChar(Telefon,SizeOf(Telefon),' ');
end;
end;
procedure TApplication.HandleEvent;
begin
Heap^.ShowHeapStatus(523,8,White);
TProgram.HandleEvent;
case Event.Command of
cmErfassen : Erfassen(true);
cmBlaettern : Erfassen(false);
end; {case}
end;
procedure TApplication.Erfassen(DInput:boolean);
var R:TRect;
Window:PAdressWindow;
begin
R.Assign(60,80,440,350);
Window:=new(PAdressWindow, Init(R,'Beispiel 22 : Mini-Adressdatenbank',
winDouble+winPanel,DInput));
with Window^ do
begin
SetPushButton(150,220,80,22,'OK',cmCloseWindow);
SetPushButton(40,220,80,22,'Sichern',cmSaveData);
if not DInput then SetDisabled;
SetPushButton(260,220,40,22,'<<',cmLeft);
if DInput then SetDisabled;
SetPushButton(310,220,40,22,'>>',cmRight);
if DInput then SetDisabled;
SetInputLine(140,95,25,'~F~irma :',40,ASCII);
if not DInput then SetDisabled;
SetInputLine(140,120,20,'~O~rt :',25,ASCII);
if not DInput then SetDisabled;
SetInputLine(140,145,20,'~S~traße :',30,ASCII);
if not DInput then SetDisabled;
SetInputLine(140,170,20,'~T~elefon :',20,ASCII);
if not DInput then SetDisabled;
if DInput then SetStaticText(40,35,'Adressenerfassung',LeftText)
else SetStaticText(40,35,'Blättern in der Datei',LeftText);
SetTextParameters(TriplexFont,HorizDir,2);
ChangePalColor(10,Red);
SetData(Adresse);
end;
InsertDesktop(Window);
end;
{Implementation TAdressWindow}
constructor TAdressWindow.Init(var Bounds:TRect;ATitle:str80;AType:byte;DInput:boolean);
begin
TDlgWindow.Init(Bounds,ATitle,AType);
PosIndex:=0;
assign(Dat,'ADRESS.DAT');
reset(Dat);
if not DInput then
begin
read(Dat,Adresse);
SetData(Adresse);
end;
end;
destructor TAdressWindow.Done;
begin
TDlgWindow.Done;
close(Dat);
end;
procedure TAdressWindow.HandleEvent;
var k:word;
procedure DeleteDataRecord;
begin
with Adresse do
begin
FillChar(Firma,SizeOf(Firma),' ');
FillChar(Ort,SizeOf(Ort),' ');
FillChar(Strasse,SizeOf(Strasse),' ');
FillChar(Telefon,SizeOf(Telefon),' ');
end;
end;
procedure ReadDataRecord;
begin
seek(Dat,PosIndex);
read(Dat,Adresse);
SetData(Adresse);
DrawMask;
Event.Command:=cmNothing;
end;
begin
TDlgWindow.HandleEvent;
if Event.Command=cmSaveData then
begin
write(Dat,Adresse);
DeleteDataRecord;
SetData(Adresse);
DrawMask;
Event.Command:=cmNothing;
Exit;
end;
if Event.Command=cmRight then
if FilePos(Dat)<FileSize(Dat) then
begin
inc(PosIndex);
ReadDataRecord;
Exit;
end;
if Event.Command=cmLeft then
if PosIndex>0 then
begin
dec(PosIndex);
ReadDataRecord;
Exit;
end;
end;
{--- Hauptprogramm ---}
begin
MyProg.Init('Beispiel 22');
MyProg.Run;
MyProg.Done;
end.