home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 19
/
CD_ASCQ_19_010295.iso
/
dos
/
prg
/
pas
/
ktools
/
source
/
fiches.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-11-22
|
10KB
|
388 lines
Program Fiches;
{ Editeur de fiches }
{ K.B. novembre 1994 }
{.$DEFINE debug}
{$IFDEF debug}
{$A+,B-,D+,E-,F-,I+,L+,N-,R+,S+,V-,W+,X+}
{$ELSE}
{$A+,B-,D-,E-,F-,I+,L-,N-,R-,S-,V-,W+,X+}
{$ENDIF}
Uses Dos,UMem,UDrivers,
OGenView,OTxtView,OEdWin,OFiches,ODialWin;
Const
cmInit = $300;
cmOpen = $301;
cmAjouteFiche = $302;
cmInsereFiche = $303;
cmChangeTitre = $304;
cmMenu = $305;
cmHelp = $306;
cmImprimer = $307;
cmAbout = $308;
cmNouveau = $309;
cmSupprime = $30A;
Type
TFichesApp=object(TTextApp)
Constructor Init;
Procedure InitStatusLine;virtual;
Procedure HandleEvent(Var Event:TEvent);virtual;
Procedure ExecMenu;
Procedure LoadFile(S:String);
Procedure NewFile;
Procedure SaveFile;
Procedure ChangeTitre;
Procedure AjouteFiche(ALaFin:Boolean);
Procedure SupprimeFiche;
Procedure Bascule;
End;
Constructor TFichesApp.Init;
Begin
TTextApp.Init;
Titre:='Editeur de fiches V 1.0 (K.B. 1994)';
if paramcount>0
then SetCommand(cmInit);
End;
Procedure TFichesApp.InitStatusLine;
Begin
TTextApp.InitStatusLine;
with StatusLine^ do
begin
AjouterItem('AltX Quitter',AltX);
AjouterItem('F2 Ouvrir',F2);
AjouterItem('F3 Sauver',F3);
AjouterItem('F4 Nouveau',F4);
AjouterItem('F5 Bascule',F5);
AjouterItem('F10 Menu',F10);
end;
End;
Procedure TFichesApp.ExecMenu;
Var MenuWin:PMenuWin;
Begin
MenuWin:=New(PMenuWin,Init(10,4));
MenuWin^.Ident:='MENU';
if MenuWin^.IsValid
then begin
with MenuWin^ do
begin
AjouterItem('Aide F1',cmHelp);
AjouterItem('Fichier... F2',cmOpen);
AjouterItem('Sauver F3',cmSave);
AjouterItem('Ajouter une fiche... F4',cmAjouteFiche);
AjouterItem('Insérer une fiche... Alt-I',cmInsereFiche);
AjouterItem('Supprimer une fiche... Alt-D',cmSupprime);
AjouterItem('Changer le titre... Alt-T',cmChangeTitre);
AjouterItem('Nouveau fichier ',cmNouveau);
AjouterItem('A Propos... Alt-A',cmAbout);
AjouterItem('Quitter Alt-X',cmQuit);
end;
Insert(MenuWin);
MenuWin^.Exec;
end
else Message(MenuWin^.GetErrorMsg);
dispose(MenuWin,Done);
End;
Procedure TFichesApp.LoadFile(S:String);
Var SelWin : PLFWin;
FicheWin : PEdFiche;
PF : PFiche;
Begin
ClearDeskTop;
Patience('Chargement en cours ...');
SelWin:=New(PLFWin,Load(0,1,20,23,S));
if SelWin^.IsValid
then begin
Insert(SelWin);
SelWin^.Show;
SelWin^.TabFiches^.Lire(PF,1);
FicheWin:=New(PEdFiche,Init(20,1,60,23,PF));
Insert(FicheWin);
FicheWin^.Show;
end
else begin
Message(SelWin^.GetErrorMsg);
dispose(SelWin,Done);
end;
FinPatience;
End;
Procedure TFichesApp.NewFile;
Var SelWin : PLFWin;
FicheWin : PEdFiche;
PF : PFiche;
Begin
ClearDeskTop;
SelWin:=New(PLFWin,Init(0,1,20,23));
if SelWin^.IsValid
then begin
Insert(SelWin);
SelWin^.Show;
SelWin^.TabFiches^.Lire(PF,1);
FicheWin:=New(PEdFiche,Init(20,1,60,23,PF));
Insert(FicheWin);
FicheWin^.Show;
end
else begin
Message(SelWin^.GetErrorMsg);
dispose(SelWin,Done);
end;
End;
Procedure TFichesApp.SaveFile;
Var S : String;
W : PLFWin;
D : DirStr;
N : NameStr;
E : ExtStr;
p : Byte;
WE : PEdFiche;
Begin
W:=PLFWin(Find('LISTE'));
if W=nil
then exit;
if W^.TabFiches^.FileName<>''
then begin
Patience('Sauvegarde en cours...');
W^.TabFiches^.SauverSous(W^.TabFiches^.FileName);
FinPatience;
end
else begin
S:='';
WinRead(S,'Nom du fichier à sauver');
if S<>''
then begin
Majuscule(S);
p:=pos('.',S);
if p=0
then S:=S+'.BNT';
Patience('Sauvegarde en cours...');
W^.TabFiches^.SauverSous(S);
FinPatience;
if not W^.TabFiches^.IsValid
then begin
Message(W^.TabFiches^.GetErrorMsg);
W^.TabFiches^.ErrorFlag:=0;
end
else begin
FSplit(S,D,N,E);
W^.ChangeTitre(N+E);
end;
end;
end;
WE:=PEdFiche(Find('EDWIN'));
if WE<>nil
then WE^.Modified:=false;
End;
Procedure TFichesApp.ChangeTitre;
Var W : PLFWin;
E : TEvent;
S : String;
PF : PFiche;
WE : PEdFiche;
Begin
W:=PLFWin(Find('LISTE'));
if W=nil
then exit;
W^.TabFiches^.Lire(PF,W^.Choix);
S:=PF^.Titre;
WinRead(S,'Nouveau titre');
if S<>''
then begin
PF^.Titre:=S;
W^.DrawInterior;
WE:=PEdFiche(Find('EDWIN'));
if WE<>nil
then WE^.Modified:=true;
E.What:=evCommand;
E.Command:=cmLoadEdit;
W^.TabFiches^.Lire(E.InfoPtr,W^.Choix);
SetEvent(E);
end;
End;
Procedure TFichesApp.AjouteFiche(ALaFin:Boolean);
Var S : String;
W : PLFWin;
E : TEvent;
WE : PEdFiche;
Begin
W:=PLFWin(Find('LISTE'));
if W=nil
then exit;
S:='';
WinRead(S,'Titre de la nouvelle fiche');
if S<>''
then begin
if ALaFin
then W^.AjouteFiche(S)
else W^.InsereFiche(S);
WE:=PEdFiche(Find('EDWIN'));
if WE<>nil
then WE^.Modified:=true;
E.What:=evCommand;
E.Command:=cmLoadEdit;
W^.TabFiches^.Lire(E.InfoPtr,W^.Choix);
SetEvent(E);
end;
End;
Procedure TFichesApp.SupprimeFiche;
Var S : String;
W : PLFWin;
E : TEvent;
WE : PEdFiche;
Begin
W:=PLFWin(Find('LISTE'));
if W=nil
then exit;
S:='';
WinRead(S,'Supprimer cette fiche ?');
Majuscule(S);
if S='OUI'
then begin
W^.SupprimeFiche;
WE:=PEdFiche(Find('EDWIN'));
if WE<>nil
then WE^.Modified:=true;
E.What:=evCommand;
E.Command:=cmLoadEdit;
W^.TabFiches^.Lire(E.InfoPtr,W^.Choix);
SetEvent(E);
end;
End;
Procedure TFichesApp.Bascule;
Var W : PGenView;
L : PLFWin;
E : TEvent;
Begin
W:=FindSelect;
if W=nil
then exit;
if W^.Ident='LISTE'
then begin
L:=PLFWin(W);
E.What:=evCommand;
E.Command:=cmLoadEdit;
L^.TabFiches^.Lire(E.InfoPtr,L^.Choix);
SetEvent(E);
end;
if W^.Ident='EDWIN'
then if W^.Prec<>nil
then W^.Prec^.Select;
End;
Procedure TFichesApp.HandleEvent(Var Event:TEvent);
Var FicheWin : PEdFiche;
PF : PFiche;
S : String;
Menu : PMenuWin;
Begin
if (Event.What=evCommand) and (Event.Command=cmClose)
then begin
FicheWin:=PEdFiche(Find('EDWIN'));
if (FicheWin<>nil) and (FicheWin^.Modified=true)
then SaveFile;
ClearDeskTop;
exit;
end;
TTextApp.HandleEvent(Event);
case Event.What of
evCommand:
case Event.Command of
cmLoadEdit :
begin
PF:=PFiche(Event.InfoPtr);
FicheWin:=PEdFiche(Find('EDWIN'));
if FicheWin<>nil
then begin
FicheWin^.ChangeTitre(PF^.Titre);
FicheWin^.EdObj:=PF^.Texte;
FicheWin^.EdObj^.NbCols:=FicheWin^.Largeur;
FicheWin^.EdObj^.NbLines:=FicheWin^.Hauteur;
FicheWin^.DrawInterior;
FicheWin^.Select;
end
else begin
FicheWin:=New(PEdFiche,Init(20,1,60,23,PF));
Insert(FicheWin);
FicheWin^.Show;
end;
end;
cmOpen:
begin
FicheWin:=PEdFiche(Find('EDWIN'));
if (FicheWin<>nil) and (FicheWin^.Modified=true)
then SaveFile;
S:=GetFile('*.BNT');
if S<>''
then LoadFile(S);
end;
cmInit : LoadFile(ParamStr(1));
cmMenu : ExecMenu;
cmNouveau : begin
FicheWin:=PEdFiche(Find('EDWIN'));
if FicheWin^.Modified=true
then SaveFile;
NewFile;
end;
cmSave : SaveFile;
cmChangeTitre : ChangeTitre;
cmAjouteFiche : AjouteFiche(true);
cmInsereFiche : AjouteFiche(false);
cmSupprime : SupprimeFiche;
cmBascule : Bascule;
cmAbout:
Message(chr(13)+
' Editeur de Fiches '+chr(13)+
' Version 1.0 '+chr(13)+
' Kostrzewa Bruno (1994) '+chr(13));
else exit;
end;
evKeyDown:
case Event.KeyCode of
F1: SetCommand(cmHelp);
F2: SetCommand(cmOpen);
F3: SetCommand(cmSave);
F4: SetCommand(cmAjouteFiche);
F5: SetCommand(cmBascule);
F10: SetCommand(cmMenu);
AltN: SetCommand(cmAjouteFiche);
AltT: SetCommand(cmChangeTitre);
AltA: SetCommand(cmAbout);
AltD: SetCommand(cmSupprime);
AltI: SetCommand(cmInsereFiche);
else exit;
end;
else exit;
end;
Event.What:=evNothing;
End;
Var MonApp:TFichesApp;
BEGIN
{$ifdef debug}
initmem;
{$endif}
MonApp.Init;
if MonApp.IsValid
then MonApp.Exec
else QuitMsg:=MonApp.GetErrorMsg;
MonApp.Done;
{$ifdef debug}
diagmem;
{$endif}
END.
{ Fin du fichier Fiches.Pas }