Ir para conteúdo
Fórum Script Brasil

Rodrigo Flores

Membros
  • Total de itens

    16
  • Registro em

  • Última visita

Posts postados por Rodrigo Flores

  1. Yaê galera esperta...pessoal estou com uma imensa dúvida, sou novato ainda em Delphi e já procurei em vários tópicos, em vários sites e até agora nada, gostaria de saber como que eu consigo fazer uma combobox nesse estilo:

    http://img512.imageshack.us/my.php?image=listfq4.png

    Onde, ao selecionar o campo de código e ao digitar o número ele faça a busca pelo número, e quando selecionar o campo nome e ao digitar o nome ele faça a busca pelo nome e ao selecionar o campo Razão Social e ao digitar a Razão Social ele faça a busca pela Razão Social.

    Pois tenho um banco de dados com estes campos mas uma combobox comum só me puxa um campo, além de que ela não consigue fazer a seleção de campos como numa grid, alguém sabe como fazer esse tipo de Combobox?

    Help me, please!!!

    Desde já agradeço a atenção de vocês....valeu!!!

    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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. Olá.

    Seria isto?

    Panel1.Font.Color:= clgray;
    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.
    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.

  8. 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 seguinte
    Barra.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

  9. 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.

  10. 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

  11. 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.

  12. 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)

  13. 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 assim
    procedure 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

  14. 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

  15. 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.
    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).

    Abraços

    Era justamente isso que eu temia.

    Tenho algumas informações que variam muito de tamanho.

    Mas muito obrigado pela ajuda, Micheus.

    []'s

  16. 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.

×
×
  • Criar Novo...