using CPM; using MLL; using System; using System.Drawing; using System.Windows.Forms; namespace UI { public class ParametrosPanel : FormularioModelo { // Mapeamento absoluto de todas as propriedades do ModeloParametros private LV_TEXTBOX1 txtIdParametros; private LV_TEXTBOX1 txtCodigo; private LV_TEXTBOX1 txtNomePar; private LV_TEXTBOX1 txtDescricao; private LV_TEXTBOX1 txtPx; private LV_TEXTBOX1 txtPy; private LV_TEXTBOX1 txtCampo; private CheckBox chkAtivo; public ParametrosPanel() { this.Titulo = "CADASTRO E POSICIONAMENTO DE PARAMETROS"; MontarInterfaceCompleta(); } private void MontarInterfaceCompleta() { // --- SEÇÃO 1: IDENTIFICAÇÃO E CHAVES --- content.Controls.Add(CreateSectionHeader("Identificação do Parâmetro", 20)); txtIdParametros = AddInput(content, "ID REGISTRO", 20, 55, 100, 28, true); txtCodigo = AddInput(content, "CÓDIGO INTERNO", 130, 55, 120, 28); txtNomePar = AddInput(content, "NOME DO PARÂMETRO (CHAVE)", 260, 55, 300, 28); // Status Ativo/Inativo usando o posicionamento padrão chkAtivo = new CheckBox { Text = "Parâmetro Ativo no Sistema", Location = new Point(580, 71), AutoSize = true, Font = new Font("Segoe UI", 10F, FontStyle.Bold), ForeColor = Color.FromArgb(64, 64, 64), Checked = true }; content.Controls.Add(chkAtivo); // --- SEÇÃO 2: MAPEAMENTO DE COORDENADAS E INTERFACE --- content.Controls.Add(CreateSectionHeader("Posicionamento e Mapeamento de Tela / Relatório", 115)); txtCampo = AddInput(content, "CAMPO DA TABELA / CONTROLE ALVO", 20, 150, 350, 28); txtPx = AddInput(content, "COORDENADA X (PIXELS / COLUNA)", 390, 150, 200, 28); txtPy = AddInput(content, "COORDENADA Y (PIXELS / LINHA)", 600, 150, 200, 28); // --- SEÇÃO 3: DETALHAMENTO --- content.Controls.Add(CreateSectionHeader("Documentação e Regras", 210)); txtDescricao = AddInput(content, "DESCRIÇÃO DA FUNÇÃO DO PARÂMETRO", 20, 245, 780, 28); } // --- MÉTODOS OBRIGATÓRIOS DO FORMULÁRIO MODELO --- protected override void OnNovo() { // Limpa todos os controles de texto dentro do content foreach (Control c in content.Controls) { if (c is LV_TEXTBOX1 txt && !txt.ReadOnly) { txt.Text = string.Empty; } } chkAtivo.Checked = true; txtCodigo.Focus(); } protected override void OnSalvar() { // Mapeamento absoluto e fiel de cada campo para o objeto MLL var parametro = new ModeloParametros { ID_PARAMETROS = string.IsNullOrEmpty(txtIdParametros.Text) ? 0 : Convert.ToInt32(txtIdParametros.Text), CODIGO = txtCodigo.Text, NOME_PAR = txtNomePar.Text, DESCRICAO = txtDescricao.Text, PX = txtPx.Text, PY = txtPy.Text, CAMPO = txtCampo.Text, ATIVO = chkAtivo.Checked ? "S" : "N" // Conversão limpa para persistência string do seu banco }; // Envio direto do objeto populado para as suas camadas de persistência (BLL/DAL) MessageBox.Show("Configuração de parâmetro salva com sucesso!", "LevelOS", MessageBoxButtons.OK, MessageBoxIcon.Information); } protected override void OnAlterar() { txtNomePar.Focus(); } protected override void OnExcluir() { if (MessageBox.Show("Deseja realmente excluir este parâmetro? Isso pode afetar o layout de telas ou relatórios.", "LevelOS", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { // Processa a exclusão... OnNovo(); } } protected override void OnLocalizar() { // Vincula a abertura da sua Grid de pesquisa de parâmetros } protected override void OnCancelar() { OnNovo(); } } }