Painel HB

Roteiro do detalhe:

SVersão = 2;
Descrição do Objeto = @ MCS_STRING6;
 
função ActHeader {
  NParte = 1;
  Público (
     // Opções - comprimento e largura externa da placa
     L,COMPRIMENTO,
     L, LARGURA,
     // Projetar placas de carga e peso
     P, @MCS_STRING9,
     massa,MASSA
  );
  Protegido (seted, obozn, H);
  Mutável ();
  OnDlgBeforeSelectParam = 1;
  MostrarQuandoSelPnt = 1;
  ContornoOnLine = 1;
};
 
função OnInitialization {
  LoadInCache (obozn, L, W, H, massa, P);
  se (seted == ValorDesconhecido) {
     definido = 1;
     rZOorder = 100;
     // Define os valores iniciais dos parâmetros e execução
     SelectInCache (" kFirst ", " L ", " ~ ", 2700, " W ", " ~ ", 1190);
     strDesignName = " Implementação 1 ";
  };
};
 
função SetGripPoint {
  NGrip = 2;
  Duas alças // - no ponto de inserção e com a extremidade oposta
  // Painel
  pntGrip0 = pntOrigin;
  pntGrip1 = pntOrigin + L * vecDirection;
};
 
função OnMoveGripPoint {
  // Ao editar, os manipuladores apresentam o seguinte comportamento:
  // Mova o objeto inteiro ao arrastar sobre ele
  // Primeiro identificador. E estique o comprimento e altere o vetor
  // Direção ao esticar uma segunda alça
  se (NMovingGrip == 1) {
     // Variáveis ​​intermediárias para definir a geometria
     rW = W;
     rP = P;
     // Comprimento relativo
     rL = vecLen (pntGrip0 - pntGrip1) / rScl;
     // A nova direção do vetor é inserida
     vecDirection = pntGrip1 - pntGrip0;
    
     CarregarEmCache (P, W, L);
     // Selecione a nova placa de configurações.
     SelectInCache ("kFirst", "P", "~", rP, "W", " =", rW, "L", "~", rL);
  } Outro {
     // Se você editar o identificador para mover o ponto 0
     // Inserir um objeto
     pntOrigin = pntGrip0;
  };
};
 
função OnMakeParameters {
  // Placas de classificação
  strTheName = " Painel NV ";
  strTheType = " Plita ";
  strTheSubType = " Plita ";
};
 
função OnDialog {// inserir tipo de diálogo
  LoadInCache (obozn, L, W, H, massa, P);
  UniDialog (
     // Os campos de controle da tabela
     DBFLD, L, W, P,
     // O campo de referência da tabela
     DBINF, obozn, H, massa,
     // Tipos - frente, topo, esquerda
     TVIDS, lViewType, " F ", " T ", " L ",
     VER, "Vídeos");
};
 
função OnDialogChanged {
  ShowDesign (0, " Visualizar ");
};
 
// Alterações de parâmetros
função OnChangeParameters {
  // Apenas ao controlar mudanças de parâmetros
  // Selecione de uma tabela aqueles que correspondem ao novo
  // Valores
  se (novo.L! = L || novo.W! = W)
  {
     CarregarEmCache (E, W);
     SelectInCache (" kFirst ", " L ", " ~ ", novo.L, " W ", " ~ ", novo.W);
  }
  
  Manipulado = OBJ_HANDLED;
};
 
função OnSelectParam {
  // Função de seleção dinâmica de parâmetros
  rW = W;
     // Para o tipo VTOP não selecione dinamicamente
  se (lViewType == VTOP) {
     QuebrarTudo = 1;
  } Outro {
     // Para outras espécies
     // Variável selecionada rL - como
     // Abscissa a posição relativa do cursor.
     rL = abs (vecCoord: x);
     // Valores selecionados da tabela com a mesma largura,
     // Mas com um novo valor para a placa de comprimento de onda.
     SelectInCashe (" kFirst ", " W ", " = ", rW, " L ", " ~ ", rL);
  };
};
 
função BeforeConnect {
  RedefinirÚltimaConstraint();
}
 
função OnConnect
{
// Instalação automática de dependências
// Define apenas dependência paramétrica.
// Entre as placas ao longo do comprimento e da largura.
  se (rParte == 0)
  {
     if (obj.strTheType == " Plita ")
     {
        SetParamConstraint (L, obj, EXPR, " obj.L ");
        SetParamConstraint (W, obj, EXPR, " obj.W ");
        NoVectorSelect = 1;
        definido = 1;
     };
  };
}
// A placa de identificação é formada com base na caixa da mesa
// Obozn
strPartName = obozn;