private void InicializaSimbolosFixosDaLinha() { // Inicio de Linha simboloInicioLinha.setCI(CodigosInterpretaveis.INICIO_DA_LINHA); simboloInicioLinha.TabStop = true; // Fim de Linha simboloFimLinha.setCI(CodigosInterpretaveis.FIM_DA_LINHA); simboloFimLinha.TabStop = false; // Desenho de fundo da Linha simboloDesenhoFundo.setCI(CodigosInterpretaveis.LINHA_DE_FUNDO); simboloDesenhoFundo.TabStop = false; /////////////////////////////////////// // Inicio de linha simboloInicioLinha.linhaAtual = this; simboloInicioLinha.Parent = this.frmDiag; simboloInicioLinha.CreateControl(); simboloInicioLinha.BringToFront(); // Fim de linha de linha simboloFimLinha.linhaAtual = this; simboloFimLinha.Parent = this.frmDiag; simboloFimLinha.CreateControl(); simboloFimLinha.BringToFront(); InsereSimboloDireto(this.simbolos, this.simboloInicioLinha, linhaBase.simbolos); InsereSimboloDireto(this.saida, this.simboloInicioLinha, linhaBase.saida); // Desenho de fundo da linha simboloDesenhoFundo.linhaAtual = this; simboloDesenhoFundo.SendToBack(); simboloDesenhoFundo.Parent = this.frmDiag; simboloDesenhoFundo.CreateControl(); simboloDesenhoFundo.SendToBack(); /// Desabilito o desenho de fundo para evitar que um clique do mouse /// sobre partes dele faca com que a tela seja movida para o primeiro /// controle. simboloDesenhoFundo.Enabled = false; AtribuiFuncoesAosControles(); }
public bool ApagaSimbolos(ControleLivre _aSerApagado) { int _indicePosInicial = 0; int _indicePosFinal = 0; int _auxSaida = 0; List <ControleLivre> _lstCLDeletar = new List <ControleLivre>(); List <ControleLivre> _lstCL = null; List <SimboloBasico> _lstSB = null; ControleLivre _cLAMudarCI = null; if (!simbolos.Contains(_aSerApagado)) { if (!saida.Contains(_aSerApagado)) { return(false); } else { _lstCL = this.saida; _lstSB = linhaBase.saida; /// caso haja um paralelo na saida /// deleta a linha do paralelo switch (_aSerApagado.getCI()) { case CodigosInterpretaveis.PARALELO_INICIAL: case CodigosInterpretaveis.PARALELO_FINAL: case CodigosInterpretaveis.PARALELO_PROXIMO: break; default: if (this.saida.Count > 1) { _auxSaida = this.saida.IndexOf(_aSerApagado); _aSerApagado = this.saida[_auxSaida - 1]; } break; } } } else { _lstCL = this.simbolos; _lstSB = linhaBase.simbolos; } switch (_aSerApagado.getCI()) { case CodigosInterpretaveis.PARALELO_INICIAL: case CodigosInterpretaveis.PARALELO_PROXIMO: _indicePosInicial = _lstCL.IndexOf(_aSerApagado); _indicePosFinal = _lstCL.IndexOf(_aSerApagado.Aponta2proxPP); _indicePosFinal--; switch (_aSerApagado.getCI()) { case CodigosInterpretaveis.PARALELO_INICIAL: if (_aSerApagado.Aponta2proxPP.Aponta2proxPP.Aponta2PI != null) { _lstCLDeletar.Add(_aSerApagado.Aponta2proxPP.Aponta2proxPP); _indicePosFinal++; } else { _cLAMudarCI = _aSerApagado.Aponta2proxPP; } break; case CodigosInterpretaveis.PARALELO_PROXIMO: if (_aSerApagado.Aponta2proxPP.Aponta2PI != null) { if (_aSerApagado.Aponta2proxPP.Aponta2PI.Aponta2proxPP.Equals(_aSerApagado)) { _lstCLDeletar.Add(_aSerApagado.Aponta2proxPP.Aponta2PI); _indicePosFinal++; } //else //_aSerApagado.Aponta2proxPP.setCI(CodigosInterpretaveis.PARALELO_FINAL); } break; } break; case CodigosInterpretaveis.PARALELO_FINAL: _indicePosFinal = _lstCL.IndexOf(_aSerApagado); _indicePosInicial = _lstCL.IndexOf(_aSerApagado.Aponta2PI); break; default: _indicePosInicial = _lstCL.IndexOf(_aSerApagado); _indicePosFinal = _indicePosInicial; break; } /// levanta os controles a serem deletados for (int i = _indicePosInicial; i <= _indicePosFinal; i++) { _lstCLDeletar.Add(_lstCL[i]); } /// deleta um a um foreach (ControleLivre _cLADeletar in _lstCLDeletar) { ApagaSimbolo(_lstCL, _lstSB, _cLADeletar); } if (_cLAMudarCI != null) { _cLAMudarCI.setCI(CodigosInterpretaveis.PARALELO_INICIAL); } return(true); }