Ir para conteúdo
Fórum Script Brasil

Vivendo&Aprendendo

Membros
  • Total de itens

    856
  • Registro em

  • Última visita

Tudo que Vivendo&Aprendendo postou

  1. Olá Pessoal... Como faço para relacionar tabelas pelo código no mysql, uso o mysql 5.0, mysql front. Abraço
  2. Olá Micheus, muito obrigado pelas respostas, eu não limpo o text do edit e nem mexo nele em lugar nenhum, também não entendi o porque que ele estava fazendo isso, mas consegui resolver da seguinte form: procedure TFrmAcrescimos.EdtFavorecidoChange(Sender: TObject); Var Aux : Integer; begin If EdtFavorecido.Focused Then begin DmDados.Clientes.Close; DmDados.Clientes.Open; if DmDados.Clientes.Locate('Nome',copy(EdtFavorecido.Text,1,EdtFavorecido.SelStart),[loCaseInsensitive,loPartialKey]) then begin EdtFavorecido.OnChange := nil; // Não ativar o evento agora. Aux := EdtFavorecido.SelStart; // Posição do cursor no EditFornecedor EdtFavorecido.Text := DmDados.Clientes.FieldByName('Nome').AsString; // Foi o que encontramos pois o codigo só passa por aqui se existe a informação EdtFavorecido.SelStart := Aux; // Atualizamos a posição do cursor. EdtFavorecido.OnChange := EdtFavorecidoChange; // Agora podemos chamar novamente. end; end; end; Dessa form como você já sabe ele só executa a busca se o foco estiver no edit... Abraços
  3. Olá Jhonas... Não é por causa do nome não, mudei de AdoQuery para ZQuery e deixei o mesmo nome que estava antes. O componente está funcionando corretamente, cadastra, exclui, altera, o problema é que quando abro o form a tabela aponta para um registro e o edit que busca o cliente aponta para o primeiro cliente. Abraço
  4. Pessoal preciso fazer um relatório de fornecedores, até ai é fácil, mas existem forncedores tipo pessoa física e pessoa jurídica e agora preciso que seja lista todos eles usando o mesmo campo, tipo campo Nome se for física recebe o nome se for jurídica recebe Fantasia. Ou se caso der para fazer para ele mostrar primeiro todos os que são pessoa física e depois todos os jurídica. alguém ai sabe como? Access, Delphi 7. Abraço
  5. Olá pessoal. Eu utilizava este código abaixo para auto completar o edit conforme o usuário iria digitando nele, usava adoquery, access e edit ou dbedit, mas agora mudei de banco de dados e componente, continuo usando edit e dbedtit, mas mysql e zeos e o código não funciona para esses. Segue abaixo o código: procedure TFrmAcrescimos.EdtFavorecidoChange(Sender: TObject); Var Aux : Integer; begin AdoClientes.Close; AdoClientes.Open; if AdoClientes.Locate('Nome',copy(EdtFavorecido.Text,1,EdtFavorecido.SelStart),[loCaseInsensitive,loPartialKey]) then begin EdtFavorecido.OnChange := nil; // Não ativar o evento agora. Aux := EdtFavorecido.SelStart; // Posição do cursor no EditFornecedor EdtFavorecido.Text := AdoClientes.FieldByName('Nome').AsString; // Foi o que encontramos pois o codigo só passa por aqui se existe a informação EdtFavorecido.SelStart := Aux; // Atualizamos a posição do cursor. EdtFavorecido.OnChange := EdtFavorecidoChange; // Agora podemos chamar novamente. end; end; Código no OnChange do Edit. Agora com o zeos e o mysql ele até não da erro, mas o dbedit só fica apontando para o primeiro registro enquanto os outros ficam certos. Como posso mudar esse código para que funcione no zeos e mysql? Abraços
  6. Olá Micheus... muito obrigado pela ajuda, mas ainda não consegui resolver isso, será que poderia me enviar um exemplo para eu avaliar? Agradeço
  7. Olá Micheus... ou eu não entendi o que você explicou ou você não entendeu o meu problema... :blush: Eu coloquei o seu código no form, ele faz tudo beleza (o enter funciona como o tab e o tab não faz nada) exatamente o que eu preciso, mas em um dos meus edit's eu tenho o seguinte código no OnKeyDown: If Key = VK_RETURN Then If Edit2.Text = '' Then begin Application.MessageBox('Campo não pode ser em branco!','Aviso',MB_ICONHAND+MB_OK); edit2.SetFocus; end; E por causa deste código que você alterou e o que usava antes o delphi não "lê" nenhum evento OnKeyDown do meu form, componente, etc. Porque isso? Alexandre
  8. Olá pessoal Tenho um procedimento que verifica as mensagens enviadas para o windows, nesse procedimento ele veifica se a tecla precionada for tab ele não deixa mudar de campo, se for enter ele muda o foco de campo: Procedure TForm1.CMDialogKey(Var Msg: TWMKEY); begin if ((ActiveControl is TDBEdit) or (ActiveControl is TEdit) or (ActiveControl is TDBComboBox) or (ActiveControl is TComboBox) or (ActiveControl is TDBLookupComboBox) or (ActiveControl is TDBMemo)) and (TEdit(ActiveControl).Focused) then begin if (Msg.Charcode = VK_TAB) then Msg.Result := 0 else if (Msg.Charcode = VK_RETURN) then begin Msg.Result := -1; SelectNext(ActiveControl, True , True); end; end else inherited; end; Mas também tenho no meu edit um evento OnKeyDown que só por causa deste código acima ele não executa nada que está no KeyDown, KeyPress ou KeyUp dos componentes, e preciso saber no KeyDown do edit se a tecla for igual a enter ele fazer alguma coisa, mas não faz nada ele simplesmente ignora os eventos onkey. Como posso fazer para que ele execute primeiro o evento do edit e depois ele faça a execução deste procedimento acima? Alexandre
  9. Olá Denis alguém conhece a API do windows (e como funciona) que ao deletar um arquivo/pasta, este é movido para a lixeira? Não quero usar a função DeleteFile. esta não atende meus objetivos. uses ShellAPI; Function DeleteFileWithUndo(sFileName : string ) : boolean; var fos : TSHFileOpStruct; Begin FillChar( fos, SizeOf( fos ), 0 ); With fos do begin wFunc := FO_DELETE; pFrom := PChar( sFileName ); fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_SILENT; end; Result := ( 0 = ShFileOperation( fos ) ); end; Use este código... Para chamar: DeleteFileWithUndo('C:\Documents and Settings\Usuário\Desktop\Novo(a) Documento de texto.txt'); Abraço
  10. Ok Denis... a única diferença da forma que instalei é que não marquei esta opção que você passou e em relação ao tutorial a minha instalação foi igual a dele, só que minha versão é um pouco mais atual 5.0.51 e a dele é 5.5.18 mas são poucas diferenças. Vou testar aqui e depois retorno o resultado. Abraço
  11. Denis eu usei um instaldor do mysql que configura o servidor pelo windows e li uma parte do manual que diz a configuração pelo DOS eu acho não entendi quase nada... rsrsrs... e continuo da mesma forma sem saber o que fazer para iniciar o serviço e deixa-lo iniciado sempre. Abraço
  12. Ok Denis... estou usando os comandos Append, Post, etc... isso pode causar algum problema se eu usar MyIsam? Se fosse o caso de usar comandos sql para inserir, salvar, alterar, como seria esse comando? Abraço
  13. Olá Denis... Eu instalei apenas dando Avançar não mudei nenhuma configuração na hora da instalação e também não alterei os arquivos que você citou, apenas instalei ele, instalei o front e funcionou certinho, mas depois de um tempo ele para de funcionar e quando vou iniciar o serviço pelo painel de controle >> ferramentras administrativas da o seguinte erro: Não foi possivel iniciar o serviço MySQL em Computador Local. Erro 1067: O processo terminou de forma inesperada. Abraço
  14. Pessoal to com um sistema usando banco em mysql e esse banco vai ficar na internet, qual a melhor forma de fazer: InnoDB ou myisam? Alexandre
  15. Pessoal estou usando começando a migrar para o mysql e comecei a usar o mysql 5 e mysql front instalei eles certinho tudo funcionando mas de repente o serviço do mysql para de funcionar fica parado e quando tento iniciar o serviço ele não inicia. Isso já ocorreu duas vezes tive que desinstalar tudo apagar a pasta do mysql e instalar tudo de novo. Porque isso ocorre e como faço para corrigir? Alexandre
  16. Olá pessoal! Preciso saber como faço para usar a primeira coluna do grid como um campo para busca, tipo: Tenho uma tela de vendas e um Grid que mostra os produtos que estão sendo vendidos referentes a aquela venda, eu uso edits para buscar o código do produto que esta sendo vendido, e agora quero tirar os edits e fazer com que o usuário digite o código do produto na primeira coluna de cada linha e ai ele preenche a descrição automaticamente e o usuario só coloca a qtde e se caso ele quizer inserir mais um produto cria-se uma nova linha no grid. Alguém ai pode me ajudar? Abraço
  17. Obrigado pelas dicas Jhonas, está resolvido, consegui adaptar o código que você postou no link. Ficou assim: procedure TForm1.CMDialogKey(Var Msg: TWMKEY); begin if (ActiveControl is TEdit) and (TEdit(ActiveControl).Focused) then begin if (Msg.Charcode = VK_TAB) then Msg.Result := 0 else if (Msg.Charcode = VK_RETURN) then begin Msg.Result := -1; SelectNext(ActiveControl, True , True); end; end else inherited; end; Declare na private do form: procedure CMDialogKey(Var Msg: TWMKEY); Funcionou certinho, o enter como Tab e o Tab anulado. Obrigado
  18. Jhonas obrigado... esse é o caminho mesmo, mas veja se pode me ajudar ainda. Eu coloquei o seu código no OnTimer do Timer, eu preciso que ele fique verificando se existe algum form MDI aberto, caso exista ele mudará o filme do componente ShockwaveFlash. O Código ficou assim: procedure TFrmPrincipal.TimerTimer(Sender: TObject); var I: Integer; begin for I := 0 to MDIChildCount - 1 do if MDIChildren[I] is TForm then ShockwaveFlashLetreiro.Movie := 'C:\VirtuaPlacas - Sistema Para Fábricas de Placas\Movies\Atalhos.swf' else ShockwaveFlashLetreiro.Movie := 'C:\VirtuaPlacas - Sistema Para Fábricas de Placas\Movies\Letreiro.swf'; end; Ele deve iniciar o sistema com o Filme Letreiro e quando eu abrir um MDI ele mudará para o Filme Atalhos e fechando os forms MDI deverá voltar o filme anterior. Ele está abrindo o filme Atalhos certinho mas quando eu fecho o form ele deveria voltar para o outro filme e não está voltando. Pode me ajudar? Abraço
  19. Jhonas no notbook onde estou fazendo o sistema sai da caixa de som, mas no pc normal sai do transdutor... mas os dois estão com a placa de som instalada e funcionando.
  20. Galera preciso saber se existe algum form MDI aberto. Eu uso o seguinte código para verificar: If ActiveMDIChild = FrmAcrescimos Then Mas preciso verificar se vários forms MDI estão abertos ou não, ai se eu fizer da maneira que estou fazendo terei que fazer inumeras comparações, gostaria de saber se existe alguma forma mais simples para isso, tipo um loop para verificar uns 20 forms se existe um deles aberto ou nenhum. Abraço
  21. Olá Jhonas, me desculpe mas não é não, pois estou no meu micro ouvindo música e o beep ocorre do mesmo jeito.
  22. Olha eu uso os componentes ADO, não sei se com os do BDE da certo mas creio que sim... no lugar de fazer assim: procedure TfrmCadPro.txtCadPro_VmlExit(Sender: TObject); var precus, vml: real; begin precus := StrToFloat(txtCadPro_PreCus.Text); vml := StrToFloat(txtCadPro_Vml.Text); txtCadPro_PreVen.Text := FloatToStr(precus+((precus*vml)/100)); end; Faça assim: procedure TfrmCadPro.txtCadPro_VmlExit(Sender: TObject); var precus, vml: real; begin precus := StrToFloat(txtCadPro_PreCus.Text); vml := StrToFloat(txtCadPro_Vml.Text); TABELA.FieldByName('PrecoVenda').Value := (TABELA.FieldByName('PrecoCusto').Value + (TABELA.FieldByName('PrecoCusto').Value * TABELA.FieldByName('ValorLucro').Value) / 100); end; Acredito que assim resolva. Coloque isso no OnExit do Preço do Lucro. Abraço
  23. Qual banco você usa e qual componente de conexão com o banco está usando?
  24. Ele faz isso porque o tamanho dele está definido para o mesmo tamanho de todas as colunas e linhas, ai quando você cria mais linhas ele cria uma barra de rolagem ao lado direito e embaixo e por isso aumenta esse espaço ai. Mude a propriedade ScrollBars da StringGrid para ssVertical, isso fará com que sempre que as linhas ultrapassem o espaço da stringgrid ele crie esta barra lateral e não fará mais o espaço. Aumente um pouco a largura da stringgrid para que caiba as colunas e um espaço que caiba a barra de rolagem que será criada. O botão para criar as barras ficará da seguinte forma: procedure TForm1.Button1Click(Sender: TObject); var Quan: integer; begin Quan := StringGrid1.RowCount; StringGrid1.RowCount := Quan + 1; if Quan = 30 then ShowMessage('Uau! Você tem muitos equipamentos em casa!'); end; Abraços
  25. Então o evento OnClick do botão calcular passa a ficar dessa forma: procedure TForm1.BtnCalcularClick(Sender: TObject); Var Total, TotalGeral : Real; Linha, Coluna, Fim, Qtde, Consumo, Potencia : Integer; begin Fim := StringGrid1.RowCount + 1; Linha := 1; While Linha < Fim do begin Coluna := 1; If StringGrid1.Cells[1,Linha] = '' Then StringGrid1.Cells[1,Linha] := '0'; If StringGrid1.Cells[2,Linha] = '' Then StringGrid1.Cells[2,Linha] := '0'; If StringGrid1.Cells[3,Linha] = '' Then StringGrid1.Cells[3,Linha] := '0'; Qtde := StrToInt(StringGrid1.Cells[Coluna,Linha]); Coluna := Coluna + 1; Potencia := StrToInt(StringGrid1.Cells[Coluna,Linha]); Coluna := Coluna + 1; Consumo := StrToInt(StringGrid1.Cells[Coluna,Linha]); Total := (((Qtde * Potencia * Consumo * 30) / 1000) * 0.48); StringGrid1.Cells[4,Linha] := FloatToStr(Total); TotalGeral := TotalGeral + StrToFloat(StringGrid1.Cells[4,Linha]); Linha := Linha + 1; end; Edit1.Text := FloatToStr(TotalGeral); end; Abraço
×
×
  • Criar Novo...