This commit is contained in:
f1iwq2
2023-04-04 18:00:31 +02:00
parent 325dcf308f
commit a13df2cd9d
25 changed files with 1291 additions and 750 deletions

View File

@@ -123,6 +123,7 @@ type
ImagePalette8: TImage;
ImageTemp: TImage;
ImageTemp2: TImage;
outslectionner1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure ImageTCOContextPopup(Sender: TObject; MousePos: TPoint;
@@ -169,7 +170,6 @@ type
procedure ButtonRedessineClick(Sender: TObject);
procedure grille;
procedure EditAdrElementChange(Sender: TObject);
procedure EditTypeImageKeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Maj_TCO(Adresse : integer);
@@ -237,8 +237,6 @@ type
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure ImagePalette22MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure EditAdrElementKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ImageTCODblClick(Sender: TObject);
procedure ComboReprChange(Sender: TObject);
procedure ImagePalette1DragOver(Sender, Source: TObject; X, Y: Integer;
@@ -330,6 +328,8 @@ type
procedure ImagePalette25EndDrag(Sender, Target: TObject; X,
Y: Integer);
procedure ImagePalette25MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure FormKeyPress(Sender: TObject; var Key: Char);
@@ -1635,8 +1635,8 @@ begin
pen.width:=epaisseur;
MoveTo(x0,y0+hauteurCell);LineTo(xc,yc);LineTo(x0+largeurCell,yc);
end;
// élément 10
procedure dessin_10(Canvas : Tcanvas;x,y : integer;Mode : integer);
end;
// élément 10
procedure dessin_10(Canvas : Tcanvas;x,y : integer;Mode : integer);
var Adr, x0,y0: integer;
@@ -1654,6 +1654,7 @@ begin
Adr:=TCO[x,y].adresse;
if (Adr<>0) and (detecteur[Adr].etat) then couleur:=clAllume
else
case mode of
0: couleur:=clVoies;
@@ -1677,7 +1678,6 @@ begin
end;
end;
procedure dessin_11(Canvas : Tcanvas;x,y : integer;Mode : integer);
// élément 11
procedure dessin_11(Canvas : Tcanvas;x,y : integer;Mode : integer);
@@ -1694,6 +1694,7 @@ begin
r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell);
FillRect(r);
Adr:=TCO[x,y].adresse;
if (Adr<>0) and (detecteur[Adr].etat) then couleur:=clAllume
else
case mode of
@@ -2631,7 +2632,7 @@ begin
pen.width:=1;
jy1:=yc - Epaisseur-1;
jx1:=xc-(Epaisseur div 2);
end;
pen.width:=1;
Polygon([point(jx1,jy1),Point(jx1+epaisseur,jy1+epaisseur),Point(jx1+epaisseur,jy1-epaisseur),Point(jx1,jy1-epaisseur)]);
end;
@@ -3346,7 +3347,7 @@ begin
TextOut(xOrg+xt,Yorg+yt,s);
i:=detecteur[adresse].AdrTrain;
if i<>0 then
if i<>0 then
begin
i:=index_train_adresse(i);
if i<>0 then
begin
@@ -5271,7 +5272,6 @@ begin
Pen.color:=clGrille;
Brush.Color:=clblue;
//FillRect(r);
SelectionAffichee:=false;
Rectangle(rAncien);
end;
SelectionAffichee:=false;
@@ -5313,17 +5313,15 @@ begin
end;
end;
begin
// si voie ou rien ou signal ou quai
if (Bimage=1) or (Bimage=0) or (Bimage=23) or (Bimage=31) or (Bimage=30) then
EditTexte.Visible:=true;
begin
s:=Tco[XClicCell,YClicCell].Texte;
EditTexte.Text:=s;
EditTexte.Visible:=true;
ComboRepr.Enabled:=true;
end
end;
else
begin
formTCO.EditTexte.Visible:=false;
formTCO.comboRepr.Enabled:=false;
@@ -5334,7 +5332,7 @@ begin
GroupBox1.Caption:='Configuration cellule '+s;
XclicCellInserer:=XClicCell;
YclicCellInserer:=YClicCell;
ComboRepr.ItemIndex:=tco[XClicCell,yClicCell].repr;
EditAdrElement.Text:=IntToSTR(tco[XClicCellInserer,YClicCellInserer].Adresse);
EdittypeImage.Text:=IntToSTR(BImage);
ComboRepr.ItemIndex:=tco[XClicCell,yClicCell].repr;
ShapeCoulFond.Brush.Color:=tco[XClicCell,yClicCell].CouleurFond;
@@ -5342,6 +5340,7 @@ begin
if not(selectionaffichee) then _entoure_cell_clic;
actualise; // actualise la fenetre de config cellule
clicTCO:=false;
end;
if button=mbRight then
begin
@@ -5450,7 +5449,7 @@ begin
end;
procedure TFormTCO.ButtonRedessineClick(Sender: TObject);
end;
begin
Affiche_TCO;
end;
@@ -5461,45 +5460,10 @@ begin
//Affiche('Chgt adresse',clyellow);
if clicTCO or not(formConfCellTCOAff) then exit;
Val(EditAdrElement.Text,Adr,erreur);
if Adr=0 then tco[XClicCell,YClicCell].repr:=2;
if (erreur<>0) or (Adr<0) or (Adr>2048) then Adr:=0;
if Adr=0 then tco[XClicCell,YClicCell].repr:=2;
if tco[XClicCell,YClicCell].BImage=30 then
begin
index:=Index_feu(adr);
if index=0 then exit
else
begin
//Affiche('Feu '+intToSTR(Adr),clyellow);
affiche_tco;
end;
end;
Affiche_cellule(XclicCell,YclicCell);
end;
procedure TFormTCO.EditAdrElementKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_RETURN then
begin
efface_entoure;
affiche_cellule(XClicCell,YClicCell);
end;
end;
procedure TFormTCO.EditTypeImageKeyPress(Sender: TObject; var Key: Char);
var Bimage,erreur : integer;
begin
if affevt then Affiche('TCC evt editTypeImageKeyPress',clorange);
if actualize then exit;
if ord(Key)=VK_RETURN then
begin
Key:=#0; // évite beeping
Val(EditTypeImage.Text,Bimage,erreur);
tco[XClicCell,YClicCell].Adresse:=Adr;
formConfCellTCO.editAdrElement.Text:=intToSTR(Adr);
tco_Modifie:=true;
@@ -5624,57 +5588,24 @@ begin
tco[XClicCell,YClicCell].BImage:=30;
tco[XClicCell,YClicCell].Adresse:=0;
tco[XClicCell,YClicCell].FeuOriente:=1;
tco[XClicCell,YClicCell].PiedFeu:=1;
tco[XClicCell,YClicCell].y:=0;
// ne pas convertir l'adresse sinon evt changement du composant et on écrase l'aspect EditAdrElement.Text:=IntToSTR( tco[XClicCell,YClicCell].Adresse);
EdittypeImage.Text:=IntToSTR(tco[XClicCell,YClicCell].BImage);
Dessin_feu(ImageTCO.Canvas,XClicCell,YClicCell);
end;
procedure TFormTCO.ImagePalette30MouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
var l,h : integer;
begin
l:=Formprinc.Image9feux.width; //57
h:=Formprinc.Image9feux.height; //105
ImagePalette30.BeginDrag(true);
//ImageTemp:=ImagePalette30;
BitBlt(OldBmp.Canvas.Handle,0,0,LargeurCell,HauteurCell,ImageTCO.Canvas.Handle,offsetSourisX,offsetSourisY,SRCCOPY);
// StretchBlt(formTCO.ImageTemp.canvas.Handle,0,0,largeurCell,HauteurCell, // destination avec mise à l'échelle
// formprinc.Image9feux.Canvas.Handle,0,0,l,h,srccopy);
drag:=true;
oldx:=offsetSourisX;oldy:=offsetSourisY;
// debut_drag(ImagePalette30);
//imagePalette30.BeginDrag(true);
//StretchBlt(formTCO.ImageTCO.canvas.Handle,0,0,largeurCell,HauteurCell, // destination avec mise à l'échelle
// formprinc.Image9feux.Canvas.Handle,0,0,l,h,srccopy);
//Efface_Cellule(formTCO.ImageTCO.canvas,1,1,pmCopy);
{TransparentBlt(formTCO.ImageTemp.canvas.Handle,0,0,largeurCell,HauteurCell, // destination avec mise à l'échelle //50,50 ok 51,51 nok
formprinc.Image9feux.Canvas.Handle,0,0,50,90,clblue);
formtco.ImageTCO.repaint;
}
with formTCO.ImageTemp2.Canvas do
begin
pen.Color:=clfond;
brush.Color:=clblack;
Rectangle(0,0,91,91);
tco[XClicCell,YClicCell].coulFonte:=clWhite;
tco[XClicCell,YClicCell].x:=0;
//StretchBlt(formTCO.ImageTemp2.canvas.Handle,0,0,largeurCell,HauteurCell, // destination avec mise à l'échelle
// formprinc.Image9feux.Canvas.Handle,0,0,50,90,srccopy);
formtco.ImageTCO.repaint;
// formTCO.ImageTemp.Canvas.Rectangle(0,0,91,91);
formTCO.ImageTemp:=formTCO.ImageTemp2;
BitBlt(formTCO.ImageTemp.canvas.Handle,0,0,20,20,formTCO.ImageTemp2.canvas.Handle,0,0,SRCCOPY);
tco[XClicCell,YClicCell].y:=0;
// ne pas convertir l'adresse sinon evt changement du composant et on écrase l'aspect EditAdrElement.Text:=IntToSTR( tco[XClicCell,YClicCell].Adresse);
EdittypeImage.Text:=IntToSTR(tco[XClicCell,YClicCell].BImage);
Dessin_feu(ImageTCO.Canvas,XClicCell,YClicCell);
end;
procedure TFormTCO.ImagePalette30MouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
var l,h : integer;
//
begin
l:=Formprinc.Image9feux.width; //57
h:=Formprinc.Image9feux.height; //105
ImagePalette30.BeginDrag(true);
BitBlt(OldBmp.Canvas.Handle,0,0,LargeurCell,HauteurCell,ImageTCO.Canvas.Handle,offsetSourisX,offsetSourisY,SRCCOPY);
drag:=true;
oldx:=offsetSourisX;oldy:=offsetSourisY;
@@ -5910,6 +5841,7 @@ begin
BandeauMasque:=true;
end;
procedure TFormTCO.ButtonAfficheBandeauClick(Sender: TObject);
begin
Panel1.Show;
ButtonAfficheBandeau.visible:=false;
@@ -5918,7 +5850,7 @@ begin
end;
procedure TFormTCO.ImageTCODblClick(Sender: TObject);
tjdC : boolean;
var Bimage,Adresse,i : integer;
tjdC : boolean;
begin
if affEvt then Affiche('Double clic',clYellow);
@@ -6363,14 +6295,14 @@ var oriente,piedFeu : integer;
if actualize then exit;
if TCO[XClicCell,YClicCell].Bimage=30 then
begin
TCO_modifie:=true;
actualise; // met à jour la fenetre de config de la cellule
end;
end;
procedure TFormTCO.Signalgauchedelavoie1Click(Sender: TObject);
begin
signalG;
TCO[XClicCell,YClicCell].PiedFeu:=1;
Affiche_TCO;
TCO_modifie:=true;
actualise; // met à jour la fenetre de config de la cellule
end;
end;
procedure TFormTCO.Signalgauchedelavoie1Click(Sender: TObject);
begin
signalG;
end;
@@ -6392,8 +6324,8 @@ begin
if tco[XClicCell,YClicCell].Bimage=30 then
begin
PopUpMenu1.Items[6].Enabled:=true;
begin
PopUpMenu1.Items[6][0].checked:=false;
oriente:=tco[XClicCell,YClicCell].Feuoriente;
if oriente=1 then
begin
PopUpMenu1.Items[6][0].checked:=false;
PopUpMenu1.Items[6][1].checked:=false;
@@ -6765,9 +6697,42 @@ begin
begin
change_couleur_fond;
end;
procedure TFormTCO.FormKeyPress(Sender: TObject; var Key: Char);
begin
if affevt then Affiche('TCO.FormKeyPress',clOrange);
end;
procedure TFormTCO.ImagePalette1MouseDown(Sender: TObject;Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
debut_drag(ImagePalette1);
end;
procedure TFormTCO.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
accept:=true;
end;
procedure TFormTCO.EditTypeImageChange(Sender: TObject);
var Bimage,erreur : integer;
begin
if clicTCO or not(formConfCellTCOAff) then exit;
if affevt then Affiche('TCO evt editTypeImageChange',clorange);
if actualize then exit;
Val(EditTypeImage.Text,Bimage,erreur);
if (erreur<>0) or not(Bimage in[0..22,24..25,30,31]) then
begin
exit;
end;
TCO_modifie:=true;
tco[XClicCell,YClicCell].Bimage:=Bimage;
formConfCellTCO.EditTypeImage.Text:=intToSTR(Bimage);
actualise; // pour mise à jour de l'image de la fenetre FormConfCellTCO
efface_entoure;
affiche_cellule(XClicCell,YClicCell);
end;
end;