Rodrigo Flores
-
Total de itens
16 -
Registro em
-
Última visita
Posts postados por Rodrigo Flores
-
-
Bom dia Rodrigo,
Olha eu tentei mas aparece um erro, parameter nome não encontrado,
Não sei se melhora se voce souber mas uso DataModule, TblAluno, DtsAluno.
Obrigado,
Micah dos Anjos
Bom dia, Micah.
Creio que esse Tbl em TblAluno, identifique que tu está utilizando um TTable.
Se a afirmação for verdadeira, tu não fez como o informado.
Na mensagem anterior, eu disse que a consulta necessita de componentes especificados no prórpio exemplo, no caso a TQuery.
Tu não vais conseguir montar uma consulta SQL em uma Table.
Tu podes até usar o Locate da table, para localizar pelo nome e/ou o Filter e Filtered para "filtrar" pelo sexo,
mas não creio que seja a melhor opção.
Se tu entende um pouco de SQL, Faça testes com a Query, se não entende, aconcelho que estude SQL, porque em sistemas grandes tu vais usar, e muito.
[]'s
-
Ola galera, eu estou desenvolvendo um simples programa no delphi e gostaria de colocar alguns privilégio ao admistrador.
Tabela
Usuario:
cod, usuario, senha, tipo --A-- administrador --B-- Usuario
Quando o usuario digitar o "Usuario" e "senha", se for do tipo --B-- usuario, o formulario "Usuario" onde adiciona e altera os usuario os botões ficrão inativo, e para o administrador tem permissão para tudo,
formularios
login
Principal
Usuario
Espero que tenham entendido
Valeu!!!!!!!!!!
Boa tarde, jedinaru.
Tu podes tentar assim:
No evento OnShow do formulário
MenuQueTuQuerDesabilitar.Enabled := NomeDaTabela.FieldByName('TIPO').AsString = A;
Faça isso para todos os botões/menus que tu quiser testar.
[]'s
-
Olá Rodrigo Flores.
Em qual evento eu armazeno o valor atual de col e row para duas variáveis para posterior recuperação?
Se armazeno no Onselectcell, quando clico com o mouse perco os valores armazenos anteriormente, isto que não estou conseguindo. Identificar em qual célula estou atualmente não é o problema. Não sei se fui claro.
Seria hipoteticamente um OnExit da Célula e não do Grid.
Grato!
Tu podes criar variáveis globais para guardar os valores.
Assim tu podes recuperar esse valor a qualquer momento no form.
Por exemplo:
private { Private declarations } Coluna_Atual, Coluna_Anterior, Linha_Atual, Linha_Anterior : Integer;
No On Create do formulário, tu zera as variáveis:procedure TForm1.FormCreate(Sender: TObject); begin Coluna_Atual := 0; Coluna_Anterior := 0; Linha_Atual := 0; Linha_Anterior := 0; end;
e no evento onclick, do StringGrid, tu altera as posições:procedure TForm1.StringGridClick(Sender: TObject); begin Coluna_Anterior := Coluna_Atual; Linha_Anterior := Linha_Atual; Coluna_Atual := StringGrid.Col; LinhaAtual := StringGrid.Row; end;
Tu podes até colocar um botão no form e testar o retorno dos dados:procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(StringGrid.Cells[Coluna_Anterior,Linha_Anterior]); end;
PS.: Deu pra perceber que eu gosto do ShowMessage, né?
hehehe
Qualquer dúvida, posta aí.
[]'s
-
Olá.
No OnExit não posso usar pois na verdade seria um clique do mouse no próprio Grid, em outra célula. Eu não estou conseguindo identificar em qual evento eu atualizo a linha, coluna e as informações, estava fazendo no OnSelectCell mas não deu certo.
Boa tarde, Manoel.
Faz no onclick do StringGrid.
procedure TForm1.StringGridClick(Sender: TObject); begin ShowMessage(StringGrid.Cells[StringGrid.Col, StringGrid.Row]); // StringGrid.Col - Coluna atual // StringGrid.Row - Linha Atual end;
[]'s
-
Olá.
Num StringGrid, se eu digitar um valor numa célula e sair da mesma através de um clique do mouse, como faço para armazenar e recuperar o valor anterior à digitação?
Grato!
Tu podes utilizar o evento OnExit do StringGrid.
Para pegar o valor da célula tu tens que saber qual célula deseja buscar,
por exemplo.
Coluna 1, linha 1
StringGrid1.Cells[1,1];
Coluna 10, linha 5
StringGrid1.Cells[10,5];
[]'s
-
Creio que não seja isso Manoel, afinal o clGray apenas pinta a fonte de cinza, ele quer o efeito "vazado" que o label fica quando o enabled está false. Como sujestão eu diria para ti colocar label no panel e controlar o enabeld deles pelo enabels do panel.Olá.Seria isto?
Panel1.Font.Color:= clgray;
Label1.Enabeld := Panel1.Enabeld; Label2.Enabeld := Panel1.Enabeld; Label3.Enabeld := Panel1.Enabeld;
Assim tu teria o efeito desejado e teria certeza que somente quando o panel estivesse com o enabled em false.
-
Bom dia,
Olha sou novo nesse campo de programação, estou terminando o meu primeiro programinha de controle de alunos. Parei agora porque estou tentando modos de fazer uma pesquisa e não consigo.
Veja bem, tenho uma tabela de alunos que tem um campo chamado 'sexo'. Então, minha idéia é pesquisar quantos alunos do sexo masculino por exemplo. Não sei como fazer, nem mesmo o que usar no form. Sei que terei que usar um Edit e alguns RadioButtons e RadioGroup, mas e quanto a parte que irá me mostrar os resultados, DbListBox, DbGrid ou o que. E o mais, quais os comandos?
Agradeço..
Micah Dos Anjos
Bom dia Micah,
Supondo que o nome de sua tabela seja ALUNO.
Inclua um Query (BDE) e um DataSource (Data Access).
Renomeie a Query para QAluno e o DataSource para DSQAluno.
No DataSource sete a propriedade DataSet para QAluno.
Coloque os seguintes componentes no seu Form:
- RadioGroup (Standard)
- Edit (Standard)
- Button (Standard)
- DBGrid (Data Controls)
- StatusBar (Win32)
No RadioGroup configure as seguintes propriedades:
- Caption: Sexo
- Items:
1ª linha - Feminino
2 ª linha - Masculino
- Name: rgSexo
Obs.: Na propriedade Columns tu podes definir quantas colunas terá teu radiogroup.
No Edit configure as seguintes propriedades:
- Name: edName
- Text : "Apague o valor que tiver aqui"
No Button configure as seguintes propriedades:
- Name: btPesquisa
- Caption: Pesquisa
*Evento OnClick: A consulta que irá dentro do onclick do botão será a seguinte:
QAluno.SQL.Clear; QAluno.SQL.Add('SELECT * FROM ALUNO'); // Recupera todos os campos da tabela para a sua pesquisa QAluno.SQL.Add('WHERE SEXO = :SEXO'); // Onde o sexo seja definido na váriavel bind QAluno.SQL.Add('AND NOME LIKE :NOME'); // e o nome seja consultado pela parte digitada QAluno.SQL.Add('ORDER BY NOME'); // ordenando a pesquisa por nome do aluno case rgSexo.ItemIndex of 0 : QAluno.ParamByName('SEXO').AsString := 'F'; 1 : QAluno.ParamByName('SEXO').AsString := 'M'; end; QAluno.ParamByName('NOME').AsString := '%' + edNome.Text; QAluno.Open;
No DBGrid configure as seguintes propriedades: - DataSource: DSQAluno * Dê 2 cliques ou clique na propriedade columns. Nessa caixa você deve colocar os campos que deseja que apareça no Grid. Eu colocarei apenas o nome: > Pressione o botão Add New (ou pressione Insert), > Clique sobre o novo campo que surgiu (0 - TColumn), > no campo FieldName escreva NOME, Aqui tu podes "brincar" com as configurações da coluna, faça alterações e testes. > Na propriedade Title, tem o Caption. Escreva: Nome > A propriedade Width seta a largura da coluna. Pode fechar a caixa e a nova coluna irá aparecer no grid. Na StatusBar configure as seguintes propriedades: - Name: Barra - Panels: > Pressione o botão Add New (ou pressione Insert), Na propriedade text digite: 'Total de registros 0' No Evento AfterOpen da QAluno digite o seguinteBarra.Panels[0].Text := 'Total de registros ' + QAluno.RecordCount; // RecordCount conta a quantidade de registros trazidos pela consulta.
Agora é só dar uma organizada.
Esse exemplo é muito básico e tu podes melhorar e muito, mas já é uma idéia.
qualquer dúvida posta aí.
[]'s
-
O DatabaseDesktop só permite autoincremento nas tabelas Paradox...
Então, seria melhor você se familiarizar com a criação/alteração de tabelas usando TSQL, no DBExplorer (vem com o Delphi também)...
Em troca de criar uma tabela no DatabaseDesktop, use uma query... exemplo:
create table ":acme:produtos.dbf"
(idproduto autoinc,
nome char(40),
unidade char(3)
);
Quanto ao código ser preenchido com zeros, ficaria por sua conta validar isso também...
Assim, se o código ficou inválido, você não deverá gravá-lo...
No evento OnClick do botão Confirmar, poderia colocar:
Begin
If CodigoEdit.Text='00000' then
Begin
CodigoEdit.SetFocus; // Focar novamente o campo Código ou outro...
Exit;
End;
{}
// * Resto da procedure para salvar o registro...
.
.
End;
Outra coisa importante é que embora você possar ter alguma dificuldade em implementar um código "auto-incremento" agora, os benefícios que isso irá trazer serão imensos... pois isso de numeração automática não poderia, nesta altura do campeonato, estar tomando o seu tempo de desenvolvimento... e a outra coisa é a definição de chave única na tabela, que também evita que você fique perdendo tempo e matutando com coisas que já têm a solução pronta, no mínimo, uns 10 anos atrás...
Ok?
* (pessoal... me ajuda aí... acho que a primeira vez que vi um campo autoinc foi com paradox quando escrevia programas em turbo-pascal lá pelo de 1994 eu acho... mas acho que o Paradox surgiu ainda nos anos 80... agora... quando surgiu o campo autoinc?)
Eu, particularmente, prefiro criar uma sequence a criar um campo auto-incremento.
Uma sequence e uma trigger pra rodá-la e pronto.
Sem muito trabalho, mas como a tabela do amigo é dbf, aí fica difícil, sem SGDB.
-
Tinha pensado em alterar o campo no banco para não permitir registro duplicados.
O código completo é esse.
Begin
QRLogin.Close;
QRLogin.Sql.clear;
QRLogin.Sql.add('select * from tab_usuarios where login =:login');
QRLogin.ParamByName('login').asstring:= DBEdit2.text;
QRLogin.Open;
If QRLogin.recordcount > 1 then
Begin
//Salvar
DBCadastros.Enabled:= False;
DBGeracao.Enabled:= False;
DBConsultas.Enabled:= False;
DBBackup.Enabled:= False;
DBRelatorios.Enabled:= False;
DBEdit1.Enabled:= False;
DBEdit2.Enabled:= False;
DBEdit3.Enabled:= False;
DBComboBox2.Enabled:= False;
DBComboBox1.Enabled:= False;
DBGridUsers.Enabled:= True;
BtAlterar.Enabled:= True;
BtNovo.Enabled:= True;
BtSalvar.Enabled:= False;
BtExcluir.Enabled:= True;
BtCancelar.Enabled:= False;
BtFechar.Enabled:= True;
Tab_Usuarios.Post;
Tab_Usuarios.Refresh;
End
Else
If QRLogin.recordcount > 0 then
ShowMessage('login já cadastrado');
DBEdit2.SetFocus;
End;
grato.
O problema está porque na edição você não especifica o código.
Faça algo mais ou menos assim:
QRLogin.Sql.clear; QRLogin.Sql.add('SELECT * FROM TAB_USUARIOS'); QRLogin.Sql.add('WHERE LOGIN = :LOGIN'); QRLogin.Sql.add('AND CODUSUARIO <> :CODUSUARIO'); QRLogin.ParamByName('LOGIN').AsInteger := Login.Text; // Deve ser informado a partir do Edit na tela de alteração QRLogin.ParamByName('CODUSUARIO').AsInteger := CodUsuario; // Deve ser recuperado da tabela que mostra os registros QRLogin.Open;
Assim, tu impede que a busca, na alteração, faça referência ao registro que está sendo editado.
[]'s
-
Olá!
Preciso de uma grande ajuda...
Tenho 5 Execicios para fazer mais não estou conseguindo!!!
alguém pode me ajudar por favor!!!
Exercicio 1
Ler dois valores numericos e apresentar a diferença do maior para o menor.
Exercicio 2
Ler um valor inteiro qualquer positivo ou negativo e apresentar o número lido sendo sempre positivo.
Exercicio 3
Ler quatro valores referentes a quatro notas escolares de um aluno e imprimir uma mensagem dizendo que o aluno foi aprovado, se o valor da média escolar for maior ou igual a 5. Se o aluno não foi aprovado, indicar uma mensagem informando esta condição. Apresentar junto com uma das mensagens o valor da médis do aluno para qualquer condição.
Exercicio 4
Ler dois valores referentes a duas notas escolares de um aluno e imprimir uma mensagem dizendo que o aluno foi aprovado, se o valor da média escolar for maior ou igual a 7, solicitar a nota de exame, somar com o valor da média e obter nova média.
Se a nova média for maior ou igual a 5, apresentar uma mensagem dizendo que o aluno foi aprovado em exame. Se o aluno não foi aprovado, indica uma mensagem informando esta condiçao.
Apresentar junto com as mensagens o valor da média do aluno para qualquer condição.
Exercicio 5
Ler três valores (variaveis A, B e C) e apresentar - los em ordem crescente.
...POR FAVOR ME AJUDE...
Jéssica, fiz os exercícios em Delphi e não nomeei os componentes.
Espero que realmente te interesse pela matéria, afinal os exercícios são para praticar e consequentemente entender a matéria
Exercício 1)
begin if StrToInt(Edit1.Text) > StrToInt(Edit2.Text) then Edit3.Text := IntToStr(StrToInt(Edit1.Text) - StrToInt(Edit2.Text)) else Edit3.Text := IntToStr(StrToInt(Edit2.Text) - StrToInt(Edit1.Text)); end;
Exercício 2)begin Edit5.Text := IntToStr(Abs(StrToInt(Edit4.Text))); end;
Exercício 3)var Media : Real; begin Media := (StrToInt(Edit6.Text) + StrToInt(Edit7.Text) + StrToInt(Edit8.Text) + StrToInt(Edit9.Text)) / 4; if Media >= 5 then Edit10.Text := 'Aprovado. Média ' + FormatFloat('0.00', Media) else Edit10.Text := 'Reprovado. Média ' + FormatFloat('0.00', Media); end;
Exercício 5)begin if Edit11.Text > Edit12.Text then if Edit11.Text > Edit13.Text then if Edit12.Text > Edit13.Text then Edit14.Text := Edit13.Text + ', ' + Edit12.Text + ', ' + Edit11.Text else Edit14.Text := Edit12.Text + ', ' + Edit13.Text + ', ' + Edit11.Text else Edit14.Text := Edit12.Text + ', ' + Edit11.Text + ', ' + Edit13.Text else if Edit12.Text > Edit13.Text then if Edit11.Text > Edit13.Text then Edit14.Text := Edit13.Text + ', ' + Edit11.Text + ', ' + Edit12.Text else Edit14.Text := Edit11.Text + ', ' + Edit13.Text + ', ' + Edit12.Text else Edit14.Text := Edit11.Text + ', ' + Edit12.Text + ', ' + Edit13.Text; end;
Não fiz o 4º exercício porque é bem parecido com o 3º e fica como um "exercício" pra ti, já que te dei uma "mãozinha".
[]'s e tenha um pouco mais de força de vontade, é para teu próprio bem.
-
Olá pessoal.
Estou utilizando o RAD 2007, e toda vez que finalizo o programa com o comando Application.Terminate, ele dá access violation.
Estou utilizando o menu do devexpress, não sei se está interferindo em alguma coisa, mas se alguém souber de algo eu agradeço.
abraços
Já tentou usar o debug?
Coloca uns BreakPoint na aplicação, onde tu acredita que pode ocorrer um erro e vai pressionando F8.
Tenta verificar o código no projeto (.dpr)
-
Ola pessoal, eu estou criando um sistema de controle de resultados de futebol, mas estou com um problema:
Coloquei duas edits no form sendo o Edit1 armazema o gol do time local e o Edit2 armazena gols das equipes visitantes.
Na rodada 1 joga Vasco x Flamengo
Na rodada 2 joga Vasco x Corinthians
Na rodada 3 joga Vasco x São Paulo
obs: A edit2 armazena os gols do Flamengo, Corinthians e São Paulo.
Criei uma label para armazenar a quantidade de gols sofridos. Mas o probela é: Não consigo fazer uma soma dos gols sofridos e nem de gols feitos. Mas na label sempre aparece apenas o gol sofrido do último jogo. Mas quero que apareça o total dos três jogos.
alguém pode ajudar
Agradeço desde já :rolleyes:
Bom dia Pablo.
Não sei se é isto que você realmente quer, mas tu podes somar e mostar no label a cada alteração do Edit ou cada vez que o cursos sair do edit.
Supondo que eu esteja correto, tu podes somar os gols sofridos e mostrar assim
procedure TForm1.GolsVisitante1Change(Sender: TObject); begin TotalGolsVisitante.Caption := IntToStr(StrtoInt(GolsVisitante1.Text) + StrtoInt(GolsVisitante2.Text) + StrtoInt(GolsVisitante3.Text)); end;
ou assimprocedure TForm1.GolsVisitante1Exit(Sender: TObject); begin TotalGolsVisitante.Caption := IntToStr(StrtoInt(GolsVisitante1.Text) + StrtoInt(GolsVisitante2.Text) + StrtoInt(GolsVisitante3.Text)); end;
Isso tu faz em cada edit.
Ou ainda tu podes utilizar um TTimer (aba System) e a cada X segundos refazer o cálculo (meio sem futuro).
[]'s
-
Bom dia,
Não vejo a necessidade de criar uma função para mostrar mensagens ao usuário, visto que o Delphi possui o Application.MessageBox, que é possível alterar o caption do form, a mensagem do corpo e os botões possuem seu caption em português (Ok, Cancela, Sim, Não), podendo ser tratado da mesma forma que os demais. Procure no Help do Delphi por MessageBox.
[]'s
-
Rodrigo Flores, em um documento no Excel, com esta situação que você postou (celulas mescladas + autofit), o autofit não funciona. Como os recursos que usamos no Delphi, são provenientes do próprio Excel, então não haverá como fazê-lo (pelo menos até o Office 2000) - o jeito será ajustar a altura da célula via código (propriedade RowHeight).Gostaria de saber se existe uma forma de ajustar o tamanho das linhas automaticamente, a partir do que existe dentro da mesma, visto que uso o WrapText para ajustar as palavras dentro das células mescladas.Abraços
Era justamente isso que eu temia.
Tenho algumas informações que variam muito de tamanho.
Mas muito obrigado pela ajuda, Micheus.
[]'s
-
A função autofit ...Columns.AutoFit funciona perfeitamente, ajustando o tamanho da coluna ao tamanho da palavra adicionada a ela, mas o mesmo não acontece com as linhas ...Rows.AutoFit, que apenas mantém a linha com o mesmo tamanho das demais.
Gostaria de saber se existe uma forma de ajustar o tamanho das linhas automaticamente, a partir do que existe dentro da mesma, visto que uso o WrapText para ajustar as palavras dentro das células mescladas.
Já consultei Nika-soft, Microsoft developer network e até mesmo algumas páginas do próprio fórum como esta.
Se alguém já passou por este caso e possa me ajudar. Agradeço.
PS.: Comecei a utilizar a exportação para Excel essa semana.
Abraço.
Combobox personalizada?
em Delphi, Kylix
Postado
x_Vovo_x
Este deve ser um componente de terceiro, ou então uma "gambiarra" feita com um panel + grid + botão.
Creio que existem componentes na Web bem mais bonitos que este, mas tu podes fazer algo parecido utilizando o evento click do combobox para realizar essa tarefa.
[]'s