Function P_Load:string;
var Nom : string[12];
Entree : boolean;
begin
Nom:='';
Readbuf(6,4,52,6,Sub_Buf^);
BoxFill(6,4,52,6,' ');
Box13.Rectangle(6,4,52,6,Simple);
Putxy(21,4,' Load File Name ');
TexteLoad:='*'+Extension;
if Uppers(Disque_Nom) <> Uppers(Repertoire) Then TexteLoad:=Disque_Nom+TexteLoad;
Entree:=ReadBox(8,5,TexteLoad,43,80);
Writebuf(6,4,52,6,Sub_Buf^);
csoff;
if Entree Then Entree:=Verify_Rep_Fic(Disque_Nom,TexteLoad);
if Entree Then
begin
if Pos('*',TexteLoad)>0 Then
Nom:=_Fichiers_Dir(Disque_Nom,TexteLoad)
else
if TexteLoad<>'' Then
begin
if Not FileExists(Disque_Nom,TexteLoad) Then
begin
Entree:=Erreur_Critique(2,TexteLoad);
Entree:=false;
TexteLoad:='*'+Extension;
Nom:='';
end
else
begin
Nom:=TexteLoad;
TexteLoad:='*'+Extension;
end;
end
else Entree:=false;
if (Entree) And (Nom<>'') Then
begin
if _Save_Fichier Then
begin
if P_New=69 Then
begin
NomFic:=Nom;
P_load:=Nom;
end
else P_Load:='';
end
else
begin
NomFic:=Nom;
P_load:=Nom;
end;
end
else
P_Load:='';
end
else
P_Load:='';
end;
Function P_Directory(Code:byte):string;
var Entree : boolean;
Nom : string;
begin
Readbuf(6,9,52,11,Sub_buf^);
BoxFill(6,9,52,11,' ');
Box13.Rectangle(6,9,52,11,Simple);
Putxy(21,9,' Enter File Name ');
if Texte_Dire='' Then Texte_Dire:='*.*';
if Disque_Dire<>Repertoire Then Texte_Dire:=Disque_Dire+Texte_Dire;
Entree:=ReadBox(8,10,Texte_Dire,43,80);
Writebuf(6,9,52,11,Sub_buf^);
csoff;
if (Pos('.',Texte_Dire) >0) Then
Nom:='*'+Copy(Texte_Dire,Pos('.',Texte_Dire),Length(Texte_Dire));
if Entree Then Entree:=Verify_Rep_Fic(Disque_Dire,Texte_Dire);
if (Nom='') And (Texte_Dire<>'') Then
Nom:='*'+Copy(Texte_Dire,Pos('.',Texte_Dire),Length(Texte_Dire));
if (Entree) Then
begin
if (POS('*',Texte_Dire)>0) Then
Texte_Dire:=_Fichiers_Dir(Disque_dire,Texte_Dire)
else
if Texte_Dire<>'' Then
begin
if Not FileExists(Disque_Dire,Texte_Dire) Then
begin
Entree:=Erreur_Critique(2,Texte_Dire);
Entree:=false;
end;
end
else Entree:=false;
end;
if Not Entree Then
begin
if Texte_Dire='' Then Texte_Dire:='*.*';
if Disque_Dire='' Then Disque_Dire:=Repertoire;
end
else
if Disque_Dire='' Then Disque_Dire:=Repertoire;
if Entree Then
begin
if Texte_Dire<>'' Then
begin
if _Save_Fichier Then
begin
if P_New=69 Then
begin
NomFic:=Texte_Dire;
Disque_Nom:=Disque_Dire;
P_Directory:=Texte_Dire;
end
else P_Directory:='';
end
else
begin
NomFic:=Texte_Dire;
P_Directory:=Texte_Dire;
Disque_Nom:=Disque_Dire;
end;
end
else
P_Directory:='';
end
else
P_Directory:='';
if Nom='' Then Nom:='*.*';
Texte_Dire:=Uppers(Nom);
end;
Procedure P_Change_Dir;
Var Entree:boolean;
SR:string;
begin
Entree:=false;
SR:=Repertoire;
Readbuf(6,10,52,12,Sub_Buf^);
BoxFill(6,10,52,12,' ');
Box13.Rectangle(6,10,52,12,Simple);
Putxy(21,10,' New Directory ');
Entree:=ReadBox(8,11,SR,43,80);
WriteBuf(6,10,52,12,Sub_Buf^);
if Entree Then Change_Directori(SR);
csoff;
end;
Procedure P_Save;
Var SR,SN : string;
NomError : string[4];
Entree : boolean;
n,Color : byte;
Ch : Char;
begin
if (NomFic='NONAME.???') Then
begin
Color:=textAttr;
textAttr:=Menu_Color;
Entree:=false;
Readbuf(6,7,52,9,Sub_Buf^);
BoxFill(6,7,52,9,' ');
Box13.Rectangle(6,7,52,9,Simple);
Putxy(21,7,' Rename Noname ');
SR:=Disque_Nom;
SN:=NomFic;
Entree:=ReadBox(8,8,SN,43,80);
Writebuf(6,7,52,9,Sub_buf^);
Csoff;
if (Entree) And (Uppers(SN) = 'PRN') Then
begin
Entree:=false;
end
else
if (Entree) Then
begin
Entree:=Verify_Rep_Fic(SR,SN);
if Entree Then
begin
SN:=Uppers(SN);
NomError:=Copy(SN,1,4);
if NomError = 'PRN.' Then
begin
Entree:=false;
SN:='';
SR:='';
textAttr:=Color;
exit;
end;
end;
end;
if Entree Then Entree:=(Uppers(SN)<>'NONAME.???');
if Entree Then
begin
if SN='' Then SN:='*'+extension;
if (Pos('*',SN)>0) Then SN:=_Fichiers_Dir(SR,SN);
if SN='' Then
begin
textAttr:=Color;
Exit;
end;
if FileExists(SR,SN) Then
begin
Readbuf(6,7,52,9,Sub_Buf^);
BoxFill(6,7,52,9,' ');
Box13.Rectangle(6,7,52,9,Simple);
Putxy(25,7,' Verify ');
Putxy(12,8,'Overwrite '+SN+'? (Y / N)');
Csoff;
Repeat
Ch:=Readkey;
Until (Ord(Ch)=27) OR (Upcase(Ch) in['Y','N']);
Writebuf(6,7,52,9,Sub_buf^);
if Upcase(Ch)='Y' Then
begin
if SR='' Then Disque_Nom:=Repertoire
else Disque_Nom:=SR;
NomFic:=SN;
Save_Fichier_Disque(Disque_Nom,NomFic);
end
end
else
begin
if Entree Then Entree:=Verify_Reper(SR,SN);
if Entree Then
begin
if SR='' Then Disque_Nom:=Repertoire;
NomFic:=SN;
Save_Fichier_Disque(Disque_Nom,NomFic);
end;
end;
end;
textAttr:=Color;
end
else
Save_Fichier_Disque(Disque_Nom,NomFic);
CsOff;
end;
Function P_Pick_Load:string;
Var SR,SN : string;
Entree : boolean;
begin
Readbuf(6,5,52,7,Sub_buf^);
BoxFill(6,5,52,7,' ');
Box13.Rectangle(6,5,52,7,Simple);
Putxy(21,5,' Load File Name ');
SN:='*.*';
SR:=Repertoire;
Entree:=ReadBox(8,6,SN,43,80);
Writebuf(6,5,52,7,Sub_buf^);
Csoff;
if Entree Then Entree:=Verify_Rep_Fic(SR,SN);
if (Entree) Then
begin
if SR='' Then SR:=Repertoire;
if POS('*',SN)>0 Then SN:=_Fichiers_Dir(SR,SN)
else
if SN<>'' Then
begin
if Not FileExists(SR,SN) Then
begin
Entree:=Erreur_Critique(2,SN);
Entree:=false;
SN:='';
end;
end;
if (Entree) And (SN<>'') Then
begin
if _Save_Fichier Then
begin
if P_New=69 Then
begin
NomFic:=SN;
Disque_Nom:=SR;
P_Pick_load:=SN;
end
else P_Pick_Load:='';
end
else
begin
NomFic:=SN;
Disque_Nom:=SR;
P_Pick_Load:=SN;
end;
end
else
P_Pick_load:='';
end
else
P_Pick_Load:='';
end;
*}
*}
*}
Function Menu_File(y:byte):byte;
LaBel PASE_NEW;
var Key : byte;
Nom_Pick : string;
Nom_Reper : string;
New,Termine : boolean;
Director,Load : boolean;
begin
Director:=false;
Load:=false;
New:=false;
Termine:=false;
HighBox(4,1,9,1,Bx);
if Y in[61,106] Then
begin
Key_Code:=true;
Case Y Of
61: begin Y:=3;Key:=61; end;
106: begin Y:=4;Key:=106;Alt:=true; end;
end;
end
else
begin
if Y=0 Then Y:=3;
Key:=0;
end;
ReadBuf(4,2,22,13,Menu_Buf^);
BoxColor(6,3,22,13,FondBox);
BoxFill(4,2,20,12,' ');
Box13.Rectangle(4,2,20,12,Double);
Putxy(6,3,'Load F3');
Putxy(6,4,'Pick Alt-F3');
Putxy(6,5,'New');
Putxy(6,6,'Save F2');
Putxy(6,7,'Write to');
Putxy(6,8,'Directoy F4');
Putxy(6,9,'Change dir');
Putxy(6,10,'Printer...');
Putxy(6,11,'Quit Alt-X');
WriteCar(6,3,'L');
WriteCar(6,4,'P');
WriteCar(6,5,'N');
WriteCar(6,6,'S');
WriteCar(6,7,'W');
WriteCar(6,8,'D');
WriteCar(6,9,'C');
WriteCar(8,10,'i');
WriteCar(6,11,'Q');
HighBox(5,Y,19,Y,Bx);
Mousexy(3,1);
DisplayMouse;
Repeat
if (Not Key_Code) And (Key in[108,76,112,80,110,78,115,83,119,87,100,68,99,57,80,112,113,81,73,105]) Then
begin
HighBox(5,Y,19,Y,Bx);
Case Key of
108,76: Y:=3;
112,80: Y:=4;
110,78: Y:=5;
115,83: Y:=6;
119,87: Y:=7;
100,68: Y:=8;
99,57: Y:=9;
73,105: Y:=10;
113,81: Y:=11;
end;
Key:=13;
HighBox(5,Y,19,Y,Bx);
end
else
if ((Key_Code) And (Key in[60,61])) OR ((Alt) And (Key in[106,45])) Then
begin
HighBox(5,Y,19,Y,Bx);
Case Key of
60: Y:=6;
61: Y:=3;
106: Y:=4;
45: Y:=11;
end;
Key_Code:=false;
Key:=13;
HighBox(5,Y,19,Y,Bx);
end
else
if (Key_Code) And (Key=72) And (Y>3) Then
begin
HighBox(5,Y,19,Y,Bx);
Dec(y);
HighBox(5,Y,19,Y,Bx);
end
else
if (Key_Code) And (Key=80) And (Y<11) Then
begin
HighBox(5,Y,19,Y,Bx);
inc(y);
HighBox(5,Y,19,Y,Bx);
end
else
if (Key_Code) And (Key=62) Then
begin
HighBox(5,Y,19,Y,Bx);
Y:=8;
HighBox(5,Y,19,Y,Bx);
if P_Directory(62)<>'' Then
begin
Key:=69;
Key_Code:=false;
New:=true;
Director:=true;
end;
end
else
if (Key_Code) and (Key=59) Then Help_Keys;
if (Not Key_Code) And (y in[3..11]) And (Key=13) Then
begin
Case y Of
3: if P_Load<>'' Then
begin
Key:=69;
Key_Code:=false;
New:=true;
Load:=true;
end;
4: begin
Nom_Pick:='';Nom_Reper:='';
Selec_Pick(Nom_Reper,Nom_Pick);
if Nom_Pick='61..'Then
begin
HighBox(5,Y,19,Y,Bx);
Y:=3;
HighBox(5,Y,19,Y,Bx);
if P_Load<>'' Then
begin
Key:=69;
Key_Code:=false;
New:=true;
Load:=true;
end;
end
else
begin
if Nom_Pick='<Load file>' Then Nom_Pick:=P_Pick_Load;
if Nom_Pick='NONAME.???' Then
begin
HighBox(5,Y,19,Y,Bx);
Y:=5;
HighBox(5,Y,19,Y,Bx);
Goto PASE_NEW;
end
else
if (Nom_Pick<>'') And (_Save_Fichier) Then
begin
if P_New<>69 Then
Nom_Pick:='';
end;
if Nom_Pick<>'' Then
begin
NomFic:=Nom_Pick;
if Nom_Reper<>'' Then Disque_Nom:=Nom_Reper;
Key:=69;
Key_Code:=false;
New:=true;
Load:=true;
end;
end;
end;
5: begin
PASE_NEW:
Key:=P_New;
if Key=69 Then
begin
Key_Code:=false;
New:=true;
end;
end;
6: begin
P_Save;
if (Not _Save_Fichier) and (NomFic<>'NONAME.???') Then
begin
Tab[1].Rtime:=FileDate(Tab[1].NomR+Tab[1].NomF);
Tab[1].PosX:=X_Curseur;
Tab[1].PosY:=Y_Curseur;
Tab[1].PageDebut:=Debut_Page;
Tab[1].Ligne:=Line_Curseur;
Tab[1].Marque:=Pose_Marque;
end;
Key:=27;
Key_Code:=false;
Termine:=true;
end;
7: begin
Key:=P_Write_TO;
if Key=69 Then
begin
Reinit_Pick(Disque_Nom,NomFic);
Key:=27;
Termine:=true;
Key_Code:=false;
end;
end;
8: if P_Directory(0)<>'' Then
begin
Key:=69;
Key_Code:=false;
New:=true;
Director:=true;
end;
9: P_Change_Dir;
10: begin end;
11: begin
if _Save_Fichier Then
begin
if P_New = 69 Then Fin_programme:=true;
end
else Fin_programme:=true;
end
end;
end;
CsOff;
if Not Termine Then
if (Not New) And (Not Fin_programme) Then
begin
DisplayMouse;
Key:=KeyMouse;
MaskMouse;
if (Key=1) And (not Key_Code) And (Mbox(5,3,19,11)) Then
begin
if MouseY<>Y Then
begin
HighBox(5,Y,19,Y,Bx);
Y:=MouseY;
HighBox(5,Y,19,Y,Bx);
end;
end
else
if (Key=2) And (not Key_Code) And (MouseY = Y) And (Mbox(5,3,19,11)) Then
begin
Key_Code:=false;
Key:=13;
end
else
if (Key=2) And (not Key_Code) And (Mbox(13,1,60,1)) Then
begin
Key:=0;
Case MouseX Of
13..16: Key:=18;
21..27: Key:=24;
32..35: Key:=38;
40..51: Key:=34;
56..60: Key:=50;
else Key:=0;
end;
if (Key<>0) Then
begin
Alt:=true;
Key_Code:=true;
end;
end;
end;
Until ((Not Key_Code) And (Key In [27,101,69])) OR
((Key_Code) And (Alt) And (Key in[18,24,38,34,50])) OR
((Key_Code) And (Key in[77,75])) OR (Fin_programme);
HighBox(4,1,9,1,Bx);
WriteBuf(4,2,22,13,Menu_Buf^);
Retur1:=Y;
if New Then
begin
textAttr:=Edit_Color;
Initialiser;
if (Load) OR (Director) Then
begin
if Director Then Disque_Nom:=Disque_Dire;
Load_Fichier_Disque(Disque_Nom,NomFic);
if NomFic<>'NONAME.???' Then
begin
Reinit_Pick(Disque_Nom,NomFic);
if X_curseur<Max_curseurX Then E_curseurX:=X_curseur
else E_curseurX:=Max_curseurX-1;
Window(1,1,80,CrtGetMaxY);
Window(2,4,79,CrtGetMaxY-1);
Premiere_Page_Debut(Debut_Page);
end;
Window(1,1,80,CrtGetMaxY);
end
else
begin
NomFic:='NONAME.???';
Disque_Nom:=Repertoire;
end;
end;
if ((Key_Code) And (Alt) And (Key in[18,24,38,34,50])) Then
begin
Case Key Of
18: Menu_File:=2;
24: Menu_File:=3;
38: Menu_File:=4;
34: Menu_File:=5;
50: Menu_File:=6;
end;
end
else
if (Key_Code) And (Key in[77,75]) Then
begin
Case Key of
77: Menu_File:=2;
75: Menu_File:=6;
end;
end
else
begin
Menu_File:=27;
Retur0:=1;
end;
end;
Procedure Mode_25_50_Lines(Mode:byte);
begin
Max_CurseurX:=78;
Max_CurseurY:=CrtGetMaxY-4;
textAttr:=Menu_Color;
Window(1,1,80,CrtGetMaxY);
Writechar(1,1,80,' ');
Putxy(5,1,'File Edit Options Lang Graphe Trace Maths');
WriteCar(5,1,'F');
WriteCar(13,1,'E');
WriteCar(21,1,'O');
WriteCar(32,1,'L');
WriteCar(40,1,'G');
WriteCar(56,1,'M');
textAttr:=Edit_Color;
Box13.Rectangle(1,2,80,CrtGetMaxY,Simple);
Putxy(36,2,' Edit ');
ClearScreen(2, 3, 79, CrtGetMaxY-1,Edit_Color);
textAttr:=Etat_Color;
Putxy(6,3,'Line');
Putxy(18,3,'Col');
Putxy(28,3,'Insert');
Putxy(35,3,'Indent');
Putxy(49,3,'Unindent');
Putxy(58,3,NomFic);
textAttr:=Edit_Color;
if X_curseur<Max_curseurX Then E_curseurX:=X_curseur
else E_curseurX:=Max_curseurX-1;
Window(1,1,80,CrtGetMaxY);
Window(2,4,79,CrtGetMaxY-1);
Premiere_Page_Debut(Debut_Page);
Window(1,1,80,CrtGetMaxY);
if Y_curseur>=Max_curseurY Then
begin
Dec(Line_curseur,Y_curseur-(Max_curseurY-1));
Y_curseur:=Max_curseurY-1;
end;
Change_de_ligne:=true;
end;
Function Menu_Options(y:byte):byte;
var Key : byte;
Ok_Ecran : byte;
begin
Ok_Ecran:=0;
HighBox(20,1,28,1,Bx);
Readbuf(20,2,37,11,Menu_Buf^);
BoxColor(22,3,37,11,FondBox);
BoxFill(20,2,35,10,' ');
Box13.Rectangle(20,2,35,10,Double);
Putxy(22,3,'Changer Attr');
Putxy(22,4,'Aide general');
Putxy(22,5,'Screen Size ');
Putxy(22,6,'Test Pro.Num');
Putxy(22,7,'Exten Defaul');
Putxy(22,8,'Trier Block ');
Putxy(22,9,'Information ');
WriteCar(22,3,'C');
WriteCar(22,4,'A');
WriteCar(22,5,'S');
WriteCar(27,6,'P');
WriteCar(22,7,'E');
WriteCar(22,8,'T');
WriteCar(22,9,'I');
HighBox(21,Y,34,Y,Bx);
Find_Valeur:=0;
Mousexy(19,1);
Repeat
CSOFF;
DisplayMouse;
Key:=KeyMouse;
MaskMouse;
if (Key=1) And (not Key_Code) And (Mbox(21,3,34,9)) Then
begin
if MouseY <> Y Then
begin
HighBox(21,Y,34,Y,Bx);
Y:=MouseY;
HighBox(21,Y,34,Y,Bx);
end;
end
else
if (Key=2) And (not Key_Code) And (MouseY = Y) And (Mbox(21,3,34,9)) Then
begin
Key_Code:=false;
Key:=13;
end
else
if (Key=2) And (not Key_Code) And (Mbox(5,1,60,1)) Then
begin
Key:=0;
Case MouseX Of
5..8: Key:=33;
13..16: Key:=18;
32..35: Key:=38;
40..51: Key:=34;
56..60: Key:=50;
else Key:=0;
end;
if (Key<>0) Then
begin
Alt:=true;
Key_Code:=true;
end;
end;
if (Not Key_Code) And (Key in[99,67,97,65,115,83,80,112,101,69,84,116,105,73]) Then
begin
HighBox(21,Y,34,Y,Bx);
Case Key of
99,67: Y:=3;
97,65: Y:=4;
115,83: Y:=5;
112,80: Y:=6;
101,69: Y:=7;
84,116: Y:=8;
105,73: Y:=9;
end;
Key:=13;
HighBox(21,Y,34,Y,Bx);
end
else
if (Key_Code) And (Key=72) And (Y>3) Then
begin
HighBox(21,Y,34,Y,Bx);
Dec(y);
HighBox(21,Y,34,Y,Bx);
end
else
if (Key_Code) And (Key=80) And (Y<9) Then
begin
HighBox(21,Y,34,Y,Bx);
inc(y);
HighBox(21,Y,34,Y,Bx);
end;
if ((y in[3,4,5,6,7,8,9]) And (Key=13)) Then
begin
Case y Of
3: Change_Attribut;
4: Help_Dans_Index(Repertoire+'EDnum\','EdNUM.HLP');
5: begin
end;
6: begin
Entree1:=false;
ix:=1;X_Car:=' ';
While (ix<100) And (Not Entree1) Do
begin
X_Car:=Buffer^[ix];
if X_Car>#32 Then Entree1:=true;
inc(ix);
end;
if X_Car = '%' Then
begin
Texte_Programme_Num;
end;
Key:=0;
end;
7: begin
Extension_Defaut;
Key:=0;
end;
8: begin
Find_Valeur:=84;
Key_Code:=false;
Key:=27;
end;
9: begin
debut_program;
textAttr:=Menu_Color;
Key:=0;
end;
end;
end
else
if (Key_Code) and (Alt) And (Key=45) Then
begin
if _Save_Fichier Then
begin
if P_New = 69 Then Fin_programme:=true;
end
else Fin_programme:=true;
end
else
if (Key_Code) and (Key=59) Then Help_Keys;
Until ((not Key_code) And (Key in [255,27])) OR
((Key_Code) And (Key in[60,61,75,77])) OR
((Key_Code) And (Alt) And (Key in[33,18,38,34,50])) OR
((Alt) And (Key=106)) OR (Ok_Ecran>0) OR (Find_Valeur=84) Or
(Fin_programme);
HighBox(20,1,28,1,Bx);
Writebuf(20,2,37,11,Menu_Buf^);
Retur3:=Y;
if ((Key_Code) And (Alt) And (Key in[33,18,38,34,50])) Then
begin
Case Key Of
33: Menu_Options:=1;
18: Menu_Options:=2;
38: Menu_Options:=4;
34: Menu_Options:=5;
50: Menu_Options:=6;
end;
end
else
Case Key Of
75: Menu_Options:=2;
77: Menu_Options:=4;
106: begin
Menu_Options:=1;
Retur1:=106;
end;
60: begin
P_Save;
Menu_Options:=27;
Retur0:=3;
end;
61: begin
Menu_Options:=1;
Retur1:=61;
end;
27: begin
Menu_Options:=27;
Retur0:=3;
end;
end;
if Key=255 THen
begin
X_curseur:=1;
E_curseurX:=1;
Y_curseur:=1;
Line_Curseur:=1;
Debut_Page:=1;
textAttr:=Edit_Color;
Window(1,1,80,CrtGetMaxY);
Window(2,4,79,CrtGetMaxY-1);
Premiere_Page_Debut(Debut_Page);
Window(1,1,80,CrtGetMaxY);
Menu_Options:=27;
Retur0:=3;
end
else
if Fin_programme Then Menu_Options:=27;
if Ok_Ecran In[25,50] Then
begin
CrtGetMaxY:=25;
end;
end;
Function Menu_Language(y:byte):byte;
var Key : byte;
Entree : boolean;
begin
HighBox(31,1,36,1,Bx);
Readbuf(31,2,52,12,Menu_Buf^);
BoxColor(33,3,52,12,FondBox);
BoxFill(31,2,50,11,' ');
Box13.Rectangle(31,2,50,11,Double);
Putxy(33,3,'Block '+#26+' Notes ');
Putxy(33,4,'Phrases '+#26+' Notes');
Putxy(33,5,'Fran?ais Anglais');
Putxy(33,6,'Anglais Fran?ais');
Putxy(33,7,'Tables de verbes');
Putxy(33,8,'Examples Find ');
Putxy(33,9,'Repertoire Find');
Putxy(33,10,'Change of notes');
WriteCar(33,3,'B');
WriteCar(33,4,'P');
WriteCar(33,5,'F');
WriteCar(33,6,'A');
WriteCar(33,7,'T');
WriteCar(33,8,'E');
WriteCar(33,9,'R');
WriteCar(33,10,'C');
HighBox(32,Y,49,Y,Bx);
Mousexy(30,1);
Repeat
CSOFF;
DisplayMouse;
Key:=KeyMouse;
MaskMouse;
if (Key=1) And (not Key_Code) And (Mbox(32,3,49,10)) Then
begin
if MouseY <> Y Then
begin
HighBox(32,Y,49,Y,Bx);
Y:=MouseY;
HighBox(32,Y,49,Y,Bx);
end;
end
else
if (Key=2) And (not Key_Code) And (MouseY = Y) And (Mbox(32,3,49,10)) Then
begin
Key_Code:=false;
Key:=13;
end
else
if (Key=2) And (not Key_Code) And (Mbox(5,1,60,1)) Then
begin
Key:=0;
Case MouseX Of
5..8: Key:=33;
13..16: Key:=18;
21..27: Key:=24;
40..51: Key:=34;
56..60: Key:=50;
else Key:=0;
end;
if (Key<>0) Then
begin
Alt:=true;
Key_Code:=true;
end;
end;
if (Not Key_Code) And (Key in[66,98,80,112,70,102,65,97,84,116,69,101,82,114,67,99]) Then
begin
HighBox(32,Y,49,Y,Bx);
Case Key of
66,98: Y:=3;
80,112: Y:=4;
70,102: Y:=5;
65,97: Y:=6;
84,116: Y:=7;
69,101: Y:=8;
82,114: Y:=9;
67,99: Y:=10;
end;
Key:=13;
HighBox(32,Y,49,Y,Bx);
end
else
if (Key_Code) And (Key=72) And (Y>3) Then
begin
HighBox(32,Y,49,Y,Bx);
Dec(y);
HighBox(32,Y,49,Y,Bx);
end
else
if (Key_Code) And (Key=80) And (Y<10) Then
begin
HighBox(32,y,49,Y,Bx);
inc(y);
HighBox(32,Y,49,Y,Bx);
end;
if ((y in[3,4,5,6,7,8,9,10]) And (Key=13)) Then
begin
Case y Of
3: Lire_Phrases(25,4,Dic_Nom8);
4: Lire_Phrases(25,5,Dic_Nom7);
5: begin
Entree:=Texte_traduction(6,'F');
if Copy_Exemples Then
begin
Key_code:=false;
Key:= 27;
end;
end;
6: begin
Entree:=Texte_traduction(7,'A');
if Copy_Exemples Then
begin
Key_code:=false;
Key:= 27;
end;
end;
7: begin
Nom_Help:=Table_De_Verbes(FondBox);
if Nom_Help<>'' Then LireTexte(Disque_Help,Nom_Help);
Nom_Help:='*.Hlp';
if Copy_Exemples Then
begin
Key_code:=false;
Key:= 27;
end;
end;
8: begin
Dir_Nom_Help;
if Nom_Help<>'*.Hlp' Then LireTexte(Disque_Help,Nom_Help);
if Copy_Exemples Then
begin
Key_code:=false;
Key:= 27;
end;
end;
9: Change_Repertoire_Langage(FondBox);
10: Change_Nom_Fic_Notes(10)
end;
end
else
if (Key_Code) and (Alt) And (Key=45) Then
begin
if _Save_Fichier Then
begin
if P_New = 69 Then Fin_programme:=true;
end
else Fin_programme:=true;
end
else
if (Key_Code) and (Key=59) Then Help_Keys;
Until ((not Key_code) And (Key = 27)) OR
((Key_Code) And (Key in[60,61,75,77])) OR
((Key_Code) And (Alt) And (Key in[33,18,24,34,50])) OR
((Alt) And (Key=106)) OR (Fin_programme);
HighBox(31,1,36,1,Bx);
Writebuf(31,2,52,12,Menu_Buf^);
Retur4:=Y;
if ((Key_Code) And (Alt) And (Key in[33,18,24,34,50])) Then
begin
Case Key Of
33: Menu_Language:=1;
18: Menu_Language:=2;
24: Menu_Language:=3;
34: Menu_Language:=5;
50: Menu_Language:=6;
end;
end
else
Case Key Of
75: Menu_Language:=3;
77: Menu_Language:=5;
106: begin
Menu_Language:=1;
Retur1:=106;
end;
60: begin
P_Save;
Menu_Language:=27;
Retur0:=3;
end;
61: begin
Menu_Language:=1;
Retur1:=61;
end;
27: begin
Menu_Language:=27;
Retur0:=4;
end;
end;
if Fin_programme Then Menu_Language:=27;
end;
Function Menu_Graph(y:byte):byte;
var Key : byte;
begin
HighBox(39,1,52,1,Bx);
Readbuf(39,2,59,9,Menu_Buf^);
BoxColor(41,3,59,9,FondBox);
BoxFill(39,2,57,8,' ');
Box13.Rectangle(39,2,57,8,Simple);
Putxy(41,3,'Graph Trace NUM');
Putxy(41,4,'Help Graph Num');
Putxy(41,5,'Notes de C.N.C');
Putxy(41,6,'Init Tool outil');
Putxy(41,7,'Auto var Edit');
WriteCar(41,3,'G');
WriteCar(41,4,'H');
WriteCar(41,5,'N');
WriteCar(41,6,'I');
WriteCar(41,7,'A');
HighBox(40,Y,56,Y,Bx);
Mousexy(38,1);
Repeat
Csoff;
DisplayMouse;
Key:=KeyMouse;
MaskMouse;
if (Key=1) And (not Key_Code) And (Mbox(40,3,56,7)) Then
begin
if MouseY <> Y Then
begin
HighBox(40,Y,56,Y,Bx);
Y:=MouseY;
HighBox(40,Y,56,Y,Bx);
end;
end
else
if (Key=2) And (not Key_Code) And (MouseY = Y) And (Mbox(40,3,56,7)) Then
begin
Key_Code:=false;
Key:=13;
end
else
if (Key=2) And (not Key_Code) And (Mbox(5,1,60,1)) Then
begin
Key:=0;
Case MouseX Of
5..8: Key:=33;
13..16: Key:=18;
21..27: Key:=24;
32..35: Key:=38;
56..60: Key:=50;
else Key:=0;
end;
if (Key<>0) Then
begin
Alt:=true;
Key_Code:=true;
end;
end;
if (Not Key_Code) And (Key in[71,103,72,104,78,110,73,105,65,97]) Then
begin
HighBox(40,Y,56,Y,Bx);
Case Key of
71,103: Y:=3;
72,104: Y:=4;
78,110: Y:=5;
73,105: Y:=6;
65,97: Y:=7;
end;
if (Key<>71) And (Key<>103) Then Key:=13;
HighBox(40,Y,56,Y,Bx);
end;
if (Key_Code) And (Key=80) And (Y<7) Then
begin
HighBox(40,Y,56,Y,Bx);
inc(Y);
HighBox(40,Y,56,Y,Bx);
end
else
if (Key_Code) And (Key=72) And (Y>3) Then
begin
HighBox(40,Y,56,Y,Bx);
Dec(Y);
HighBox(40,Y,56,Y,Bx);
end
else
if Key=13 Then
begin
if Y=3 Then
begin
if (_Save_Fichier) And (NomFic<>'') And (NomFic<>'NONAME.???') Then
begin
textAttr:=Menu_Color;
if P_New<>69 Then
begin
Sxx1:='';
end;
end;
Window(1,1,80,CrtGetMaxY);
SetGraphMode(GetGraphMode);
if (Not _Save_Fichier) Then
begin
ix:=1;X_Car:=' ';
Entree1:=false;
While ((ix < Fin_Buffer) And (ix<100) And (Not Entree1)) Do
begin
X_Car:=Buffer^[ix];
if X_Car>#32 Then Entree1:=true;
inc(ix);
end;
if X_Car = '%' Then
begin
GraPhique_Numeriqe(Disque_Nom,NomFic);
end
else
GraPhique_Numeriqe('','');
end
else GraPhique_Numeriqe('','');
RESTORECRTMODE;
EDIt_ECRAN;
textAttr:=Edit_Color;
if X_curseur<Max_curseurX Then E_curseurX:=X_curseur
else E_curseurX:=Max_curseurX-1;
Window(1,1,80,CrtGetMaxY);
Window(2,4,79,CrtGetMaxY-1);
Premiere_Page_Debut(Debut_Page);
Window(1,1,80,CrtGetMaxY);
if Y_curseur>=Max_curseurY Then
begin
Dec(Line_curseur,Y_curseur-(Max_curseurY-1));
Y_curseur:=Max_curseurY-1;
end;
Change_de_ligne:=true;
WindowMouse(1,1,CrtGetMaxX,CrtGetMaxY);
StyleMouse(2,14);
Key:=255;
Key_Code:=false;
textAttr:=Menu_Color;
HighBox(39,1,52,1,Bx);
end
else
if Y=4 Then Help_Index_Num(Repertoire+'EDnum\','Help_Num.HLP')
else
if Y=5 Then
begin
Nom_Help:=Table_De_CommandeNC(FondBox);
if Nom_Help<>'' Then LireTexte(Disque_Help,Nom_Help);
Nom_Help:='*.Hlp';
if Copy_Exemples Then
begin
Key_code:=false;
Key:= 27;
end;
end
else
if Y=6 Then Correction_Outils(28,7)
else
if Y=7 Then Auto_Var_Edit;
end;
if (Key_Code) and (Alt) And (Key=45) Then
begin
if _Save_Fichier Then
begin
if P_New = 69 Then Fin_programme:=true;
end
else Fin_programme:=true;
end
else
if (Key_Code) and (Key=59) Then Help_Keys;
Until ((Not key_Code) And (Key in[27,255])) OR
((key_Code) And (Key in[75,77])) Or
((Key_Code) And (Alt) And (Key in[33,18,24,38,50])) OR (Fin_Programme);
if Key = 255 Then Key:=27
else Writebuf(39,2,59,9,Menu_Buf^);
Retur5:=Y;
HighBox(39,1,52,1,Bx);
if Fin_Programme Then Menu_Graph:=27
else
if ((Key_Code) And (Alt) And (Key in[33,18,24,38,50])) Then
begin
Case Key Of
33: Menu_Graph:=1;
18: Menu_Graph:=2;
24: Menu_Graph:=3;
38: Menu_Graph:=4;
50: Menu_Graph:=6;
end;
end
else
Case Key Of
75: Menu_Graph:=4;
77: Menu_Graph:=6;
27: begin
Menu_Graph:=27;
Retur0:=5;
end;
end;
end;
Function Menu_Mathes(y:byte):byte;
var Key : byte;
Sn : string[10];
Lignes : byte;
Entree,Colory: boolean;
nn : string;
begin
Colory:=false;
HighBox(55,1,61,1,Bx);
Readbuf(55,2,73,11,Menu_Buf^);
BoxColor(57,3,73,11,FondBox);
BoxFill(55,2,71,10,' ');
Box13.Rectangle(55,2,71,10,Simple);
Putxy(57,3,'Calculatrice');
Putxy(57,4,'Calculator');
Putxy(57,5,'Rotation G3');
Putxy(57,6,'Distan Angle');
Putxy(57,7,'G3 Centre-Arc');
Putxy(57,8,'Light Colours');
if Ordinateur486 Then
Putxy(57,9,'Proceseur 486')
else
Putxy(57,9,'Proceseur 386');
WriteCar(57,3,'C');
WriteCar(58,4,'a');
WriteCar(57,5,'R');
WriteCar(57,6,'D');
WriteCar(57,7,'G');
HighBox(56,Y,70,Y,Bx);
Mousexy(54,1);
Repeat
Csoff;
DisplayMouse;
Key:=KeyMouse;
MaskMouse;
if (Key=1) And (not Key_Code) And (Mbox(56,3,70,9)) Then
begin
if MouseY <> Y Then
begin
HighBox(56,Y,70,Y,Bx);
Y:=MouseY;
HighBox(56,Y,70,Y,Bx);
end;
end
else
if (Key=2) And (not Key_Code) And (MouseY = Y) And (Mbox(56,3,70,9)) Then
begin
Key_Code:=false;
Key:=13;
end
else
if (Key=2) And (not Key_Code) And (Mbox(5,1,51,1)) Then
begin
Key:=0;
Case MouseX Of
5..8: Key:=33;
13..16: Key:=18;
21..27: Key:=24;
32..35: Key:=38;
40..51: Key:=34;
else Key:=0;
end;
if (Key<>0) Then
begin
Alt:=true;
Key_Code:=true;
end;
end;
if (Not Key_Code) And (Key in[67,99,65,97,82,114,68,100,71,103]) Then
begin
HighBox(56,Y,70,Y,Bx);
Case Key of
67,99: Y:=3;
65,97: Y:=4;
82,114: Y:=5;
68,100: Y:=6;
71,103: Y:=7;
end;
Key:=13;
HighBox(56,Y,70,Y,Bx);
end;
if (Key_Code) And (Key=80) And (Y<9) Then
begin
HighBox(56,Y,70,Y,Bx);
inc(Y);
HighBox(56,Y,70,Y,Bx);
end
else
if (Key_Code) And (Key=72) And (Y>3) Then
begin
HighBox(56,Y,70,Y,Bx);
Dec(Y);
HighBox(56,Y,70,Y,Bx);
end
else
if (Not Key_Code) and (Key=13) Then
begin
if Y=3 Then
begin
ReadBuf(49,4,51+26,5+11,BuffDir^);
BoxColor(51,5,51+26,5+11,FondBox);
Calculatrice(49,4,Calculatrice_S2,Calculatrice_S3,Calculatrice_Total,Calculatrice_TotalM);
WriteBuf(49,4,51+26,5+11,BuffDir^);
CSOff;
end
else
if Y=4 Then
begin
if CrtGetMaxY=50 Then ScreenLine25;
Window(1,1,80,CrtGetMaxY);
Calculator;
Window(1,1,80,CrtGetMaxY);
StyleMouse(2,14);
Colory:=true;
end
else
if Y=5 Then
begin
ReadBuf(48,6,50+30,7+8,BuffDir^);
BoxColor(50,7,50+30,7+8,FondBox);
DONNE_ROTATION_G3(48,6);
WriteBuf(48,6,50+30,7+8,BuffDir^);
end
else
if Y=6 Then
begin
ReadBuf(48,7,50+30,8+7,BuffDir^);
BoxColor(50,8,50+30,8+7,FondBox);
Cherche_Rayon(48,7);
WriteBuf(48,7,50+30,8+7,BuffDir^);
end
else
if Y=7 Then
begin
ReadBuf(48,8,50+30,9+11,BuffDir^);
BoxColor(50,9,50+30,9+11,FondBox);
Calcul_Centre_Arc(48,8);
WriteBuf(48,8,50+30,9+11,BuffDir^);
end
else
if Y=8 Then
begin
Key:=0;
ReadBuf(40,9,50+30,12,BuffDir^);
BoxColor(42,10,50+29,12,FondBox);
BoxFill(40,9,50+27,11,' ');
Box13.Rectangle(40,9,50+27,11,Simple);
Putxy(43,10,'Modification des Couleurs [Y / N]');
CsOff;
Repeat
Key:=Keyboard;
Until Key in[89,121,78,110,27];
WriteBuf(40,9,50+30,12,BuffDir^);
if Key in[89,121] Then
begin
Mode_Color(Repertoire+'EDNUM\EDNUM.INI');
Colory:=true;
FondBox:=Edit_Color-(((Edit_Color And $70) shr 4) * 16);
Fond__Box:=FondBox;
end;
Key:=27;
end;
if Y=9 Then
begin
Key:=0;
if Ordinateur486 Then nn:='486'
else nn:='386';
ReadBuf(40,10,50+30,13,BuffDir^);
BoxColor(42,11,50+29,13,FondBox);
BoxFill(40,10,50+27,12,' ');
Box13.Rectangle(40,10,50+27,12,Simple);
Putxy(43,11,'Proceseur 386 ou 486: ');
Entree:=ReadBox(65,11,nn,4,5);
if Entree Then
begin
BoxFill(40,10,50+27,12,' ');
Box13.Rectangle(40,10,50+27,12,Simple);
Putxy(43,11,'Attention!! Modification [Y / N]');
CsOff;
Repeat
Key:=KeyBoard;
Until Key in[89,121,78,110,27];
end;
if Key in[89,121] Then
begin
if nn<>'486' Then Ordinateur486:=false
else Ordinateur486:=true;
Key:=0;
HighBox(56,Y,70,Y,Bx);
if Ordinateur486 Then
Putxy(57,9,'Proceseur 486')
else
Putxy(57,9,'Proceseur 386');
HighBox(56,Y,70,Y,Bx);
if Ordinateur486 Then
begin
DelayPose:=100;
Opertion_Tempo:=7000;
Messages_Tempo:=32000;
TempoOk:=100;
Tempo:=80;
DelayPon:=31000;
DelayMouse:=2000;
Tempo__Mouse:=Round(DelayMouse)+200;
end
else
begin
DelayPose:=30;
Opertion_Tempo:=350;
Messages_Tempo:=2500;
TempoOK:=10;
Tempo:=80;
DelayPon:=400;
DelayMouse:=70;
Tempo__Mouse:=Round(DelayMouse)+200;
end;
end
else
Key:=27;
WriteBuf(40,10,50+30,13,BuffDir^);
Csoff;
end;
end
else
if (Key_Code) and (Alt) And (Key=45) Then
begin
if _Save_Fichier Then
begin
if P_New = 69 Then Fin_programme:=true;
end
else Fin_programme:=true;
end
else
if (Key_Code) and (Key=59) Then Help_Keys;
Until ((Not key_Code) And (Key in[27])) OR
((key_Code) And (Key in[75,77])) OR
((Key_Code) And (Alt) And (Key in[33,18,24,38,34])) OR
(Fin_Programme) OR (Colory);
if Not Colory Then
begin
Writebuf(55,2,73,11,Menu_Buf^);
HighBox(55,1,61,1,Bx);
end
else
begin
Colory:=false;
EDIt_ECRAN;
textAttr:=Edit_Color;
if X_curseur<Max_curseurX Then E_curseurX:=X_curseur
else E_curseurX:=Max_curseurX-1;
Window(1,1,80,CrtGetMaxY);
Window(2,4,79,CrtGetMaxY-1);
Premiere_Page_Debut(Debut_Page);
Window(1,1,80,CrtGetMaxY);
if Y_curseur>=Max_curseurY Then
begin
Dec(Line_curseur,Y_curseur-(Max_curseurY-1));
Y_curseur:=Max_curseurY-1;
end;
Change_de_ligne:=true;
WindowMouse(1,1,CrtGetMaxX,CrtGetMaxY);
StyleMouse(2,14);
textAttr:=Edit_Color;
Key:=27;
end;
Retur6:=Y;
if ((Key_Code) And (Alt) And (Key in[33,18,24,38,34])) Then
begin
Case Key Of
33: Menu_Mathes:=1;
18: Menu_Mathes:=2;
24: Menu_Mathes:=3;
38: Menu_Mathes:=4;
34: Menu_Mathes:=5;
end;
end
else
if Fin_Programme Then Menu_Mathes:=27
else
Case Key Of
75: Menu_Mathes:=5;
77: Menu_Mathes:=1;
27: begin
Menu_Mathes:=27;
Retur0:=6;
end;
end;
end;
Function Edit(Y:byte):byte;
var
Key : byte;
Entree : boolean;
begin
if (StrFind='') Then Find_valeur:=0;
HighBox(12,1,17,1,Bx);
Readbuf(12,2,37,10,Menu_Buf^);
BoxColor(14,3,37,10,FondBox);
BoxFill(12,2,35,9,' ');
Box13.Rectangle(12,2,35,9,Simple);
Putxy(14,3,'Cherche Ctrl Q F');
Putxy(14,4,'Replace Ctrl Q A');
Putxy(14,5,'Suite-cherche Ctrl L');
Putxy(14,6,'Evaluate formules ');
Putxy(14,7,'Help evaluat formule');
Putxy(14,8,'Clavier - Num 750.');
WriteCar(14,3,'C');
WriteCar(14,4,'R');
WriteCar(14,5,'S');
WriteCar(14,6,'E');
WriteCar(14,7,'H');
WriteCar(16,8,'a');
HighBox(13,Y,34,Y,BX);
Mousexy(11,1);
Repeat
Csoff;
DisplayMouse;
Key:=KeyMouse;
MaskMouse;
if (Key=1) And (not Key_Code) And (Mbox(13,3,34,8)) Then
begin
if MouseY <> Y Then
begin
HighBox(13,Y,34,Y,Bx);
Y:=MouseY;
HighBox(13,Y,34,Y,Bx);
end;
end
else
if (Key=2) And (not Key_Code) And (MouseY = Y) And (Mbox(13,3,34,8)) Then
begin
Key_Code:=false;
Key:=13;
end
else
if (Key=2) And (not Key_Code) And (Mbox(5,1,60,1)) Then
begin
Key:=0;
Case MouseX Of
5..8: Key:=33;
21..27: Key:=24;
32..35: Key:=38;
40..51: Key:=34;
56..60: Key:=50;
else Key:=0;
end;
if (Key<>0) Then
begin
Alt:=true;
Key_Code:=true;
end;
end;
if (Not Key_Code) And (Key in[67,99,82,114,83,115,69,101,72,104,65,97]) Then
begin
HighBox(13,Y,34,Y,Bx);
Case Key of
67,99 : Y:=3;
82,114: Y:=4;
83,115: Y:=5;
69,101: Y:=6;
72,104: Y:=7;
65,97: Y:=8;
end;
Key:=13;
HighBox(13,Y,34,Y,Bx);
end;
if (Key_Code) and (Key=80) And (Y<8) Then
begin
highbox(13,Y,34,Y,BX);
inc(Y);
highbox(13,Y,34,Y,BX);
end
else
if (Key_Code) And (Key=72) And (Y>3) Then
begin
highbox(13,Y,34,Y,BX);
Dec(Y);
highbox(13,Y,34,Y,BX);
end
else
if ((Not Key_Code) And (Key=13)) Then
begin
Case Y Of
3: begin
if ( _Finds(2)) Then
begin
Find_valeur:=63;
Key:=255;
Key_Code:=false;
end
else Find_valeur:=0;
end;
4: begin
if ( _Finds(1)) Then
begin
Find_valeur:=98;
Key:=255;
Key_Code:=false;
end
else Find_valeur:=0;
end;
5: begin
if (StrFind<>'') Then
begin
Find_valeur:=62;
Key:=255;
Key_Code:=false;
end
else Find_Valeur:=0;
end;
6: begin
Readbuf(3,7,78,11,BuffDir^);
BoxColor(5,8,77,11,FondBox);
BoxFill(3,7,75,10,' ');
Box13.Rectangle(3,7,75,10,Simple);
Putxy(34,7,' Evaluate ');
Repeat
Entree:=ReadBox(5,8,StrCalcul,68,140);
if (Entree) and (StrCalcul<>'') Then
begin
StrResult:=Act(StrCalcul,9,4);
Putxy(5,9,' ');
textAttr:=113;
Putxy(5,9,'Result: ');
if (Result__Error = 1) Then
begin
textAttr:=116;
Putxy(13,9,StrResult);
StrResult:='';
end
else Putxy(13,9,StrResult);
textAttr:=Menu_Color;
end;
Until (Not Entree);
Writebuf(3,7,78,11,BuffDir^);
end;
7: begin
Readbuf(14,8,64,14,BuffDir^);
BoxColor(16,9,64,14,FondBox);
BoxFill(14,8,62,13,' ');
Box13.Rectangle(14,8,62,13,Simple);
Putxy(32,8,' Help evaluate ');
Putxy(16,9,' + - * / ^ ( )');
Putxy(16,10,'PI(0) ABS TAN ATAN COS EXP LN');
Putxy(16,11,'SIN SQRT SQR TRUNC RADIA ARSIN ARCOS');
Putxy(16,12,'ROUND FRAC INT');
Mousexy(14,8);
csoff;
DisplayMouse;
Repeat
Key:=KeyMouse;
Until ( (Key=1) And (Mbox(15,9,61,12)) ) OR (Key=27);
MaskMouse;
key:=0;
Writebuf(14,8,64,14,BuffDir^);
end;
8: begin
Window(1,1,80,CrtGetMaxY);
SetGraphMode(GetGraphMode);
Voir750;
RESTORECRTMODE;
EDIt_ECRAN;
textAttr:=Edit_Color;
if X_curseur<Max_curseurX Then E_curseurX:=X_curseur
else E_curseurX:=Max_curseurX-1;
Window(1,1,80,CrtGetMaxY);
Window(2,4,79,CrtGetMaxY-1);
Premiere_Page_Debut(Debut_Page);
Window(1,1,80,CrtGetMaxY);
if Y_curseur>=Max_curseurY Then
begin
Dec(Line_curseur,Y_curseur-(Max_curseurY-1));
Y_curseur:=Max_curseurY-1;
end;
Change_de_ligne:=true;
WindowMouse(1,1,CrtGetMaxX,CrtGetMaxY);
StyleMouse(2,14);
Key:=254;
Key_Code:=false;
textAttr:=Menu_Color;
Highbox(12,1,17,1,BX);
end;
end;
end
else
if (Alt And ((Key=45) Or (Key=106))) Then
begin
if (_Save_Fichier) Then
begin
if (P_New = 69) Then Fin_Programme:=true;
end
else Fin_Programme:=true;
end
else
if (Key_Code and (Key = 59)) Then Help_Keys;
Until ((Not key_Code) And (Key in[27,255,254])) OR (Fin_Programme) OR
((Key=77) And (Key_Code)) OR ((Key=75) And (Key_Code)) OR
((Key_Code) And (Alt) And (Key in[33,24,38,34,50]));
Highbox(12,1,17,1,BX);
if Key = 254 Then Key:=27
else WriteBuf(12,2,37,10,Menu_Buf^);
Retur2:=Y;
if Fin_Programme Then Edit:=27
else
if Key=255 Then
begin
Edit:=27;
Retur0:=2;
end
else
if ((Key_Code) And (Alt) And (Key in[33,24,38,34,50])) Then
begin
Case Key Of
33: Edit:=1;
24: Edit:=3;
38: Edit:=4;
34: Edit:=5;
50: Edit:=6;
end;
end
else
if (Key_Code) And (Key=75) Then Edit:=1
else
if (Key_Code) And (Key =77) Then Edit:=3
else
if (Key=27) Then
begin
Edit:=27;
Find_valeur:=0;
Retur0:=2;
end;
if (Find_Valeur=255) Then begin end
else
if (StrFind='') Then Find_valeur:=0;
end;
Function Menu_General(X:byte):byte;
Const XL : Array[1..6] OF byte=(9,17,28,36,52,60);
X1 : Array[1..6] OF byte=(4,12,20,31,39,55);
Var Key : byte;
begin
Key:=0;
textAttr:=Menu_Color;
HighBox(X1[X],1,XL[x],1,Bx);
CSOFF;
Repeat
Key:=KeyBoard;
if (Key_Code) And (Key=75) Then
begin
HighBox(X1[X],1,XL[x],1,Bx);
if X=1 Then X:=6
else Dec(x);
HighBox(X1[X],1,XL[x],1,Bx);
end
else
if (Key_Code) And (key=77) Then
begin
HighBox(X1[x],1,XL[x],1,Bx);
if X=6 Then X:=1
else inc(x);
HighBox(X1[x],1,XL[x],1,Bx);
end
else
if (Key_Code) and (Key=60) Then P_Save
else
if (Key_Code) and (Alt) And (Key=45) Then
begin
if _Save_Fichier Then
begin
if P_New = 69 Then Fin_Programme:=true;
end
else Fin_Programme:=true;
end
else
if (Key_Code) and (Key=59) Then Help_Keys;
Until ((not Key_code) And
(Key in [27,70,102,69,101,72,104,76,108,71,103,77,109])) OR
((x in[1,2,3,4,5,6]) and (Key=13)) OR
((Key_Code) And (Key in[60])) OR
((Key_Code) And (Alt) And (Key in[33,18,35,38,34,50])) OR
((Alt) And (Key=106)) OR (Fin_Programme);
HighBox(X1[x],1,XL[x],1,Bx);
Retur0:=x;
if Fin_Programme Then Menu_General:=27
else
if (Key=13) And (Not Fin_programme) Then Menu_General:=X
else
if (Not Key_Code) And (Key In[27,70,102,69,101,72,104,76,108,71,103,77,109]) Then
begin
Case Key OF
70,102: Menu_General:=1;
69,101: Menu_General:=2;
72,104: Menu_General:=3;
76,108: Menu_General:=4;
71,103: Menu_General:=5;
77,109: Menu_General:=6;
27: Menu_General:=27;
end;
end
else
if ((Key_Code) And (Alt) And (Key in[33,18,35,38])) Then
begin
Case Key Of
33: Menu_General:=1;
18: Menu_General:=2;
35: Menu_General:=3;
38: Menu_General:=4;
34: Menu_General:=5;
50: Menu_General:=6;
end;
end
else
if Key in[60,106] Then
begin
Menu_General:=1;
Case Key OF
60: Retur1:=60;
106: Retur1:=106;
end;
end
else
Menu_General:=27;
end;
Procedure Appel_Menu(N:byte);
begin
Repeat
Case n Of
0: N:=Menu_General(Retur0);
1: N:=Menu_File(Retur1);
2: N:=Edit(Retur2);
3: N:=Menu_Options(Retur3);
4: N:=Menu_Language(Retur4);
5: N:=Menu_Graph(Retur5);
6: N:=Menu_Mathes(Retur6);
end;
Until (N=27);
end;