mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 18:25:40 +02:00
1276 lines
40 KiB
ObjectPascal
1276 lines
40 KiB
ObjectPascal
unit U_Layers;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, cxLookAndFeelPainters, StdCtrls, cxButtons, ExtCtrls, Menus,
|
|
ComCtrls,
|
|
// POWERCAD
|
|
PCPanel, PCDrawBox, PCDrawing, PowerCad, pcMsbar, XP_Panel, PCTypesUtils,
|
|
DrawObjects, DlgBase, ExtDlgs, PCLayerDlg, OleCtnrs, PCgui, GuiStrings,
|
|
DrawEngine, U_ESCadClasess, siComp, siLngLnk, cxControls, cxContainer,
|
|
cxEdit, cxCheckBox, RzButton, RzRadChk,
|
|
U_SCSLists, RzPanel, RzTrkBar, cxGraphics, cxLookAndFeels;
|
|
|
|
type
|
|
{TLayerItemData = record
|
|
IsManualVisible: Boolean; // Âðó÷íóþ ïîñòàâèëè âèäèìîñòü
|
|
IsManualGrayed: Boolean; // Âðó÷íóþ ïîñòàâèëè ïðîçðà÷íîñòü
|
|
end;}
|
|
|
|
TF_LayersDialog = class(TForm)
|
|
Panel1: TPanel;
|
|
bLayersList: TcxButton;
|
|
pmLayersList: TPopupMenu;
|
|
N1: TMenuItem;
|
|
N2: TMenuItem;
|
|
N3: TMenuItem;
|
|
N4: TMenuItem;
|
|
N5: TMenuItem;
|
|
N6: TMenuItem;
|
|
N7: TMenuItem;
|
|
N8: TMenuItem;
|
|
N9: TMenuItem;
|
|
lvLayersList: TListView;
|
|
Panel2: TPanel;
|
|
Label1: TLabel;
|
|
lng_Forms: TsiLangLinked;
|
|
Panel4: TPanel;
|
|
lbCurLayer: TLabel;
|
|
cbAllNetworks: TRzCheckBox;
|
|
cbComputerNetwork: TRzCheckBox;
|
|
cbTelephonNetwork: TRzCheckBox;
|
|
cbElectricNetwork: TRzCheckBox;
|
|
cbTelevisionNetwork: TRzCheckBox;
|
|
cbGasNetwork: TRzCheckBox;
|
|
cbShowCableChannelsOnly: TRzCheckBox;
|
|
RzGroupBox1: TRzGroupBox;
|
|
btSetDefGrayedColor: TButton;
|
|
pnGrayedSample: TPanel;
|
|
tbGrayed: TRzTrackBar;
|
|
TimerTBGrayed: TTimer;
|
|
E1: TMenuItem;
|
|
N10: TMenuItem;
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure lvLayersListMouseDown(Sender: TObject; Button: TMouseButton;
|
|
Shift: TShiftState; X, Y: Integer);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure lvLayersListSelectItem(Sender: TObject; Item: TListItem;
|
|
Selected: Boolean);
|
|
procedure lvLayersListMouseMove(Sender: TObject; Shift: TShiftState; X,
|
|
Y: Integer);
|
|
procedure cbAllNetworksClick(Sender: TObject);
|
|
procedure cbComputerNetworkClick(Sender: TObject);
|
|
procedure cbTelephonNetworkClick(Sender: TObject);
|
|
procedure cbElectricNetworkClick(Sender: TObject);
|
|
procedure cbTelevisionNetworkClick(Sender: TObject);
|
|
procedure cbGasNetworkClick(Sender: TObject);
|
|
procedure cbShowCableChannelsOnlyClick(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
procedure tbGrayedChange(Sender: TObject);
|
|
procedure btSetDefGrayedColorClick(Sender: TObject);
|
|
procedure tbGrayedDrawTick(TrackBar: TRzTrackBar; Canvas: TCanvas;
|
|
Location: TPoint; Index: Integer);
|
|
procedure TimerTBGrayedTimer(Sender: TObject);
|
|
procedure E1Click(Sender: TObject);
|
|
procedure N10Click(Sender: TObject);
|
|
private
|
|
FCADForm: TForm;
|
|
FLSubstrate: TLayer;
|
|
FLayersListItems: TList; //21.08.2012 - Ñîîòâåòñòâóþùèå ListItem ñëîÿì èç PCad
|
|
public
|
|
{ Public declarations }
|
|
DxfLayersOpened: Boolean;
|
|
isGrayed: TShow;
|
|
ListGrayed: TStringList;
|
|
FIsManualGrayed: TIntList;
|
|
FCreateDxfLayer: Boolean; // Tolik 30/08/2019 --
|
|
function AddLayer(const aName: String): TListItem;
|
|
procedure InitGrayedControls;
|
|
procedure LoadFromCADForm(aCADForm: TForm);
|
|
procedure SetGrayedColor(aColor: TColor; aFromControl: TObject);
|
|
procedure Unload;
|
|
procedure UpdateLayersList;
|
|
procedure UpdateOptions(ALNbr: Integer; ASetFlag: Boolean);
|
|
procedure UpdateNetworksOptions;
|
|
function FinditemByLayer(aLayerIdx: Integer; aLayer: TLayer): TListItem;
|
|
end;
|
|
|
|
var
|
|
F_LayersDialog: TF_LayersDialog;
|
|
|
|
implementation
|
|
uses USCS_Main, U_CAD, U_Common, U_BaseCommon, U_Constants, U_NewLayer;
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TF_LayersDialog.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
begin
|
|
FSCS_Main.aViewLayers.Checked := false;
|
|
Unload;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.FormShow(Sender: TObject);
|
|
begin
|
|
try
|
|
LoadFromCADForm(GCadForm);
|
|
{//06.08.2012
|
|
UpdateLayersList;
|
|
|
|
cbAllNetworks.OnClick := nil;
|
|
cbComputerNetwork.OnClick := nil;
|
|
cbTelephonNetwork.OnClick := nil;
|
|
cbElectricNetwork.OnClick := nil;
|
|
cbTelevisionNetwork.OnClick := nil;
|
|
cbGasNetwork.OnClick := nil;
|
|
|
|
if nt_All in GCadForm.FShowNetworkTypes then
|
|
begin
|
|
cbAllNetworks.Checked := True;
|
|
cbComputerNetwork.Checked := false;
|
|
cbComputerNetwork.Enabled := false;
|
|
cbTelephonNetwork.Checked := false;
|
|
cbTelephonNetwork.Enabled := false;
|
|
cbElectricNetwork.Checked := false;
|
|
cbElectricNetwork.Enabled := false;
|
|
cbTelevisionNetwork.Checked := false;
|
|
cbTelevisionNetwork.Enabled := false;
|
|
cbGasNetwork.Checked := false;
|
|
cbGasNetwork.Enabled := false;
|
|
end
|
|
else
|
|
begin
|
|
cbAllNetworks.Checked := false;
|
|
cbComputerNetwork.Enabled := true;
|
|
cbTelephonNetwork.Enabled := true;
|
|
cbElectricNetwork.Enabled := true;
|
|
cbTelevisionNetwork.Enabled := true;
|
|
cbGasNetwork.Enabled := true;
|
|
cbComputerNetwork.Checked := false;
|
|
cbTelephonNetwork.Checked := false;
|
|
cbElectricNetwork.Checked := false;
|
|
cbTelevisionNetwork.Checked := false;
|
|
cbGasNetwork.Checked := false;
|
|
|
|
if nt_Computer in GCadForm.FShowNetworkTypes then
|
|
cbComputerNetwork.Checked := True;
|
|
if nt_Telephon in GCadForm.FShowNetworkTypes then
|
|
cbTelephonNetwork.Checked := True;
|
|
if nt_Electric in GCadForm.FShowNetworkTypes then
|
|
cbElectricNetwork.Checked := True;
|
|
if nt_Television in GCadForm.FShowNetworkTypes then
|
|
cbTelevisionNetwork.Checked := True;
|
|
if nt_Gas in GCadForm.FShowNetworkTypes then
|
|
cbGasNetwork.Checked := True;
|
|
end;
|
|
|
|
cbAllNetworks.OnClick := cbAllNetworksClick;
|
|
cbComputerNetwork.OnClick := cbComputerNetworkClick;
|
|
cbTelephonNetwork.OnClick := cbTelephonNetworkClick;
|
|
cbElectricNetwork.OnClick := cbElectricNetworkClick;
|
|
cbTelevisionNetwork.OnClick := cbTelevisionNetworkClick;
|
|
cbGasNetwork.OnClick := cbGasNetworkClick;
|
|
|
|
InitGrayedControls;}
|
|
except
|
|
on E: Exception do AddExceptionToLogEx('TF_LayersDialog.FormShow', E.Message);
|
|
end;
|
|
{$IF Defined(ES_GRAPH_SC)}
|
|
Panel4.Visible := False;
|
|
{$ifend}
|
|
end;
|
|
|
|
function TF_LayersDialog.AddLayer(const aName: String): TListItem;
|
|
var
|
|
NewLayer: TLayer;
|
|
Item: TListItem;
|
|
LayerNbr: Integer; // tolik 30/08/2019 --
|
|
begin
|
|
NewLayer := TLayer.create(aName);
|
|
// Tolik 30/08/2019 --
|
|
if FCreateDxfLayer then
|
|
begin
|
|
NewLayer.isDxf := true;
|
|
FCreateDxfLayer := False;
|
|
end;
|
|
|
|
{ if FCreateDxfLayer then
|
|
begin
|
|
LayerNbr := GCadForm.PCad.NewLayer(aName);
|
|
NewLayer := TLayer(GCadForm.PCad.Layers[LayerNbr]);
|
|
NewLayer.isDxf := true;
|
|
FCreateDxfLayer := False;
|
|
end
|
|
else
|
|
begin
|
|
NewLayer := TLayer.create(aName);
|
|
TF_CAD(FCadForm).PCad.Layers.Add(NewLayer);
|
|
end; //
|
|
}
|
|
TF_CAD(FCadForm).PCad.Layers.Add(NewLayer);
|
|
FSCS_Main.cbLayers.Properties.Items.Add(aName);
|
|
Item := lvLayersList.Items.Add;
|
|
Item.Caption := NewLayer.Name;
|
|
// Tolik 31/08/2019 --
|
|
if NewLayer.isDxf then
|
|
Item.ImageIndex := 177
|
|
else
|
|
//
|
|
Item.ImageIndex := 176; //06.08.2012 -1;
|
|
Item.SubItems.Add('');
|
|
Item.SubItems.Add('');
|
|
Item.SubItemImages[0] := 136;
|
|
Item.SubItemImages[1] := -1;
|
|
Item.Data := NewLayer;
|
|
listGrayed.Add('seen');
|
|
if not GProjectChanged then // Tolik 28/08/2019 --
|
|
SetProjectChanged(True);
|
|
FIsManualGrayed.Add(biNone);
|
|
|
|
//FLayersListItems[TF_CAD(FCadForm).PCad.Layers.Count - 1] := Item;
|
|
FLayersListItems.Add(Item);
|
|
// Tolik 01/11/2021 --
|
|
if not GProjectChanged then
|
|
SetProjectChanged(True);
|
|
//
|
|
end;
|
|
|
|
procedure TF_LayersDialog.InitGrayedControls;
|
|
var
|
|
Params: TListParams;
|
|
begin
|
|
tbGrayed.Min := 0;
|
|
tbGrayed.Max := Length(GrayedColors) - 1;
|
|
|
|
Params := GetListParams(TF_CAD(FCADForm).FCADListID);
|
|
SetGrayedColor(Params.Settings.CADGrayedColor, nil);
|
|
end;
|
|
|
|
procedure TF_LayersDialog.LoadFromCADForm(aCADForm: TForm);
|
|
begin
|
|
if FCADForm <> aCADForm then
|
|
begin
|
|
FCADForm := aCADForm;
|
|
FLSubstrate := TLayer(TF_CAD(FCADForm).PCad.GetLayer(lnSubstrate));
|
|
UpdateLayersList;
|
|
|
|
cbAllNetworks.OnClick := nil;
|
|
cbComputerNetwork.OnClick := nil;
|
|
cbTelephonNetwork.OnClick := nil;
|
|
cbElectricNetwork.OnClick := nil;
|
|
cbTelevisionNetwork.OnClick := nil;
|
|
cbGasNetwork.OnClick := nil;
|
|
|
|
if nt_All in TF_CAD(FCADForm).FShowNetworkTypes then
|
|
begin
|
|
cbAllNetworks.Checked := True;
|
|
cbComputerNetwork.Checked := false;
|
|
cbComputerNetwork.Enabled := false;
|
|
cbTelephonNetwork.Checked := false;
|
|
cbTelephonNetwork.Enabled := false;
|
|
cbElectricNetwork.Checked := false;
|
|
cbElectricNetwork.Enabled := false;
|
|
cbTelevisionNetwork.Checked := false;
|
|
cbTelevisionNetwork.Enabled := false;
|
|
cbGasNetwork.Checked := false;
|
|
cbGasNetwork.Enabled := false;
|
|
end
|
|
else
|
|
begin
|
|
cbAllNetworks.Checked := false;
|
|
cbComputerNetwork.Enabled := true;
|
|
cbTelephonNetwork.Enabled := true;
|
|
cbElectricNetwork.Enabled := true;
|
|
cbTelevisionNetwork.Enabled := true;
|
|
cbGasNetwork.Enabled := true;
|
|
cbComputerNetwork.Checked := false;
|
|
cbTelephonNetwork.Checked := false;
|
|
cbElectricNetwork.Checked := false;
|
|
cbTelevisionNetwork.Checked := false;
|
|
cbGasNetwork.Checked := false;
|
|
|
|
if nt_Computer in TF_CAD(FCADForm).FShowNetworkTypes then
|
|
cbComputerNetwork.Checked := True;
|
|
if nt_Telephon in TF_CAD(FCADForm).FShowNetworkTypes then
|
|
cbTelephonNetwork.Checked := True;
|
|
if nt_Electric in TF_CAD(FCADForm).FShowNetworkTypes then
|
|
cbElectricNetwork.Checked := True;
|
|
if nt_Television in TF_CAD(FCADForm).FShowNetworkTypes then
|
|
cbTelevisionNetwork.Checked := True;
|
|
if nt_Gas in TF_CAD(FCADForm).FShowNetworkTypes then
|
|
cbGasNetwork.Checked := True;
|
|
end;
|
|
|
|
cbAllNetworks.OnClick := cbAllNetworksClick;
|
|
cbComputerNetwork.OnClick := cbComputerNetworkClick;
|
|
cbTelephonNetwork.OnClick := cbTelephonNetworkClick;
|
|
cbElectricNetwork.OnClick := cbElectricNetworkClick;
|
|
cbTelevisionNetwork.OnClick := cbTelevisionNetworkClick;
|
|
cbGasNetwork.OnClick := cbGasNetworkClick;
|
|
|
|
InitGrayedControls;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.SetGrayedColor(aColor: TColor; aFromControl: TObject);
|
|
var
|
|
i: Integer;
|
|
TrackPos: Integer;
|
|
Params: TListParams;
|
|
begin
|
|
// Tolik 01/11/2021 --
|
|
if not GProjectChanged then
|
|
SetProjectChanged(True);
|
|
//
|
|
//06.08.2012 GrayedColor := aColor;
|
|
if aFromControl <> tbGrayed then
|
|
begin
|
|
TrackPos := -1;
|
|
for i := 0 to Length(GrayedColors) - 1 do
|
|
if GrayedColors[i] = aColor then
|
|
begin
|
|
TrackPos := i;
|
|
Break; //// BREAK ////
|
|
end;
|
|
if TrackPos <> -1 then
|
|
//tbGrayed.Position := TrackPos;
|
|
tbGrayed.Position := Length(GrayedColors)-1 - TrackPos;
|
|
end;
|
|
if (aFromControl <> nil) and (FCADForm <> nil) then
|
|
begin
|
|
TF_CAD(FCADForm).PCad.FGrayedColor := aColor;
|
|
//Tolik 21/10/2021 - -
|
|
|
|
for i := 0 to TF_CAD(FCADForm).PCad.Figures.Count - 1 do
|
|
begin
|
|
if TFigure(TF_CAD(FCADForm).PCad.Figures[i]) is TBmpObject then
|
|
TbmpObject(TF_CAD(FCADForm).PCad.Figures[i]).ImageEdited := True;
|
|
end;
|
|
|
|
//
|
|
Params := GetListParams(TF_CAD(FCADForm).FCADListID);
|
|
Params.Settings.CADGrayedColor := aColor;
|
|
SaveCADListParams(TF_CAD(FCADForm).FCADListID, Params);
|
|
|
|
Repaint;
|
|
RefreshCAD(TF_CAD(FCADForm).PCad);
|
|
end;
|
|
pnGrayedSample.Color := aColor;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.Unload;
|
|
begin
|
|
lvLayersList.Items.BeginUpdate;
|
|
try
|
|
lvLayersList.Items.Clear;
|
|
finally
|
|
lvLayersList.Items.EndUpdate;
|
|
end;
|
|
FIsManualGrayed.Clear;
|
|
FLayersListItems.Clear;
|
|
FCADForm := nil;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.UpdateLayersList;
|
|
var
|
|
SubstItem, Item: TListItem;
|
|
LayerName: string;
|
|
CurLayer: TLayer;
|
|
i: integer;
|
|
DxfExist: Boolean;
|
|
begin
|
|
try
|
|
while listGrayed.Count < TF_CAD(FCADForm).PCad.Layers.Count do
|
|
listGrayed.Add('seen');
|
|
|
|
lvLayersList.Items.BeginUpdate;
|
|
try
|
|
lvLayersList.Items.Clear;
|
|
FLayersListItems.Clear;
|
|
for i := 0 to TF_CAD(FCADForm).PCad.Layers.Count - 1 do
|
|
FLayersListItems.Add(nil);
|
|
i := 0;
|
|
|
|
// äîáàâèòü ñëîé ïîäëîæêè
|
|
CurLayer := Tlayer(TF_CAD(FCADForm).PCad.Layers[1]);
|
|
SubstItem := lvLayersList.Items.Add;
|
|
SubstItem.Caption := CurLayer.Name;
|
|
SubstItem.ImageIndex := 176;
|
|
SubstItem.SubItems.Add('');
|
|
SubstItem.SubItems.Add('');
|
|
SubstItem.Data := CurLayer;
|
|
FLayersListItems[1] := SubstItem;
|
|
if CurLayer.visible = seen then
|
|
begin
|
|
SubstItem.SubItemImages[0] := 136;
|
|
if listGrayed[i] = 'seen' then
|
|
SubstItem.SubItemImages[1] := -1
|
|
else
|
|
if listGrayed[i] = 'grayed' then
|
|
SubstItem.SubItemImages[1] := 137;
|
|
end
|
|
else
|
|
if CurLayer.visible = grayed then
|
|
begin
|
|
SubstItem.SubItemImages[0] := 136;
|
|
SubstItem.SubItemImages[1] := 137;
|
|
end
|
|
else
|
|
begin
|
|
SubstItem.SubItemImages[0] := -1;
|
|
SubstItem.SubItemImages[1] := -1;
|
|
end;
|
|
|
|
// îòîáðàòü äõô ñëîè
|
|
DxfExist := false;
|
|
for i := 10 to TF_CAD(FCADForm).PCad.Layers.Count - 1 do
|
|
begin
|
|
CurLayer := Tlayer(TF_CAD(FCADForm).PCad.Layers[i]);
|
|
// åñëè ýòî ÄÕÔ ñëîé
|
|
if CurLayer.IsDxf then
|
|
begin
|
|
Item := lvLayersList.Items.Add;
|
|
Item.Caption := CurLayer.Name;
|
|
Item.ImageIndex := 177;
|
|
Item.SubItems.Add('');
|
|
Item.SubItems.Add('');
|
|
Item.Data := CurLayer;
|
|
FLayersListItems[i] := Item;
|
|
if CurLayer.visible = seen then
|
|
begin
|
|
Item.SubItemImages[0] := 136;
|
|
if listGrayed[i] = 'seen' then
|
|
Item.SubItemImages[1] := -1
|
|
else
|
|
if listGrayed[i] = 'grayed' then
|
|
Item.SubItemImages[1] := 137;
|
|
end
|
|
else
|
|
if CurLayer.visible = grayed then
|
|
begin
|
|
Item.SubItemImages[0] := 136;
|
|
Item.SubItemImages[1] := 137;
|
|
end
|
|
else
|
|
begin
|
|
Item.SubItemImages[0] := -1;
|
|
Item.SubItemImages[1] := -1;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
// äîáàâèòü îñòàëüíûå
|
|
for i := 2 to TF_CAD(FCADForm).PCad.Layers.Count - 1 do
|
|
begin
|
|
CurLayer := Tlayer(TF_CAD(FCADForm).PCad.Layers[i]);
|
|
// åñëè ýòî ÍÅ ÄÕÔ ñëîé
|
|
if not CurLayer.IsDxf then
|
|
begin
|
|
Item := lvLayersList.Items.Add;
|
|
Item.Caption := CurLayer.Name;
|
|
Item.ImageIndex := 176;
|
|
Item.SubItems.Add('');
|
|
Item.SubItems.Add('');
|
|
Item.Data := CurLayer;
|
|
FLayersListItems[i] := Item;
|
|
if CurLayer.visible = seen then
|
|
begin
|
|
Item.SubItemImages[0] := 136;
|
|
if listGrayed[i] = 'seen' then
|
|
Item.SubItemImages[1] := -1
|
|
else
|
|
if listGrayed[i] = 'grayed' then
|
|
Item.SubItemImages[1] := 137;
|
|
end
|
|
else
|
|
if CurLayer.visible = grayed then
|
|
begin
|
|
Item.SubItemImages[0] := 136;
|
|
Item.SubItemImages[1] := 137;
|
|
end
|
|
else
|
|
begin
|
|
Item.SubItemImages[0] := -1;
|
|
Item.SubItemImages[1] := -1;
|
|
end;
|
|
end;
|
|
end;
|
|
finally
|
|
lvLayersList.Items.EndUpdate;
|
|
end;
|
|
|
|
FIsManualGrayed.Clear;
|
|
for i := 0 to TF_CAD(FCADForm).PCad.Layers.Count - 1 do
|
|
begin
|
|
CurLayer := Tlayer(TF_CAD(FCADForm).PCad.Layers[i]);
|
|
//21.08.2012 if CurLayer.IsDxf and (CurLayer.visible = seen) then
|
|
//21.08.2012 Åñëè ïîäëîæêà ñåðàÿ, à dxf íå ñåðûé, òî ñòàâèì ïðèçíàê
|
|
if CurLayer.IsDxf and (CurLayer.visible = seen) and (FLSubstrate.visible = grayed) then
|
|
FIsManualGrayed.Add(biFalse)
|
|
else
|
|
FIsManualGrayed.Add(biNone);
|
|
end;
|
|
|
|
lbCurLayer.Caption := TF_CAD(FCADForm).PCad.GetLayerName(TF_CAD(FCADForm).PCad.ActiveLayer);
|
|
//
|
|
if (TF_CAD(FCADForm).PCad.Layers.Count - 1) <> FSCS_Main.cbLayers.Properties.Items.Count then
|
|
begin
|
|
FSCS_Main.cbLayers.Properties.BeginUpdate;
|
|
try
|
|
FSCS_Main.cbLayers.Properties.Items.Clear;
|
|
for i := 1 to TF_CAD(FCADForm).PCad.LayerCount - 1 do
|
|
FSCS_Main.cbLayers.Properties.Items.Add(TF_CAD(FCADForm).PCad.GetLayerName(i));
|
|
finally
|
|
FSCS_Main.cbLayers.Properties.EndUpdate;
|
|
end;
|
|
end;
|
|
except
|
|
on E: Exception do AddExceptionToLogEx('TF_LayersDialog.UpdateLayersList', E.Message);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.lvLayersListMouseDown(Sender: TObject;
|
|
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
|
var
|
|
i: Integer;
|
|
LayerItem, DxfItem: TListItem;
|
|
CurLayer, DxfLayer: TLayer;
|
|
LNbr, DxfLNbr: integer;
|
|
ListSettings: TListSettingRecord;
|
|
LayerIdx: Integer;
|
|
|
|
Procedure BringtofrontSCSFigures; // Tolik 02/08/2023 --
|
|
var i: integer;
|
|
RefreshFlag: boolean;
|
|
figList: TList;
|
|
begin
|
|
RefreshFlag := GCanRefreshCad;
|
|
GCanRefreshCad := False;
|
|
for i := 0 to GCadForm.FSCSFigures.Count - 1 do
|
|
begin
|
|
if TFigure(GCadForm.FSCSFigures[i]) is TConnectorObject then
|
|
begin
|
|
if TConnectorObject(GCadForm.FSCSFigures[i]).ConnectorType = ct_NB then
|
|
if TConnectorObject(GCadForm.FSCSFigures[i]).DrawFigure <> nil then
|
|
FigureBringToFront(Tfigure(TConnectorObject(GCadForm.FSCSFigures[i]).drawfigure));
|
|
|
|
end
|
|
else
|
|
if TFigure(GCadForm.FSCSFigures[i]) is TOrthoLine then
|
|
begin
|
|
|
|
end;
|
|
FigureBringToFront(TFigure(GCadForm.FSCSFigures[i]));
|
|
end;
|
|
GCanRefreshCad := True;
|
|
end;
|
|
begin
|
|
try
|
|
//Tolik 01/11/2021 --
|
|
if not GProjectChanged then
|
|
SetProjectChanged(True);
|
|
//
|
|
TF_CAD(FCADForm).PCad.DeselectAll(TF_CAD(FCADForm).PCad.ActiveLayer);
|
|
LayerItem := lvLayersList.GetItemAt(lvLayersList.TopItem.Position.X, Y);
|
|
if LayerItem = nil then
|
|
Exit;
|
|
// êîëîíêà ñ èìåíàìè, íàôèã íàì íå íóæíà
|
|
if X < 190 then
|
|
Exit;
|
|
// Layer ñ êîòîðûì ïðîèçâîäèòüñÿ îïåðàöèÿ !!!
|
|
LNbr := TF_CAD(FCADForm).PCad.GetLayerNbr(LayerItem.Caption);
|
|
CurLayer := TLayer(TF_CAD(FCADForm).PCad.Layers[LNbr]);
|
|
LayerIdx := TF_CAD(FCADForm).PCad.Layers.IndexOf(CurLayer); //lvLayersList.Items.IndexOf(LayerItem);
|
|
|
|
// êîëîíêà ñ âèäèìîñòüþ ñëîåâ
|
|
if (X > 190) and (X < 210) then
|
|
begin
|
|
// åñëè ýòî ñëîé ÄÕÔ, à âèäèìîñòü ïîäëîæêè îòêëþ÷åíà
|
|
if (CurLayer.IsDxf) and (TLayer(TF_CAD(FCADForm).PCad.GetLayer(1)).visible = lost) then
|
|
Exit;
|
|
|
|
// ñëîé áûë îòîáðàæåí - âûêëþ÷èòü
|
|
if CurLayer.visible <> lost then
|
|
begin
|
|
if CurLayer.visible = seen then
|
|
listGrayed[LNbr] := 'seen';
|
|
if CurLayer.visible = grayed then
|
|
listGrayed[LNbr] := 'grayed';
|
|
LayerItem.SubItemImages[1] := -1;
|
|
LayerItem.SubItemImages[0] := -1;
|
|
CurLayer.visible := lost;
|
|
UpdateOptions(LNbr, False);
|
|
|
|
// åñëè ñëîé ïîäëîæêà, òî îòðåãóëèðîâàòü äõô ñëîè
|
|
if LNbr = 1 then
|
|
begin
|
|
lvLayersList.Items.BeginUpdate;
|
|
try
|
|
for i := 10 to TF_CAD(FCADForm).PCad.LayerCount - 1 do
|
|
begin
|
|
DxfLayer := Tlayer(TF_CAD(FCADForm).PCad.Layers[i]);
|
|
if DxfLayer.IsDxf then
|
|
begin
|
|
DxfItem := FinditemByLayer(i, DxfLayer);
|
|
DxfItem.SubItemImages[0] := -1;
|
|
DxfItem.SubItemImages[1] := -1;
|
|
if DxfLayer.visible = seen then
|
|
listGrayed[i] := 'seen';
|
|
if DxfLayer.visible = grayed then
|
|
listGrayed[i] := 'grayed';
|
|
DxfLayer.tmpVisible := DxfLayer.visible;
|
|
DxfLayer.visible := lost;
|
|
end;
|
|
end;
|
|
finally
|
|
lvLayersList.Items.EndUpdate;
|
|
end;
|
|
end;
|
|
// **********************************************
|
|
end
|
|
else
|
|
// ñëîé áûë ñêðûò - âêëþ÷èòü
|
|
if CurLayer.visible = lost then
|
|
begin
|
|
LayerItem.SubItemImages[0] := 136;
|
|
if listGrayed[LNbr] = 'seen' then
|
|
CurLayer.visible := seen;
|
|
if listGrayed[LNbr] = 'grayed' then
|
|
begin
|
|
CurLayer.visible := grayed;
|
|
LayerItem.SubItemImages[1] := 137;
|
|
end;
|
|
UpdateOptions(LNbr, True);
|
|
|
|
// åñëè ñëîé ïîäëîæêà, òî îòðåãóëèðîâàòü äõô ñëîè
|
|
if LNbr = 1 then
|
|
begin
|
|
lvLayersList.Items.BeginUpdate;
|
|
try
|
|
for i := 10 to TF_CAD(FCADForm).PCad.LayerCount - 1 do
|
|
begin
|
|
DxfLayer := Tlayer(TF_CAD(FCADForm).PCad.Layers[i]);
|
|
if DxfLayer.IsDxf then
|
|
begin
|
|
DxfItem := FinditemByLayer(i, DxfLayer);
|
|
if DxfLayer.tmpVisible = seen then
|
|
begin
|
|
DxfItem.SubItemImages[0] := 136;
|
|
DxfItem.SubItemImages[1] := -1;
|
|
DxfLayer.visible := seen;
|
|
end
|
|
else
|
|
if DxfLayer.tmpVisible = grayed then
|
|
begin
|
|
// åñëè ïîäëîæêà ñàìà êàê ïîäëîæêà
|
|
if CurLayer.visible = grayed then
|
|
begin
|
|
DxfItem.SubItemImages[0] := 136;
|
|
DxfItem.SubItemImages[1] := 137;
|
|
DxfLayer.visible := grayed;
|
|
end
|
|
else
|
|
// åñëè íåò, òî ñäåëàòü èç ñëîÿ îáû÷íûé âèäèìûé
|
|
begin
|
|
DxfItem.SubItemImages[0] := 136;
|
|
DxfItem.SubItemImages[1] := -1;
|
|
DxfLayer.visible := seen;
|
|
end;
|
|
end
|
|
else
|
|
if DxfLayer.tmpVisible = lost then
|
|
begin
|
|
DxfItem.SubItemImages[0] := -1;
|
|
DxfItem.SubItemImages[1] := -1;
|
|
DxfLayer.visible := lost;
|
|
end;
|
|
end;
|
|
end;
|
|
finally
|
|
lvLayersList.Items.EndUpdate;
|
|
end;
|
|
end;
|
|
// **********************************************
|
|
end;
|
|
if not GProjectChanged then // Tolik 28/08/2019 --
|
|
SetProjectChanged(True);
|
|
end;
|
|
|
|
// êîëîíêà ñ îòîáðàæåíèÿìè âèäà íîðìàëüíî-ïîäëîæêà
|
|
if (X > 210) and (X < 230) then
|
|
begin
|
|
// åñëè ýòî ñëîé ÄÕÔ, à âèäèìîñòü ïîäëîæêè êàê ïîäëîæêè îòêëþ÷åíà
|
|
if (CurLayer.IsDxf) and (TLayer(TF_CAD(FCADForm).PCad.GetLayer(1)).visible <> grayed) then
|
|
Exit;
|
|
|
|
// ñëîé áûë ïðîçðà÷íûì - ñäåëàòü íîðìàëüíûì
|
|
if CurLayer.visible = grayed then
|
|
begin
|
|
FIsManualGrayed[LayerIdx] := biFalse;
|
|
|
|
CurLayer.visible := seen;
|
|
LayerItem.SubItemImages[1] := -1;
|
|
// åñëè ñëîé ïîäëîæêà, òî îòðåãóëèðîâàòü äõô ñëîè
|
|
if LNbr = 1 then
|
|
begin
|
|
lvLayersList.Items.BeginUpdate;
|
|
try
|
|
for i := 10 to TF_CAD(FCADForm).PCad.LayerCount - 1 do
|
|
begin
|
|
DxfLayer := Tlayer(TF_CAD(FCADForm).PCad.Layers[i]);
|
|
if DxfLayer.IsDxf then
|
|
begin
|
|
DxfItem := FinditemByLayer(i, DxfLayer);
|
|
DxfItem.SubItemImages[1] := -1;
|
|
DxfLayer.tmpVisible := DxfLayer.visible;
|
|
if DxfLayer.visible = grayed then
|
|
DxfLayer.visible := seen;
|
|
end;
|
|
end;
|
|
finally
|
|
lvLayersList.Items.EndUpdate;
|
|
end;
|
|
end;
|
|
end
|
|
else
|
|
// ñëîé áûë îáû÷íûì - ñäåëàòü ïðîçðà÷íûì
|
|
if CurLayer.visible = seen then
|
|
begin
|
|
BringtofrontSCSFigures; // Tolik 02/08/2023 --
|
|
CurLayer.visible := grayed;
|
|
LayerItem.SubItemImages[1] := 137;
|
|
|
|
FIsManualGrayed[LayerIdx] := biTrue;
|
|
|
|
// åñëè ñëîé ïîäëîæêà, òî îòðåãóëèðîâàòü äõô ñëîè
|
|
if LNbr = 1 then
|
|
begin
|
|
lvLayersList.Items.BeginUpdate;
|
|
try
|
|
for i := 10 to TF_CAD(FCADForm).PCad.LayerCount - 1 do
|
|
begin
|
|
DxfLayer := Tlayer(TF_CAD(FCADForm).PCad.Layers[i]);
|
|
if DxfLayer.IsDxf then
|
|
begin
|
|
DxfItem := FinditemByLayer(i, DxfLayer);
|
|
{//03.08.2012
|
|
if DxfLayer.tmpVisible = grayed then
|
|
begin
|
|
DxfItem.SubItemImages[1] := 137;
|
|
DxfLayer.visible := grayed;
|
|
end
|
|
else
|
|
begin
|
|
DxfItem.SubItemImages[1] := -1;
|
|
//DxfLayer.visible := seen;
|
|
end;}
|
|
|
|
if FIsManualGrayed[i] <> biFalse then
|
|
begin
|
|
DxfLayer.visible := grayed; //03.08.2012
|
|
DxfItem.SubItemImages[1] := 137;
|
|
end
|
|
else
|
|
DxfItem.SubItemImages[1] := -1;
|
|
end;
|
|
end;
|
|
finally
|
|
lvLayersList.Items.EndUpdate;
|
|
end;
|
|
end;
|
|
end;
|
|
//Tolik 20/10/2021 --
|
|
for i := 0 to TF_CAD(FCADForm).PCad.Figures.Count - 1 do
|
|
begin
|
|
if TFigure(TF_CAD(FCADForm).PCad.Figures[i]) is TBMPObject then
|
|
begin
|
|
if TFigure(TF_CAD(FCADForm).PCad.Figures[i]).LayerHandle = integer(CurLayer) then
|
|
TBMPObject(TF_CAD(FCADForm).PCad.Figures[i]).ImageEdited := true;
|
|
end;
|
|
end;
|
|
//
|
|
if not GProjectChanged then // Tolik 28/08/2019 --
|
|
SetProjectChanged(True);
|
|
end;
|
|
|
|
RefreshCAD(TF_CAD(FCADForm).PCad);
|
|
except
|
|
on E: Exception do AddExceptionToLogEx('TF_LayersDialog.lvLayersListMouseDown', E.Message);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.FormCreate(Sender: TObject);
|
|
var
|
|
i: Integer;
|
|
begin
|
|
try
|
|
FCADForm := nil;
|
|
DxfLayersOpened := False;
|
|
ListGrayed := TStringList.Create;
|
|
for i := 0 to 9 do
|
|
ListGrayed.Add('seen');
|
|
|
|
FIsManualGrayed := TIntList.Create;
|
|
FLayersListItems := TList.Create;
|
|
FCreateDxfLayer := False; // Tolik 30/08/2019 --
|
|
except
|
|
on E: Exception do AddExceptionToLogEx('TF_LayersDialog.FormCreate', E.Message);
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TF_LayersDialog.lvLayersListSelectItem(Sender: TObject;
|
|
Item: TListItem; Selected: Boolean);
|
|
var
|
|
LNbr: integer;
|
|
LayerName: string;
|
|
begin
|
|
try
|
|
Selected := True;
|
|
if lvLayersList.Selected <> nil then
|
|
begin
|
|
TF_CAD(FCADForm).PCad.DeselectAll(TF_CAD(FCADForm).PCad.ActiveLayer);
|
|
LayerName := lvLayersList.Selected.Caption;
|
|
TF_CAD(FCADForm).PCad.DeselectAll(TF_CAD(FCADForm).PCad.ActiveLayer);
|
|
LNbr := TF_CAD(FCADForm).PCad.GetLayerNbr(LayerName);
|
|
TF_CAD(FCADForm).CurrentLayer := LNbr;
|
|
lbCurLayer.Caption := LayerName + ' ';
|
|
if FSCS_Main.tbCADToolsExpert.Visible then
|
|
FSCS_Main.tbSelectExpert.Down := True
|
|
else
|
|
FSCS_Main.tbSelectNoob.Down := True;
|
|
end;
|
|
except
|
|
on E: Exception do AddExceptionToLogEx('TF_LayersDialog.lvLayersListSelectItem', E.Message);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.N10Click(Sender: TObject);
|
|
begin
|
|
FCreateDxfLayer := true;
|
|
F_NewLayer.ShowModal;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.UpdateOptions(ALNbr: Integer; ASetFlag: Boolean);
|
|
var
|
|
ListSettings: TListSettingRecord;
|
|
ListParams: TListParams;
|
|
begin
|
|
try
|
|
ListParams := GetListParams(TF_CAD(FCADForm).FCADListID);
|
|
ListSettings := ListParams.Settings;
|
|
if ALNbr = 3 then
|
|
begin
|
|
TF_CAD(FCADForm).FShowLinesCaptions := ASetFlag;
|
|
ListSettings.ShowLineObjectCaption := ASetFlag;
|
|
end;
|
|
if ALNbr = 4 then
|
|
begin
|
|
TF_CAD(FCADForm).FShowConnectorsCaptions := ASetFlag;
|
|
ListSettings.ShowConnObjectCaption := ASetFlag;
|
|
end;
|
|
if ALNbr = 5 then
|
|
begin
|
|
TF_CAD(FCADForm).FShowLinesNotes := ASetFlag;
|
|
ListSettings.ShowLineObjectNote := ASetFlag;
|
|
end;
|
|
if ALNbr = 6 then
|
|
begin
|
|
TF_CAD(FCADForm).FShowConnectorsNotes := ASetFlag;
|
|
ListSettings.ShowConnObjectNote := ASetFlag;
|
|
end;
|
|
ListParams.Settings := ListSettings;
|
|
SaveListParams(TF_CAD(FCADForm).FCADListID, ListParams, True, False);
|
|
except
|
|
on E: Exception do AddExceptionToLogEx('TF_LayersDialog.UpdateOptions', E.Message);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.lvLayersListMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
|
var
|
|
LayerItem: TListItem;
|
|
Layer: TLayer;
|
|
LNbr: Integer;
|
|
begin
|
|
try
|
|
LayerItem := nil;
|
|
if lvLayersList.TopItem <> nil then
|
|
LayerItem := lvLayersList.GetItemAt(lvLayersList.TopItem.Position.X, Y);
|
|
if LayerItem <> nil then
|
|
begin
|
|
if X < 190 then
|
|
begin
|
|
Layer := Tlayer(LayerItem.Data);
|
|
LNbr := TF_CAD(FCADForm).PCad.GetLayerNbr(Layer);
|
|
if LNbr = 0 then
|
|
lvLayersList.Hint := cLayers_Mes1;
|
|
if LNbr = 1 then
|
|
lvLayersList.Hint := cLayers_Mes2;
|
|
if LNbr = 2 then
|
|
lvLayersList.Hint := cLayers_Mes3;
|
|
if LNbr = 3 then
|
|
lvLayersList.Hint := cLayers_Mes4;
|
|
if LNbr = 4 then
|
|
lvLayersList.Hint := cLayers_Mes5;
|
|
if LNbr = 5 then
|
|
lvLayersList.Hint := cLayers_Mes6;
|
|
if LNbr = 6 then
|
|
lvLayersList.Hint := cLayers_Mes7;
|
|
if LNbr = 7 then
|
|
lvLayersList.Hint := cLayers_Mes8;
|
|
if LNbr = 8 then
|
|
lvLayersList.Hint := cLayers_Mes11;
|
|
end
|
|
else
|
|
if (X > 190) and (X < 210) then
|
|
begin
|
|
lvLayersList.Hint := cLayers_Mes9;
|
|
end
|
|
else
|
|
if (X > 210) and (X < 230) then
|
|
begin
|
|
lvLayersList.Hint := cLayers_Mes10;
|
|
end;
|
|
end;
|
|
except
|
|
on E: Exception do AddExceptionToLogEx('TF_LayersDialog.lvLayersListMouseMove', E.Message);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.cbAllNetworksClick(Sender: TObject);
|
|
begin
|
|
try
|
|
if cbAllNetworks.Checked then
|
|
begin
|
|
cbComputerNetwork.Checked := False;
|
|
cbTelephonNetwork.Checked := False;
|
|
cbElectricNetwork.Checked := False;
|
|
cbTelevisionNetwork.Checked := False;
|
|
cbGasNetwork.Checked := False;
|
|
cbComputerNetwork.Enabled := False;
|
|
cbTelephonNetwork.Enabled := False;
|
|
cbElectricNetwork.Enabled := False;
|
|
cbTelevisionNetwork.Enabled := False;
|
|
cbGasNetwork.Enabled := False;
|
|
end
|
|
else
|
|
begin
|
|
cbComputerNetwork.Enabled := True;
|
|
cbTelephonNetwork.Enabled := True;
|
|
cbElectricNetwork.Enabled := True;
|
|
cbTelevisionNetwork.Enabled := True;
|
|
cbGasNetwork.Enabled := True;
|
|
end;
|
|
UpdateNetworksOptions;
|
|
except
|
|
on E: Exception do AddExceptionToLogEx('TF_LayersDialog.cbAllNetworksClick', E.Message);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.UpdateNetworksOptions;
|
|
begin
|
|
try
|
|
if not GProjectChanged then // Tolik 01/11/2021 --
|
|
SetProjectChanged(True);
|
|
TF_CAD(FCADForm).FShowNetworkTypes := [];
|
|
if cbAllNetworks.Checked then
|
|
TF_CAD(FCADForm).FShowNetworkTypes := [nt_All];
|
|
if cbComputerNetwork.Enabled then
|
|
if cbComputerNetwork.Checked then
|
|
TF_CAD(FCADForm).FShowNetworkTypes := TF_CAD(FCADForm).FShowNetworkTypes + [nt_Computer];
|
|
if cbTelephonNetwork.Enabled then
|
|
if cbTelephonNetwork.Checked then
|
|
TF_CAD(FCADForm).FShowNetworkTypes := TF_CAD(FCADForm).FShowNetworkTypes + [nt_Telephon];
|
|
if cbElectricNetwork.Enabled then
|
|
if cbElectricNetwork.Checked then
|
|
TF_CAD(FCADForm).FShowNetworkTypes := TF_CAD(FCADForm).FShowNetworkTypes + [nt_Electric];
|
|
if cbTelevisionNetwork.Enabled then
|
|
if cbTelevisionNetwork.Checked then
|
|
TF_CAD(FCADForm).FShowNetworkTypes := TF_CAD(FCADForm).FShowNetworkTypes + [nt_Television];
|
|
if cbGasNetwork.Enabled then
|
|
if cbGasNetwork.Checked then
|
|
TF_CAD(FCADForm).FShowNetworkTypes := TF_CAD(FCADForm).FShowNetworkTypes + [nt_Gas];
|
|
TF_CAD(FCADForm).PCad.DrawFigures;
|
|
DeselectNoDrawed(TF_CAD(FCADForm).PCad); //05.04.2011
|
|
RefreshCAD(TF_CAD(FCADForm).PCad);
|
|
except
|
|
on E: Exception do AddExceptionToLogEx('TF_LayersDialog.UpdateNetworksOptions', E.Message);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.cbComputerNetworkClick(Sender: TObject);
|
|
begin
|
|
UpdateNetworksOptions;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.cbTelephonNetworkClick(Sender: TObject);
|
|
begin
|
|
UpdateNetworksOptions;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.cbElectricNetworkClick(Sender: TObject);
|
|
begin
|
|
UpdateNetworksOptions;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.cbTelevisionNetworkClick(Sender: TObject);
|
|
begin
|
|
UpdateNetworksOptions;
|
|
end;
|
|
|
|
// Tolik 30/08/2019 -- óäàëèòü ïóñòûå DXF ñëîè ñ ïîäëîæêè
|
|
procedure TF_LayersDialog.E1Click(Sender: TObject);
|
|
var i: Integer;
|
|
DxfLayersList, LayerCheckList: TList;
|
|
Layer: Tlayer;
|
|
fLNbr: integer;
|
|
|
|
Procedure CheckFigureLayer(aFigure:TFigure);
|
|
var i: Integer;
|
|
begin
|
|
for i := 0 to GCadForm.PCad.LayerCount - 1 do
|
|
begin
|
|
Layer := TLayer(GCadForm.PCad.Layers[i]);
|
|
if Layer.IsDxf then
|
|
begin
|
|
if (aFigure.LayerHandle = LongInt(Layer)) then
|
|
begin
|
|
DxfLayersList.Remove(Layer);
|
|
break;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
begin
|
|
try
|
|
if Assigned(GCadForm) then
|
|
begin
|
|
DxfLayersList := TList.Create;
|
|
for i := 0 to GCadForm.PCad.LayerCount - 1 do
|
|
begin
|
|
if TLayer(GCadForm.PCad.Layers[i]).IsDxf then
|
|
DxfLayersList.Add(TLayer(GCadForm.PCad.Layers[i]));
|
|
end;
|
|
end
|
|
else
|
|
exit;
|
|
|
|
if DxfLayersList.Count > 0 then
|
|
begin
|
|
LayerCheckList := TList.Create;
|
|
for i := 0 to GCadForm.PCad.Figures.Count - 1 do
|
|
CheckFigureLayer(TFigure(GCadForm.PCad.Figures[i]));
|
|
end;
|
|
|
|
if DxfLayersList.Count > 0 then
|
|
begin
|
|
for i := 0 to DxfLayersList.Count - 1 do
|
|
begin
|
|
Layer := TLayer(DxfLayersList[i]);
|
|
if CheckCanDelLayer(Layer) then // åñëè íà ñëîå íåò ôèãóð, êîòîðûå ïðèíàäëåæàò êàêèì-íèáóäü ãðóïïîâûì ôèãóðàì
|
|
// ñ äðóãèõ ñëîåâ, òî ìîæíî è óäàëèòü
|
|
begin
|
|
fLNbr := GCadForm.PCad.GetLayerNbr(Layer);
|
|
if fLNbr > 0 then
|
|
GCadForm.PCad.DeleteLayerWithNbr(fLNbr);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
DxfLayersList.Free;
|
|
UpdateLayersList;
|
|
if not GProjectChanged then
|
|
SetProjectChanged(True);
|
|
except
|
|
on E: Exception do AddExceptionToLogEx('TF_LayersDialog.DeleteEmptySubstrateLayers: ', E.Message);
|
|
end;
|
|
end;
|
|
//
|
|
|
|
procedure TF_LayersDialog.cbGasNetworkClick(Sender: TObject);
|
|
begin
|
|
UpdateNetworksOptions;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.cbShowCableChannelsOnlyClick(Sender: TObject);
|
|
var
|
|
i: Integer;
|
|
CurLayer: TLayer;
|
|
LayerItem: TListItem;
|
|
ListSettings: TListSettingRecord;
|
|
ListParams: TListParams;
|
|
begin
|
|
try
|
|
if cbShowCableChannelsOnly.Checked then
|
|
begin
|
|
for i := 3 to 6 do
|
|
begin
|
|
CurLayer := TLayer(TF_CAD(FCADForm).PCad.Layers[i]);
|
|
LayerItem := FinditemByLayer(i, CurLayer);
|
|
// LayerItem := lvLayersList.Items[i - 1];
|
|
if CurLayer.visible = seen then
|
|
listGrayed[i - 1] := 'seen';
|
|
if CurLayer.visible = grayed then
|
|
listGrayed[i - 1] := 'grayed';
|
|
if CurLayer.visible = lost then
|
|
listGrayed[i - 1] := 'lost';
|
|
|
|
CurLayer.visible := lost;
|
|
LayerItem.SubItemImages[1] := -1;
|
|
LayerItem.SubItemImages[0] := -1;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
for i := 3 to 6 do
|
|
begin
|
|
CurLayer := Tlayer(TF_CAD(FCADForm).PCad.Layers[i]);
|
|
LayerItem := FinditemByLayer(i, CurLayer);
|
|
// LayerItem := lvLayersList.Items[i - 1];
|
|
if listGrayed[i - 1] = 'seen' then
|
|
begin
|
|
CurLayer.visible := seen;
|
|
LayerItem.SubItemImages[0] := 136;
|
|
LayerItem.SubItemImages[1] := -1;
|
|
end;
|
|
if listGrayed[i - 1] = 'grayed' then
|
|
begin
|
|
CurLayer.visible := grayed;
|
|
LayerItem.SubItemImages[0] := 136;
|
|
LayerItem.SubItemImages[1] := 137;
|
|
end;
|
|
if listGrayed[i - 1] = 'lost' then
|
|
begin
|
|
CurLayer.visible := lost;
|
|
LayerItem.SubItemImages[0] := -1;
|
|
LayerItem.SubItemImages[1] := -1;
|
|
end
|
|
|
|
end;
|
|
end;
|
|
// çàïèñàòü â íàñòðîéêè ëèñòà
|
|
ListParams := GetListParams(TF_CAD(FCADForm).FCADListID);
|
|
ListSettings := ListParams.Settings;
|
|
TF_CAD(FCADForm).FShowLinesCaptions := cbShowCableChannelsOnly.Checked;
|
|
ListSettings.ShowLineObjectCaption := cbShowCableChannelsOnly.Checked;
|
|
TF_CAD(FCADForm).FShowConnectorsCaptions := cbShowCableChannelsOnly.Checked;
|
|
ListSettings.ShowConnObjectCaption := cbShowCableChannelsOnly.Checked;
|
|
TF_CAD(FCADForm).FShowLinesNotes := cbShowCableChannelsOnly.Checked;
|
|
ListSettings.ShowLineObjectNote := cbShowCableChannelsOnly.Checked;
|
|
TF_CAD(FCADForm).FShowConnectorsNotes := cbShowCableChannelsOnly.Checked;
|
|
ListSettings.ShowConnObjectNote := cbShowCableChannelsOnly.Checked;
|
|
ListParams.Settings := ListSettings;
|
|
SaveListParams(TF_CAD(FCADForm).FCADListID, ListParams, True, False);
|
|
// âêëþ÷èòü/âûêëþ÷èòü îòîáðàæåíèå ïëàíà êàáåëüíûõ êàíàëîâ
|
|
if cbShowCableChannelsOnly.Checked then
|
|
begin
|
|
TF_CAD(FCADForm).FShowCableChannelsOnly := True;
|
|
end
|
|
else
|
|
begin
|
|
TF_CAD(FCADForm).FShowCableChannelsOnly := False;
|
|
end;
|
|
TF_CAD(FCADForm).Pcad.DrawFigures;
|
|
RefreshCAD_T(TF_CAD(FCADForm).PCad);
|
|
except
|
|
on E: Exception do AddExceptionToLogEx('TF_LayersDialog.cbShowCableChannelsOnlyClick', E.Message);
|
|
end;
|
|
end;
|
|
|
|
function TF_LayersDialog.FinditemByLayer(aLayerIdx: Integer; aLayer: TLayer): TListItem;
|
|
var
|
|
i: integer;
|
|
Item: TListItem;
|
|
begin
|
|
try
|
|
Result := nil;
|
|
//21.08.2012 - ïîèñêå ÷åðåç ìàññèâ ñîîòâåòñòâèé ïî èíäåêñó
|
|
if (aLayerIdx > -1) and (aLayerIdx < FLayersListItems.Count) then
|
|
if FLayersListItems[aLayerIdx] <> nil then
|
|
if TListItem(FLayersListItems[aLayerIdx]).Data = aLayer then
|
|
Result := TListItem(FLayersListItems[aLayerIdx]);
|
|
|
|
if Result = nil then
|
|
for i := 0 to lvLayersList.Items.Count - 1 do
|
|
begin
|
|
Item := TListItem(lvLayersList.Items[i]);
|
|
if Item.Data = aLayer then
|
|
begin
|
|
Result := Item;
|
|
Break; //// BREAK ////
|
|
end;
|
|
end;
|
|
except
|
|
on E: Exception do AddExceptionToLogEx('TF_LayersDialog.FinditemByLayer', E.Message);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.FormDestroy(Sender: TObject);
|
|
begin
|
|
FLayersListItems.Free;
|
|
FIsManualGrayed.Free;
|
|
end;
|
|
|
|
procedure TF_LayersDialog.tbGrayedChange(Sender: TObject);
|
|
begin
|
|
//SetGrayedColor(GrayedColors[TRzTrackBar(Sender).Position], Sender);
|
|
RestartTimer(TimerTBGrayed);
|
|
end;
|
|
|
|
procedure TF_LayersDialog.TimerTBGrayedTimer(Sender: TObject);
|
|
begin
|
|
TTimer(Sender).Enabled := false;
|
|
//SetGrayedColor(GrayedColors[tbGrayed.Position], tbGrayed);
|
|
SetGrayedColor(GrayedColors[Length(GrayedColors)-1-tbGrayed.Position], tbGrayed);
|
|
end;
|
|
|
|
procedure TF_LayersDialog.btSetDefGrayedColorClick(Sender: TObject);
|
|
begin
|
|
SetGrayedColor(DefGrayedColor, Sender);
|
|
end;
|
|
|
|
procedure TF_LayersDialog.tbGrayedDrawTick(TrackBar: TRzTrackBar;
|
|
Canvas: TCanvas; Location: TPoint; Index: Integer);
|
|
var
|
|
W, Degree : Integer;
|
|
Txt: String;
|
|
begin
|
|
{//Degree := Index;
|
|
Degree := Trunc(Index / tbGrayed.Max * 100);
|
|
if ( Degree mod 10 ) = 0 then
|
|
begin
|
|
Canvas.Brush.Style := bsClear;
|
|
Canvas.Font.Name := 'Small Fonts';
|
|
Canvas.Font.Size := 7;
|
|
Canvas.Font.Style := [];
|
|
W := Canvas.TextWidth( IntToStr( Degree ) );
|
|
Canvas.TextOut( Location.X - (W div 2), 1, IntToStr( Degree )+'%' );
|
|
end;}
|
|
|
|
Txt := '';
|
|
if Index = 0 then
|
|
Txt := '0';
|
|
if Index = tbGrayed.Max then
|
|
Txt := '100';
|
|
if Txt <> '' then
|
|
begin
|
|
Canvas.Brush.Style := bsClear;
|
|
Canvas.Font.Name := 'Small Fonts';
|
|
Canvas.Font.Size := 7;
|
|
Canvas.Font.Style := [];
|
|
W := Canvas.TextWidth(Txt);
|
|
Canvas.TextOut( Location.X - (W div 2), 1, Txt );
|
|
end;
|
|
|
|
if GrayedColors[Length(GrayedColors)-1-Index] = DefGrayedColor then
|
|
begin
|
|
Canvas.MoveTo(Location.X, Location.Y-3);
|
|
Canvas.LineTo(Location.X, Location.Y+10);
|
|
end;
|
|
end;
|
|
|
|
end.
|