private void txtCodigoLeitor_Leave(object sender, EventArgs e) { if (txtCodigoLeitor.Text == "") // verifica se o campo "txtCodigoLeitor" está vazio { MessageBox.Show("Digite um código válido!", "Código inv" + "álido", MessageBoxButtons.OK, MessageBoxIcon.Error); // mostra um erro } else // se houver algo { var procurado = new Leitor(txtCodigoLeitor.Text); // cria um objeto leitor com o codigo passado int ondeAchou = 0; if (!osLeitores.Existe(procurado, ref ondeAchou)) // se não entrontou o leitor { MessageBox.Show("Leitor não encontrado"); txtNomeLeitor.Clear(); cbLivro.Enabled = false; } else // encontrou o código procurado na posição ondeAchou { osLeitores.PosicaoAtual = ondeAchou; txtNomeLeitor.Text = osLeitores[osLeitores.PosicaoAtual].NomeLeitor.Trim(); // mostra o nome do leitor com base no código passado cbLivro.Enabled = true; cbLivro.Items.Clear(); // percorre e coloca os livros em cada item do ComboBox "cbLivro" for (int i = 0; i < osLivros.Tamanho; i++) { cbLivro.Items.Add(osLivros[i].TituloLivro.Trim()); } } } }
private void AtualizarTela() { if (!osLivros.EstaVazio) { int indice = osLivros.PosicaoAtual; txtCodigoLivro.Text = osLivros[indice].CodigoLivro + ""; txtTituloLivro.Text = osLivros[indice].TituloLivro; (grbTipoLivro.Controls[osLivros[indice].TipoLivro] as RadioButton).Checked = true; txtLeitorComLivro.Text = "000000"; txtDataDevolucao.Text = ""; txtNomeLeitor.Text = ""; if (osLivros[indice].CodigoLeitorComLivro != "000000") // livro emprestado? { int ondeLeitor = 0; var leitorProc = new Leitor(osLivros[indice].CodigoLeitorComLivro); if (osLeitores.Existe(leitorProc, ref ondeLeitor)) { txtLeitorComLivro.Text = osLivros[indice].CodigoLeitorComLivro; txtNomeLeitor.Text = osLeitores[ondeLeitor].NomeLeitor; txtDataDevolucao.Text = osLivros[indice].DataDevolucao.ToShortDateString(); } } TestarBotoes(); stlbMensagem.Text = "Registro " + (osLivros.PosicaoAtual + 1) + "/" + osLivros.Tamanho; } }
private void btnSalvar_Click(object sender, EventArgs e) { if (osLeitores.SituacaoAtual == Situacao.incluindo) // está no modo de inclusão { var novoDado = new Leitor(txtCodigoLeitor.Text, txtNomeLeitor.Text, txtEndereco.Text, 0, // --> 0 é o número de livros emprestados new string[5]); // vetor com 5 códigos de livro vazios osLeitores.Incluir(novoDado, ondeIncluir); // para mudar o registro com o qual trabalhamos no momento osLeitores.PosicaoAtual = ondeIncluir; AtualizarTela(); osLeitores.SituacaoAtual = Situacao.navegando; // termina o modo de inclusão } else // verificar se está editando if (osLeitores.SituacaoAtual == Situacao.editando) { osLeitores[osLeitores.PosicaoAtual] = new Leitor( osLeitores[osLeitores.PosicaoAtual].CodigoLeitor, txtNomeLeitor.Text, txtEndereco.Text, osLeitores[osLeitores.PosicaoAtual].QuantosLivrosComLeitor, osLeitores[osLeitores.PosicaoAtual].CodigoLivroComLeitor ); osLeitores.SituacaoAtual = Situacao.navegando; txtCodigoLeitor.ReadOnly = false; AtualizarTela(); } btnSalvar.Enabled = false; }
private void btnSalvar_Click(object sender, EventArgs e) // click do botão salvar { if (osLeitores.SituacaoAtual == Situacao.incluindo) // está no modo de inclusão { var novoDado = new Leitor(txtCodigoLeitor.Text, // instanciamos um objeto da classe Leitor com os campos passados como paramêtro txtNomeLeitor.Text, txtEndereco.Text, 0, // --> 0 é o número de livros emprestados new string[5]); // vetor com 5 códigos de livro vazios osLeitores.Incluir(novoDado, ondeIncluir); // incluímos o novo leitor // para mudar o registro com o qual trabalhamos no momento osLeitores.PosicaoAtual = ondeIncluir; // alteramos a posição atual para o índice de onde o dado foi incluido AtualizarTela(); // atualizamos a tela mostrando o registro incluído osLeitores.SituacaoAtual = Situacao.navegando; // termina o modo de inclusão } else // verificar se está editando if (osLeitores.SituacaoAtual == Situacao.editando) // se for uma edição { osLeitores[osLeitores.PosicaoAtual] = // alteramos o registro de leitores da posição atual ( a que está sendo exibida na tela ), new Leitor( // onde os novas informações serão as que o usuário digitar nos campos osLeitores[osLeitores.PosicaoAtual].CodigoLeitor, // o código não poderá ser alterado txtNomeLeitor.Text, txtEndereco.Text, osLeitores[osLeitores.PosicaoAtual].QuantosLivrosComLeitor, // a quantidade de livros com o Leitor, bem como os respectivos códigos osLeitores[osLeitores.PosicaoAtual].CodigoLivroComLeitor // não poderão ser alterados ); osLeitores.SituacaoAtual = Situacao.navegando; // voltamos para a situação original txtCodigoLeitor.ReadOnly = false; // deixamos o código do leitor habilitado AtualizarTela(); // atualizamos a tela para o novo registro editado } btnSalvar.Enabled = false; // desabilitamos o botão salvar }
void ExibirNoCBX(Leitor qualLeitor) { for (int i = 0; i < qualLeitor.QuantosLivrosComLeitor; i++) // enquanto índice é menor que a quantidade de livros com o leitor { Livro livroVez = new Livro(qualLeitor.CodigoLivroComLeitor[i]); // instanciamos a variável livroVez passando o CodigoLivroLeitor como parâmetor int onde = -1; if (osLivros.Existe(livroVez, ref onde)) // se o livro procurado ( livroVez ) existe { cbxLivros.Items.Add(osLivros[onde].TituloLivro); // exibimos o título do livro no comboBox } } }
private void txtCodLeitor_Leave(object sender, EventArgs e) // ao sair do campodo código do leitor { Leitor qualLeitor = new Leitor(txtCodLeitor.Text); int ondeLeitor = -1; if (!osLeitores.Existe(qualLeitor, ref ondeLeitor)) // se NÃO existe o leitor com o referido código { MessageBox.Show("O leitor não está cadastrado!"); // alertamos o leitor LimparFocar(txtCodLeitor); // limpamos e focamos o campo do código do leitor } else // se existe o leitor { oLeitor = osLeitores[ondeLeitor]; // atríbuimos o leitor desejado à varíavel oLeitor HabilitarBtn(); // tentamos habilitar o botão } }
private void AtualizarTela() { if (!osLivros.EstaVazio) // verifica se não está vazio { int indice = osLivros.PosicaoAtual; // recebe a posição atual do vetor txtCodigoLivro.Text = osLivros[indice].CodigoLivro + ""; txtTituloLivro.Text = osLivros[indice].TituloLivro; dgvTipoLivro.ClearSelection(); osTipos.PosicaoAtual = osLivros[indice].TipoLivro - 1; for (int i = 0; i < dgvTipoLivro.RowCount; i++) // percorre o data gried view { if (int.Parse(dgvTipoLivro.Rows[i].Cells[0].Value.ToString()) == osTipos[osTipos.PosicaoAtual].CodigoTipo) // verifica se o tipo do // livro é igual ao tipo // da posição atual no // data gried view { dgvTipoLivro.Rows[i].Selected = true; // seleciona o tipo (coloca e azul) dgvTipoLivro.CurrentCell = dgvTipoLivro.Rows[i].Cells[0]; dgvTipoLivro.BeginEdit(true); dgvTipoLivro.EndEdit(); } } // zera os textbox do groupbox2 txtLeitorComLivro.Text = "000000"; txtDataDevolucao.Text = ""; txtNomeLeitor.Text = ""; if (osLivros[indice].CodigoLeitorComLivro != "000000") // livro emprestado? { int ondeLeitor = 0; var leitorProc = new Leitor(osLivros[indice].CodigoLeitorComLivro); // cria um leitor com o código "CodigoLeitorComLivro" if (osLeitores.Existe(leitorProc, ref ondeLeitor)) // verifica se esse leitor existe { // mostra os dados do leitor nos textbox's do groupbox2 txtLeitorComLivro.Text = osLivros[indice].CodigoLeitorComLivro; txtNomeLeitor.Text = osLeitores[ondeLeitor].NomeLeitor; txtDataDevolucao.Text = osLivros[indice].DataDevolucao.ToShortDateString(); } } TestarBotoes(); // atualiza o estado dos botões stlbMensagem.Text = "Registro " + (osLivros.PosicaoAtual + 1) + "/" + osLivros.Tamanho; } }
private void txtMatricula_Leave(object sender, EventArgs e) // ao sair do campo "txtCodigoLeitor" { if (txtCodigoLeitor.Text == "") { MessageBox.Show("Digite um código válido!"); } else { var procurado = new Leitor(txtCodigoLeitor.Text); switch (osLeitores.SituacaoAtual) // escolhe a operação de acordo com o modo de navegação { case Situacao.incluindo: // INCLUINDO if (osLeitores.Existe(procurado, ref ondeIncluir)) // se já existe o código { MessageBox.Show("Código repetido; inclusão cancelada."); osLeitores.SituacaoAtual = Situacao.navegando; // cancela a inclusão e retorna a navegação AtualizarTela(); // restaura o registro visível anteriormente } else // o código ainda não existe no vetor dados { txtNomeLeitor.Focus(); stlbMensagem.Text = "Digite os demais dados. Após isso pressione [Salvar]"; } break; case Situacao.pesquisando: // PESQUISANDO int ondeAchou = 0; if (!osLeitores.Existe(procurado, ref ondeAchou)) // se não achou o codigo procurado { MessageBox.Show("Código não foi cadastrado ainda."); AtualizarTela(); // atualiza a tela e colocar na primeira posição osLeitores.SituacaoAtual = Situacao.navegando; // volta para o modo de navegação } else // encontrou o código procurado na posição ondeAchou { // para mudar o registro com o qual trabalhamos no momento osLeitores.PosicaoAtual = ondeAchou; AtualizarTela(); osLeitores.SituacaoAtual = Situacao.navegando; // volta para o modo de navegação } break; } } }
private void txtMatricula_Leave(object sender, EventArgs e) { if (txtCodigoLeitor.Text == "") { MessageBox.Show("Digite um código válido!"); } else { var procurado = new Leitor(txtCodigoLeitor.Text); switch (osLeitores.SituacaoAtual) { case Situacao.incluindo: if (osLeitores.Existe(procurado, ref ondeIncluir)) // se já existe o código { MessageBox.Show("Código repetido; inclusão cancelada."); osLeitores.SituacaoAtual = Situacao.navegando; AtualizarTela(); // restaura o registro visível anteriormente } else // o código ainda não existe no vetor dados { txtNomeLeitor.Focus(); stlbMensagem.Text = "Digite os demais dados. Após isso pressione [Salvar]"; } break; case Situacao.pesquisando: int ondeAchou = 0; if (!osLeitores.Existe(procurado, ref ondeAchou)) { MessageBox.Show("Código não foi cadastrado ainda."); AtualizarTela(); osLeitores.SituacaoAtual = Situacao.navegando; } else // encontrou o código procurado na posição ondeAchou { osLeitores.PosicaoAtual = ondeAchou; AtualizarTela(); osLeitores.SituacaoAtual = Situacao.navegando; } break; } } }
private void txtMatricula_Leave(object sender, EventArgs e) // evento disparado ao sair do campo da digitação do código do leitor { if (txtCodigoLeitor.Text == "") // se o campo está vazio { MessageBox.Show("Digite um código válido!"); // alertamos o usuário } else // se não está vazio { var procurado = new Leitor(txtCodigoLeitor.Text); // instanciamos um objeto da classe Leitor passando o código digitado como parâmetro switch (osLeitores.SituacaoAtual) // prosseguimos diferentemente para cada situação, por isso o uso do switch { case Situacao.incluindo: // se for uma inclusão if (osLeitores.Existe(procurado, ref ondeIncluir)) // se já existe o código { MessageBox.Show("Código repetido; inclusão cancelada."); // alertamos o usuário osLeitores.SituacaoAtual = Situacao.navegando; // voltamos para a situação normal ( navegando ) AtualizarTela(); // restaura o registro visível anteriormente } else // o código ainda não existe no vetor dados { txtNomeLeitor.Focus(); // focamos no outro campo, o de nome stlbMensagem.Text = "Digite os demais dados. Após isso pressione [Salvar]"; // alteramos a mensagem para o usuário } break; // saímos do switch case Situacao.pesquisando: // se for uma pesquisa int ondeAchou = 0; // variável inteira para alterar a posição do vetordados futuramente if (!osLeitores.Existe(procurado, ref ondeAchou)) // se o código digitado não existe { MessageBox.Show("Código não foi cadastrado ainda."); // alertamos o usuário AtualizarTela(); // atualizamos a tela osLeitores.SituacaoAtual = Situacao.navegando; // voltamos para a situação normal ( navegando ) } else // encontrou o código procurado na posição ondeAchou { osLeitores.PosicaoAtual = ondeAchou; // alteramos a posição atual para o indíce de onde o código encontrado está AtualizarTela(); // atualizamos a tela osLeitores.SituacaoAtual = Situacao.navegando; // voltamos para a situação normal ( navegando ) } break; // saímos do switch } } }
private void AtualizarTela() // função que atualiza a tela e exibe os campos para o usuário { if (!osLivros.EstaVazio) // se o vetor de livros NÃO está vazio { int indice = osLivros.PosicaoAtual; // atribuímos à índice o valor da PosiçãoAtual (que está exibida na tela) txtCodigoLivro.Text = osLivros[indice].CodigoLivro + ""; // alteramos o campo de código para o código do livro da posição atual txtTituloLivro.Text = osLivros[indice].TituloLivro; // e o mesmo com o título do livro ^^ bool achouTipo = false; dgvTipos.ClearSelection(); // limpamos a seleção do datagridview for (int i = 0; i < dgvTipos.RowCount && !achouTipo; i++) // enquanto o 'i' for menor que a quantidade de colunas do datagridview, e o tipo não for encontrado { if (int.Parse(dgvTipos.Rows[i].Cells[0].Value.ToString()) == osLivros[indice].TipoLivro) // se o valor do código na coluna 'i' for igual ao código do livro da posição atual { dgvTipos.Rows[i].Selected = true; // selecionamos a coluna do tipo do livro achouTipo = true; // deixamos a variàvel booleana achouTipo igual a verdadeira, saindo do 'for' } } txtLeitorComLivro.Text = "000000"; // alteramos o código do leitor que está com o livro para 000000, que é o padrão, se o livro não estiver emprestado txtDataDevolucao.Text = ""; // também mudamos a data de devolução para vazia txtNomeLeitor.Text = ""; // e o mesmo com o nome do leitor if (osLivros[indice].CodigoLeitorComLivro != "000000") // se o livro exibido estiver emprestado { int ondeLeitor = 0; // onde encontraremos o leitor futuramente var leitorProc = new Leitor(osLivros[indice].CodigoLeitorComLivro); // instanciamos o objeto do leitor procurado passando o seu código como parâmetro if (osLeitores.Existe(leitorProc, ref ondeLeitor)) // procuramos o leitor { txtLeitorComLivro.Text = osLivros[indice].CodigoLeitorComLivro; // preenchemos o campo leitor com livro txtNomeLeitor.Text = osLeitores[ondeLeitor].NomeLeitor; // preenchemos o campo de nome do leitor como o nome do leitor encontrado txtDataDevolucao.Text = osLivros[indice].DataDevolucao.ToShortDateString(); // preenchemos a data de devolução } } TestarBotoes(); // verificamos a validade dos botões stlbMensagem.Text = // alteramos a mensagem exibida para o usuário "Registro " + (osLivros.PosicaoAtual + 1) + "/" + osLivros.Tamanho; } }
private void AtualizarTela() { if (!osLeitores.EstaVazio) // verifica se não está vazio { Leitor oLeitor = osLeitores[osLeitores.PosicaoAtual]; // recebe o leitor da posição atual txtCodigoLeitor.Text = (oLeitor.CodigoLeitor + "").Trim(); // escreve o leitor txtNomeLeitor.Text = oLeitor.NomeLeitor.Trim(); // escreve o livro txtEndereco.Text = oLeitor.EnderecoLeitor.Trim(); // escreve o endereço dgvLivros.RowCount = oLeitor.QuantosLivrosComLeitor + 1; // adiciona o número de linhas necessárias no data gried view for (int umLivro = 0; umLivro < oLeitor.QuantosLivrosComLeitor; umLivro++) // percorre os livros com o leitor { int ondeLivro = -1; var livroProcurado = new Livro(oLeitor.CodigoLivroComLeitor[umLivro]); // recebe o livro com o leitor if (osLivros.Existe(livroProcurado, ref ondeLivro)) // verifica se o livro porcurado existe no vetor livros { // escreve os dados do livro no Data Grid View Livro oLivro = osLivros[ondeLivro]; dgvLivros.Rows[umLivro].Cells[0].Value = oLivro.CodigoLivro; dgvLivros.Rows[umLivro].Cells[1].Value = oLivro.TituloLivro; dgvLivros.Rows[umLivro].Cells[2].Value = oLivro.DataDevolucao.ToShortDateString(); if (oLivro.DataDevolucao < DateTime.Now.Date) // verifica se está atrasado { dgvLivros.Rows[umLivro].Cells[3].Value = "S"; } else { dgvLivros.Rows[umLivro].Cells[3].Value = "N"; } } } TestarBotoes(); // atualiza o estado dos botões stlbMensagem.Text = "Registro " + (osLeitores.PosicaoAtual + 1) + "/" + osLeitores.Tamanho; } }
private void AtualizarTela() { if (!osLeitores.EstaVazio) { Leitor oLeitor = osLeitores[osLeitores.PosicaoAtual]; txtCodigoLeitor.Text = oLeitor.CodigoLeitor + ""; txtNomeLeitor.Text = oLeitor.NomeLeitor; txtEndereco.Text = oLeitor.EnderecoLeitor; dgvLivros.RowCount = oLeitor.QuantosLivrosComLeitor + 1; for (int umLivro = 0; umLivro < oLeitor.QuantosLivrosComLeitor; umLivro++) { int ondeLivro = -1; var livroProcurado = new Livro(oLeitor.CodigoLivroComLeitor[umLivro]); if (osLivros.Existe(livroProcurado, ref ondeLivro)) { Livro oLivro = osLivros[ondeLivro]; dgvLivros.Rows[umLivro].Cells[0].Value = oLivro.CodigoLivro; dgvLivros.Rows[umLivro].Cells[1].Value = oLivro.TituloLivro; dgvLivros.Rows[umLivro].Cells[2].Value = oLivro.DataDevolucao.ToShortDateString(); if (oLivro.DataDevolucao < DateTime.Now.Date) { dgvLivros.Rows[umLivro].Cells[3].Value = "S"; } else { dgvLivros.Rows[umLivro].Cells[3].Value = "N"; } } } TestarBotoes(); stlbMensagem.Text = "Registro " + (osLeitores.PosicaoAtual + 1) + "/" + osLeitores.Tamanho; } }
private void AtualizarTela() // função que atualiza a tela e exibe os campos para o usuário { if (!osLeitores.EstaVazio) // se o vetor de leitores NÃO está vazio { Leitor oLeitor = osLeitores[osLeitores.PosicaoAtual]; // objeto 'oLeitor' é igual o valor da posição atual da PosiçãoAtual de osLeitores txtCodigoLeitor.Text = oLeitor.CodigoLeitor + ""; // alteramos o campo de código do leitor para o seu respectivo código txtNomeLeitor.Text = oLeitor.NomeLeitor; // alteramos também os campos de nome txtEndereco.Text = oLeitor.EnderecoLeitor; // &endereço dgvLivros.RowCount = oLeitor.QuantosLivrosComLeitor + 1; // a quantidade de colunas do DataGridView é igual a quantidade de livros que o leitor tem emprestado for (int umLivro = 0; umLivro < oLeitor.QuantosLivrosComLeitor; umLivro++) // enquanto o índice for menor que a quantidade de livros com o leitor { int ondeLivro = -1; // índice de onde encontraremos o livro var livroProcurado = new Livro(oLeitor.CodigoLivroComLeitor[umLivro]); // instanciamos o objeto livroProcurado como um novo Livro com seu código passado como parâmetro if (osLivros.Existe(livroProcurado, ref ondeLivro)) // se o livro procurado existe { Livro oLivro = osLivros[ondeLivro]; // a variável oLivro fica com o valor do livro encontrado (que está na posição 'ondeLivro') dgvLivros.Rows[umLivro].Cells[0].Value = oLivro.CodigoLivro; // mudamos a primeira célula na coluna do indíce com o respectivo código dgvLivros.Rows[umLivro].Cells[1].Value = oLivro.TituloLivro; // título dgvLivros.Rows[umLivro].Cells[2].Value = oLivro.DataDevolucao.ToShortDateString(); // data de devolução if (oLivro.DataDevolucao < DateTime.Now.Date) // se a data de devolução for menor que a data atual { dgvLivros.Rows[umLivro].Cells[3].Value = "S"; // a devolução do livro está atrasada, e escrevemos 'S' no campo de atraso } else // se a data de devolução for maior que a data atual { dgvLivros.Rows[umLivro].Cells[3].Value = "N"; // a devolução não está atrasad, e escrevemos 'N' no campo de atraso } } } TestarBotoes(); // chamamos a função que verifica a validade dos botões stlbMensagem.Text = // mudamos a mensagem exibida "Registro " + (osLeitores.PosicaoAtual + 1) + "/" + osLeitores.Tamanho; } }
private void txtCodLeitor_Leave(object sender, EventArgs e) { Leitor proc = new Leitor(txtCodLeitor.Text); // váriavel do tipo leitor com o código digitado passado como parâmetro int onde = -1; if (osLeitores.Existe(proc, ref onde)) // se o leitor procurado existe { if (osLeitores[onde].QuantosLivrosComLeitor != 0) // se o leitor tem algum livro emprestado { oLeitor = osLeitores[onde]; // atribuímos a variável oLeitor o valor do leitor encontrado ExibirNoCBX(oLeitor); // exibimos os livros emprestados a este leitor no combobox } else //se o leitor não tem nenhum livro emprestado { MessageBox.Show("O leitor digitado não tem nenhum livro!"); // notificamos o usuário LimparFocar(txtCodLeitor); // limpamos e focamos o campo do código do leitor } } else // se o código do leitor não existe no arquivo texto { MessageBox.Show("O código do leitor não existe"); // notificamos o usuário LimparFocar(txtCodLeitor); // limpamos e focamos o campo do código do leitor } }