Ir para conteúdo
Fórum Script Brasil

Gabriel Cabral

Membros
  • Total de itens

    406
  • Registro em

  • Última visita

Tudo que Gabriel Cabral postou

  1. Bem....já vi o que aconteceu aqui.... assim....quando abro o projeto, o form principal abre, maximizado.....ele não possui nada além de um menu para chamar os outros forms.... aí eu vou no menu e abro o form de cadastro de fornecedores......esse form, que não abre maximizado, fica em cima do form principal.... quando clico em excluir, o form de cadastro de fornecedores minimiza e a caixa de mensagem abre em cima do form principal... depois de clicar em alguma opção da caixa de mensagem, ela fecha e o form de cadastro de fornecedores restaura em cima do form principal....e fica do mesmo jeito de quando ele foi aberto xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx mas resolvi abrir o projeto diretamente no form de cadastro de fornecedores.... cliquei em excluir e a caixa de mensagem abriu em cima do form....o form não minimizou.... alguém sabe me explicar porque acontece isso???? por que, ao abrir a caixa de mensagem, o form minimiza quando o principal está aberto??? Obrigado
  2. Ah sim..... mas onde eu tenho que usar esses parâmetros??? Obrigado
  3. Obrigado, Jhonas.....mas não consegui entender :(
  4. Pois é...eu dei um refresh...mas não adiantou...continuou a mesma coisa.... mas consegui resolver... o que eu estava colocando no OnCreate do form, deve ser colocado no OnActivate procedure TfrmLocalForn.FormCreate(Sender: TObject); //mudar linha acima para procedure TfrmLocalForn.FormActivate(Sender: TObject); begin With QueryLocalForn Do begin Close; SQL.Clear; SQL.Add('SELECT * FROM FINAFOR.dbf ORDER BY FORFAN'); Open; end; GridLocalForn.Columns[0].Width := 87; GridLocalForn.Columns[1].Width := 391; GridLocalForn.Columns[0].Title.Caption := 'CÓDIGO'; GridLocalForn.Columns[1].Title.Caption := 'NOME FANTASIA'; end; Muito obrigado, Jhonas
  5. Bom dia... estou com um problemão aqui... tenho um cadastro de fornecedores em um form e uma busca desses fornecedores em um grid em outro form... para gravar um registro na tabela de fornecedores, uso uma tabela tblCadForn: dm.tblCadForn.Post; dm.tblCadForn.Last; e para buscar o fornecedor em outro form, uso um grid, um datasource e uma query. O Grid está ligado ao Datasource O Datasource está ligado à Query A Query está ligada ao alias e sua propriedade SQL seleciona tudo da tabela de funcionarios. Ao ser criado, o form de busca executa o seguinte: procedure TfrmLocalForn.FormCreate(Sender: TObject); begin With QueryLocalForn Do begin Close; SQL.Clear; SQL.Add('SELECT * FROM FINAFOR.dbf ORDER BY FORFAN'); Open; end; GridLocalForn.Columns[0].Width := 87; GridLocalForn.Columns[1].Width := 391; GridLocalForn.Columns[0].Title.Caption := 'CÓDIGO'; GridLocalForn.Columns[1].Title.Caption := 'NOME FANTASIA'; end; A busca dinamica é feita desta maneira: procedure TfrmLocalForn.txtLocalForn_NomeFantasiaChange(Sender: TObject); begin With QueryLocalForn Do begin Close; SQL.Clear; SQL.Add('SELECT * FROM FINAFOR.dbf'); SQL.Add('WHERE FORFAN'); SQL.Add('LIKE '''+txtLocalForn_NomeFantasia.Text+'%'''); SQL.Add('ORDER BY FORFAN'); Open; end; end; PROBLEMA: Quando estou cadastrando os fornecedores e depois abro o form de busca, os fornecedores cadastrados agora ainda não estão no grid, eles só vão aparecer se eu fechar todo o programa e abrir de novo. O que tem de errado aí?? Ficarei muitíssimo grato a quem puder me ajudar
  6. Bom dia... estou com um problema na visualização dos forms quando surge uma caixa de mensagem... assim, para eu minimizar um form e ele ficar na barra de tarefas do windows, fiz da seguinte maneira protected procedure CreateParams (var Params: TCreateParams); override; procedure TfrmCadForn.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); with Params do begin ExStyle := ExStyle OR WS_EX_APPWINDOW; WndParent := GetDesktopwindow; end; end; Mas se utilizo isso, quando no form, clico num botão de exclusão, por exemplo, e surge a caixa de mensagem perguntando se deseja excluir, o form some e só reaparece quando algum botão da caixa de mensagem é clicado e ela some. Existe alguma forma de a caixa de mensagem aparecer em cima do form, sem que o form desapareça??? Obrigado
  7. Muito obrigado Jhonas.....agora sim funcionou normalmente.... qual a diferença entre esse código e o código q eu estava usando??
  8. É apenas isto em Novo dm.tblCadSecao.Append; dm.tblCadSecao.Open; e isto em Gravar dm.tblCadSecao.Post; dm.tblCadSecao.Last;
  9. porque não seria muito lógico??? e se o menu funciona como um botão, porque o código q eu coloco no evento dele não funciona??? Obrigado
  10. Bom dia, pessoal preciso utilizar um MainMenu ao invés de botões em certo form... tenho a opção novo e gravar.... no novo, dou um append... no gravar, dou um post... o problema é q o registro está sendo criado, mas os campos estão ficando vazios... mas isso só acontece com o menu, pois testei o mesmo código em um button e funcionou normalmente... há alguma restrição deste menu??? tem alguma forma que eu consiga fazer funcionar este código no menu ou terei q fazer com button mesmo??? Obrigado
  11. Bom dia, galera.... então....preciso preencher várias DBEdit após uma busca em um DBGrid... a busca dinâmica no DBGrid eu já fiz....então agora eu quero percorrer os registros resultantes no DBGrid e quando eu der um Enter em determinado registro no grid, as DBEdits de um outro form sejam prenchidas com os outros campos desse registro... eu preciso de um parâmetro para a busca dos outros campos desse registro.....mas como eu devo fazer??? me ajudem por favor......por enquanto meu código está assim.. with dm.QueryBuscaForn do begin Close; SQL.Clear; SQL.Add('SELECT * FROM FINAFOR.dbf'); SQL.Add('WHERE FORCOD = :pCOD'); ParambyName('pCOD') .AsString := {???????? O QUE COLOCAR AQUI ????????????}; Open; if not(IsEmpty) then begin frmCadForn.txtCadForn_CodForn.Text := dm.QueryBuscaForn.Fields[0].AsString; //e assim por diante com os outros campos.... end; end; Obrigado
  12. aaaaaaaahhhnnn não sabia dessa de adicionar as colunas e tal......ficou perfeito... muito obrigado
  13. Galera....é o seguinte... tenho um form com um DBGrid para fazer uma busca... esse DBGrid chama uma certa tabela que contem 22 campos...mas eu só preciso de 2, então resolvi configurar o grid no OnCreate do form onde ele se encontra, dessa forma: procedure TfrmLocalForn.FormCreate(Sender: TObject); var i : integer; begin With QueryLocalForn Do begin Close; SQL.Clear; SQL.Add('SELECT * FROM FINAFOR.dbf ORDER BY FORFAN'); Open; end; GridLocalForn.Columns[0].Width := 80; GridLocalForn.Columns[2].Width := 385; GridLocalForn.Columns[1].Width := 0; for i:=3 to 21 do GridLocalForn.Columns[i].Width := 0; GridLocalForn.Columns[0].Title.Caption := 'CÓDIGO'; GridLocalForn.Columns[2].Title.Caption := 'NOME FANTASIA'; end; Okay...até aí tudo certo....o problema vem na hora que eu vou fazer a busca.. tenho um Edit para digitar o codigo ou nome a ser buscado... então no OnChange do edit está assim: procedure TfrmLocalForn.txtLocalForn_CodChange(Sender: TObject); begin // Buscar por Código With QueryLocalForn Do begin Close; SQL.Clear; SQL.Add('SELECT * FROM FINAFOR.dbf'); SQL.Add('WHERE FORCOD'); SQL.Add('LIKE '''+txtLocalForn_Cod.Text+'%'''); //Iniciado por SQL.Add('ORDER BY FORFAN'); Open; end; end; no primeiro caracter que digito, o DBGrid volta às suas configurações padrão.....com todos os campos visíveis, os tamanhos diferentes do que eu determinei....ou seja...como se cancelasse tudo o que ocorreu no evento OnCreate do form.... o que eu preciso fazer pra essas configurações não se alterarem??? Obrigado
  14. Aeeeeeeeeee Micheus.........exatamente.....isso mesmo que eu precisava....muitíssimo obrigado E muito obrigado também a todos que me ajudaram... até +
  15. Mas colocando este incremento no Select não da certo, dá??!! Porque o FORCOD é string....não seria uma concatenação desse jeito que está aí??
  16. Então 'Progr'amador', mas isto funcionaria com o código max+1 ??? por exemplo....o código máximo da tabela é 00001... então eu vou cadastrar outro registro...deixo o DBEdit vazio, o programa seleciona o max [00001] e soma 1, resultando no código 2 [sem zeros..q é como está ficando]... com essa função o 2 fica 00002 tambem ou só funciona se eu digitar o 2 no DBEdit??? Obrigado
  17. não consigo usar autoincremento nas tabelas dbf....pelo menos no database desktop eu não consigo colocar isso... E quanto ao código, não deu muito certo, não.... o problema seria mesmo quanto a prencher com zeros o max+1.....pois o programa só pega o max+1 e não preenche com zeros... e quando o código digitado não for válido, não pode preencher tudo com zeros :lol: Obrigado
  18. Bom dia galera...então...estou com um problema grave na geração de código incremental.... uso tabela dbf [sim...já estou largando ela, é que neste caso preciso usá-la] e tenho algumas condições nessa geração de código.... o campo deve ter 5 caracteres sempre....então, se o número do código não tiver 5 caracteres, ele deve ser preenchido com zeros à esquerda....até aí tudo bem... mas ele só preenche com zeros à esquerda caso eu digite algo no DBEdit....pois há a possibilidade do usuário digitar um código, sem seguir a ordem... se eu deixo a DBEdit vazia, para prencher com o próximo número, usando o SELECT MAX, ele não preenche com zeros.... exemplo....a tabela está vazia....tenho a condição de que se ela estiver vazia, o campo é preenchido com 00001. Lembrando que esse campo é string então clico em novo, deixo vazia a DBEdit do codigo e clico em gravar... O campo é preenchido com 00001. Em seguida, clico em Novo, preencho o código com 2, e clico em gravar....o campo é preenchido com 00002 Depois, se clico em novo, deixo a DBEdit vazia e clico em gravar, o campo é preenchido com 3, e não com 00003. vou postar aqui os códigos que estou utilizando para isso... se alguém conseguir me ajudar, ficarei muito grato. Botão Gravar - Evento OnClick procedure TfrmCadForn.btnGravarClick(Sender: TObject); var i: integer; begin if dm.tblCadForn.RecordCount = 0 then txtCadForn_CodForn.Text := '00001'; if not (txtCadForn_CodForn.Text = '') then begin for i:=1 to txtCadForn_CodForn.MaxLength - length(txtCadForn_CodForn.Text) do txtCadForn_CodForn.Text := '0' + txtCadForn_CodForn.Text; end; with dm.QueryBuscaForn do begin Close; SQL.Clear; SQL.Add('SELECT * FROM FINAFOR.dbf'); SQL.Add('WHERE FORCOD = :pCODIGO'); ParambyName('pCODIGO').AsString := txtCadForn_CodForn.Text; Open; if not(IsEmpty) then begin ShowMessage(' Registro já existente!'); frmCadForn.btnAlterarClick(Sender); end else begin dm.tblCadForn.Post; dm.tblCadForn.Last; end; end; end; Evento BeforePost procedure Tdm.tblCadFornBeforePost(DataSet: TDataSet); begin if not tblCadForn.FieldByName('FORCOD').IsNull then Exit; QueryMaxForn.DatabaseName := tblCadForn.DatabaseName; QueryMaxForn.SQL.Clear; QueryMaxForn.SQL.Add('SELECT MAX (FORCOD) FROM FINAFOR.dbf'); QueryMaxForn.Open; try tblCadForn.FieldByName('FORCOD').AsString := FloatToStr(StrToFloat(QueryMaxForn.Fields[0].AsString)+1); finally QueryMaxForn.Close; end; end;
  19. Então galera...consegui resolver... quando eu dou um insert na tabela pra prencher os campos mas não quero gravar o registro [que é o caso se o registro já existir], eu tenho q dar um cancel na tabela.... então...ali no lugar de Exit, eu coloco dm.tblCadPro.Cancel só que cancelando o insert ao clicar no botao para gravar, o usuário perderá tudo que digitou só por causa do código que já existe...então terá q digitar tudo de novo com um outro código.... então me indicaram verificar a existencia do registro no OnExit da Dbedit do código.....mas aí surge um problema... é o seguinte..eu uso um comando para preencher o código com zeros a esquerda até o código ficar com 13 caracteres. este comando eu coloquei no botão gravar, então o código era preenchido com zeros e assim era gravado, com todos os zeros. mas como é melhor eu verificar a existencia do código no OnExit, então coloquei o comando p/ prencher com zeros no OnExit tambem, antes da verificação. então, quando saio do campo de código, se o código já existe, o Dbedit limpa e recebe o foco de volta..se não existe, o prenchimento dos outros campos continua normalmente. mas quando vou gravar, os zeros somem, não são gravados..apenas os números digitados no teclado são gravados. Por que que os zeros são gravados quando o comando está no botão gravar mas não são gravados quando o campo código é preenchido com eles em seu OnExit??? Código no OnExit do DBEdit procedure TfrmCadPro.txtCadPro_CodProExit(Sender: TObject); var i: integer; begin if not (txtCadPro_CodPro.Text = '') then begin for i:=1 to txtCadPro_CodPro.MaxLength - length(txtCadPro_CodPro.Text) do txtCadPro_CodPro.Text := '0' + txtCadPro_CodPro.Text; end; with dm.QueryBusca do begin Close; SQL.Clear; SQL.Add('SELECT * FROM ESTAPRO.dbf'); SQL.Add('WHERE PROCOD = :pCODIGO'); ParambyName('pCODIGO').AsString := txtCadPro_CodPro.Text; Open; if not(IsEmpty) then begin ShowMessage(' Registro já existente!'); txtCadPro_CodPro.SetFocus; txtCadPro_CodPro.Text := ''; end; end; Código no botão Gravar if not (txtCadPro_CodPro.Text = '') then begin for i:=1 to txtCadPro_CodPro.MaxLength - length(txtCadPro_CodPro.Text) do txtCadPro_CodPro.Text := '0' + txtCadPro_CodPro.Text; end; with dm.QueryBusca do begin Close; SQL.Clear; SQL.Add('SELECT * FROM ESTAPRO.dbf'); SQL.Add('WHERE PROCOD = :pCODIGO'); ParambyName('pCODIGO').AsString := txtCadPro_CodPro.Text; Open; if not(IsEmpty) then begin ShowMessage(' Registro já existente!'); dm.tblCadPro.Cancel; end else begin dm.tblCadPro.Post; dm.tblCadPro.Last; end; end;
  20. Bom dia, galera....então... estou tentando verificar, pelo código, se um registro já existe...dessa forma: eu preencho todos os campos do form, inclusive o código, aí pelo código abaixo, verifica se o código digitado já existe em algum registro da tabela... with dm.QueryBusca do begin Close; SQL.Clear; SQL.Add('SELECT * FROM ESTAPRO.dbf'); SQL.Add('WHERE PROCOD = :pCODIGO'); ParambyName('pCODIGO').AsString := txtCadPro_CodPro.Text; Open; if not(IsEmpty) then begin ShowMessage('Registro já existente!'); Exit; end else begin dm.tblCadPro.Post; dm.tblCadPro.Last; end; end; só que o problema está no if.... pois quando digito um código já existente, a mensagem aparece, mas não é pra executar o else, mas executa....porque o registro é gravado do mesmo jeito... na verdade, eu depurei o código aqui e não passa pelo else....então não passa pelo Post, mas tá gravando o registro mesmo assim.. tem algo errado ae?? ou outra forma q eu posso fazer isso?? Obrigado
  21. Então, robinhocne.....não consegui usar nenhum desses... voce conseguiu??? se sim, pode me explicar como??? Obrigado.
  22. caso você consiga, me passa por favor.....faço o mesmo se eu conseguir
  23. Ae pessoal.... eu vi uma infinidade de tópicos falando de pintar linha, pintar coluna, deixar grid zebrado, usar o evento OnDrawCollumnCell.... mas nenhum conseguiu solucionar meu problema... eu tenho um dbgrid que vai filtrando os registros de acordo com o q é escrito em um edit.... então gostaria que a linha do registro filtrado, ficasse com uma cor de fundo diferente do resto do grid.....a cada letra digitada.. o código de busca no grid é este: procedure TfrmLocalPro.txtLocalPro_DescChange(Sender: TObject); begin // Buscar por Nome With dm.QueryLocalPro Do begin Close; SQL.Clear; SQL.Add('SELECT * FROM ESTAPRO.dbf'); SQL.Add('WHERE PRODES'); SQL.Add('LIKE '''+txtLocalPro_Desc.Text+'%'''); //Iniciado por SQL.Add('ORDER BY PRODES'); Open; end; end; Obrigado
  24. Nossa, robinhocne.....muito melhor usando query deu certinho agora vou tentar fazer aquele esquema de cor na linha encontrada obrigado
×
×
  • Criar Novo...