Ir para conteúdo
Fórum CódigoFonte.net

NeoBatata

Membros
  • Total de itens

    37
  • Registro em

  • Última visita

  1. Mauricio, vc pode chamar o form de login no executável da seguinte forma: Application.initialize; ... ... if FrmLogin.ShowModal = mrOK then begin FreeAndNil(FrmLogin); Application.CreateForm(TformPrincipal, FrmPrincipal); Application.Run; end else Application.terminate; no formulario de login, após checar o login e senha do usuário vc usa: ModalResult := mrOK; Espero ter ajudado.
  2. Prezado mauricio, Será que não está indo null no parâmetro, visto que ele é um variant e pode receber null?
  3. NeoBatata

    Problema com dll

    Prezado amigo, ao invés de uma procedure crie uma funcion com retorno boolean. depois é só usar assim: if minhafunção = true then espero que ajude!
  4. Amigo, o macete é o seguinte, quando vc estiver na aba autoincrement do campo no ibexpert, selecione a opção create generator e logo em seguida clique na aba trigger, marque a opção create trigger e com isso vai aparecer um código logo abaixo, parecido com esse: CREATE TRIGGER MANUAIS_BI FOR MANUAIS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.CODIGO IS NULL) THEN NEW.CODIGO = GEN_ID(GEN_MANUAIS_ID,1); END mude o codigo para o seguinte(OBS: obviamente com sua tabela e seu campo é claro): CREATE TRIGGER MANUAIS_BI FOR MANUAIS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.CODIGO IS NULL or NEW.CODIGO = 0) THEN NEW.CODIGO = GEN_ID(GEN_MANUAIS_ID,1); END adicionando apenas: or NEW.CODIGO = 0 para que o codigo seja gerando tando com o valor nulo quanto 0 após isso é só comfirmar e comitar teste adicionando um registro pelo ibexpert mesmo. qualquer coisa, add ai: [email protected] Boa Sorte
  5. meu caro, o formulário tem que ser o main form. O que vc pode fazer é bloquear, menu e tudo que estiver no mainform(Fprincipal) e abrir o login, após o login vc libera tudo. tá aí a sujestão Boa Sorte
  6. amigo, vc pode simplesmente adicionar um TImage contendo a imagem que deseja e no evento OnClick desse componente adicionar o código que deseja executar. pode tb mudar o cursor do mouse que deve aparecer quando estiver nele. Sds NeoBatata
  7. Amigo, use a função locate: Query.Locate(Campo_Busca, edtBusca.Text, [loPartialKey]); acredito que resolva seu problema Boa sorte!
  8. amigo da uma olhada nesse link: http://www.planetadelphi.com.br/dica/7139/...ox-e-visualizar
  9. Amigo, Talvez não seja a forma mais elegante mas pelo menos resolveu. Primeiramente criei uma função que recebe uma data e retorna a mesma em forma de string. //--------- < Prepara data para ser adicionada na query (YYYY/MM/DD)> ---------- function TFrmAdicionarProduto.PreparaData(Data: TDate): String; var Dia, Mes, Ano: Word; DataFinal: String; begin DecodeDate(Data, Ano, Mes, Dia); //Quebra a data DataFinal := (IntToStr(Ano) + '-' + IntToStr(Mes) + '-' + IntToStr(Dia)); //Monta a data na string no formato(YYYY/MM/DD) Result := DataFinal; //Retorna data no formato desejado para inserir na query end; Com isso vc joga essa string no texto da query function TFrmAdicionarProduto.AdicionaProduto: Boolean; var Codigo, DataCriacao, Obs, vValor :String; begin DataCriacao := PreparaData(dtpDataCriacao.Date); Codigo := Dm.GeraCodigoMaxQuery('produto_id', Dm.qyProdutosPesq); if edtObs.Text = '' then Obs := 'null' else Obs := ('"' + edtObs.Text + '"'); if (edtDescricao.Text = '') or (edtValor.Text = '') then ShowMessage('Campo descrição ou Valor vazios!' + 'Por Favor preencha-os e tente novamente.') else begin try // vValor := ReplaceString(',', '.', edtValor.Text); // ShowMessage(vValor); with Dm.qyProdutosUpdate do begin close; SQL.Clear; SQL.Text := ( 'INSERT INTO produto VALUES ( ' + Codigo + ',' + '"' + edtDescricao.Text + '" , ' + edtValor.Text + ' ,' + ' "' + DataCriacao + '" , ' + Obs + ' )'); Prepared := True; ExecSQL; result := True; end; Except Result := false; end; end; end; Espero que ajude. Boa sorte!
  10. NeoBatata

    salvando edit em txt

    Amigo, no site da codigofonte.net há um artigo sobre isso. veja o link http://www.codigofonte.net/dicas/delphi/12...quivos-de-texto boa sorte!
  11. NeoBatata

    Ajuda em Delphi

    A única diferença do edit para o memo é como vc vai ler o textoi que está no memo e tb gravar nele. Veja abaixo: procedure TForm1.Button2Click(Sender: TObject); var Nome : String; begin Nome := Memo1.Text; if Nome = '' then ShowMessage('Digite um nome no Memo') else begin with IBQuery1 do begin Close; SQL.Clear; SQL.Text := ('SELECT * FROM PESSOAS WHERE NOME = ' + '''' + Nome + '''' ); ShowMessage(SQL.Text); Open; end; if IBQuery1.RecordCount = 0 then begin ShowMessage('Nome não encontrado!'); Memo1.Clear; end else begin Memo1.Clear; Memo1.Lines.Add(IBQuery1.FieldByName('ENDERECO').AsString); end; end; end;
  12. NeoBatata

    Ajuda em Delphi

    Caro Thiss, costumo fazer da seguinte forma, basta adaptar para sua situação: procedure TForm1.Button1Click(Sender: TObject); begin if Edit1.Text = '' then ShowMessage('Digite um nome no Edit') else begin with IBQuery1 do begin Close; SQL.Clear; SQL.Text := ('SELECT * FROM PESSOAS WHERE NOME = ' + '''' + Edit1.Text + '''' ); ShowMessage(SQL.Text); Open; end; if IBQuery1.RecordCount = 0 then begin ShowMessage('Nome não encontrado!'); Edit1.Clear; end else begin Edit1.Clear; Edit1.Text := IBQuery1.FieldByName('ENDERECO').AsString; end; end; end; usei um BD em firebird, qualquer dúvida é só falar Vlw, vou tentar aki. Uma duvida. Esse firebird é um editor de banco de dados? nunca ouvi falar... só ouvi falar dos mais conhecidos como access, sql server e mysql. Outros eu não uso.... Vou tentar e qualquer duvida eu posto aki, se der certo eu posto tb... Firebird é um Banco de dados, criado a partir da versão 6(se eu não estou enganado) do Interbase que geralmente vem com o delphi. Ele é bastante utilizado e é FREE! eu uso tb o mysql. Só não uso o ACCESS(¨%#(*(*&$&¨) ehhehehehehe
  13. Amigo explique melhor, pois acho que não entendi. Atualizar a idade de todos os clientes de uma vez só? como vc vai saber a idade deles? Pode ser mais claro?
  14. Amigo, Primeiramente a propriedade Keypreview do form tem que estar True; Veja um exemplo: case Key of 16: ShowMessage('Tecla Shift foi pressionada'); 17: ShowMessage('Tecla Control foi pressionada'); 18: ShowMessage('Tecla ALT foi pressionada'); end; assim funciona porem as dua teclas ALT, CONTROL e SHIFT possuem o mesmo numero. Caso queira verificar coloque esse código: Label1.Caption := Format('O código da tecla pressionada é: %d', [Key]); Da forma que vc fez, usando VK_RMENU e etc, tb não funcionou comigo, não sei te explicar ao certo. Talvez seja porque essas teclas sirvam para fazer combinações como Crtl + A Faça o teste tb: if (Shift = [ssCtrl]) then case Key of 65: ShowMessage('As teclas Ctrl + A estão pressionadas'); end; Nesse caso verifica se ssCtrl é a tecla especial que está sendo pressionada e caso seja, testa qual a segunda tecla que esta sendo pressionada. em outra situação por exemplo: if (Shift = [ssCtrl, ssShift]) then case Key of 65: ShowMessage('As teclas Ctrl + A estão pressionadas'); end; Assim a combinação é Ctrl + Shift + A Portanto, baseado nisso acredito que não seja muito correto colocar funções nessas teclas especiais. Mesmo assim posso não estar certo, caso alguém possa acrescentar algo, ficarei grato Espero ter ajudado Abraço!
  15. Meu caro, será que vc não está digitando algum valor incompatível com o tipo de dados dos campos dessa tabela?
×
×
  • Criar Novo...