Ir para conteúdo
Fórum Script Brasil

Jhonas

Monitores
  • Total de itens

    9.657
  • Registro em

Tudo que Jhonas postou

  1. explicação: https://pt.wikipedia.org/wiki/Stdio.h abraço
  2. primeiro voce deve informar se o seu sistema caixa pdv é um sistema pronto que voce comprou, ou foi voce que desenvolveu e em que linguagem de programação.
  3. ok... nunca tentei fazer algo assim .. então minha ajuda sera limitada mas no delphi voce tem a opção de executar o Winrar , pode tambem usar um componente estilo Winrar e tambem pode usar um componente estilo Winzip exemplo de como Embutir arquivos dentro do executavel https://www.devmedia.com.br/resources-no-delphi-como-embutir-arquivos-no-executavel/36874 Esse voce vai achar interessante ( colocar um exe dentro do exe do programa ) http://www.superdownloads.com.br/download/41/compilador-de-arquivos-res-delphi/ https://www.clubedohardware.com.br/forums/topic/470082-delphi-como-criar-um-exe-que-cria-ou-modifica-outro-exe/ abraço
  4. ok ... mas só para voce ver a utilidade do código . ele chama automaticamente o software correspondente ao tipo de arquivo que voce clicar se for pdf, doc ...ele abre o word ou o acrobat se for bmp ... ele abre o visualizador de imagem se for txt ... ele abre o bloco de notas ou word pad e assim para qualquer arquivo que voce escolher. abraço
  5. minha duvida é o seguinte queria criar um executável no qual ele ira encapsular o arquivo .zip ou .rar para dentro dele voce deu margem para 2 interpretações: 1 - Montar uma rotina de backup e restauração somente usando o seu programa 2 - Usar arquivo de Recurso do Delphi ( .RES) para encapsular um outro arquivo dentro do proprio executavel .. mas isso deixaria o executavel muito grande. qual dos 2 voce esta querendo fazer ?
  6. exemplos: http://www.codelooker.com/codec/1000farmaciacomfontesdelphi/unBackup.pas.html ou veja nesses links https://www.google.com.br/search?source=hp&ei=e-v6WuWDPYKawQSwrpToBg&q=backup+delphi&o que=backup+delphi&gs_l=psy-ab.3..0l10.1353.3456.0.3784.13.10.0.0.0.0.249.755.0j3j1.4.0....0...1c.1.64.psy-ab..9.4.753...0i131k1.0.SqgMwEJK8rk abraço
  7. Componentes a serem usados: OleContainer1 Na propriedade Visible coloque => True Pode deixar o componente sobrepor outro ou coloca-lo fora do Form ou pode deixa-lo atraz de outro componente sem problema DriveComboBox1 Na propriedade DirList coloque => DirectoryListBox1 DirectoryListBox1 Na propriedade FileList coloque = > FileListBox1 FileListBox1 Não muda nada FilterComboBox1 Na propriedade FileList coloque => FileListBox1 Na propriedade Filter coloque => All files (*.*)|*.*|*.DOC|*.DOC OBS: quando voce selecionar a pasta que tem os arquivos .doc, eles serão automaticamente filtrados Código: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, FileCtrl, StdCtrls, OleCtnrs; type TForm1 = class(TForm) DriveComboBox1: TDriveComboBox; DirectoryListBox1: TDirectoryListBox; FileListBox1: TFileListBox; FilterComboBox1: TFilterComboBox; OleContainer1: TOleContainer; procedure FileListBox1DblClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses URLMon, ComObj; procedure TForm1.FileListBox1DblClick(Sender: TObject); begin Screen.Cursor := crHourGlass; try OleContainer1.AutoActivate:= aaGetFocus; OleContainer1.CreateLinkToFile(FileListBox1.FileName, true); OleContainer1.SetFocus; finally Screen.Cursor := crDefault; end; end; end. Quando for dado um click duplo com o mouse no arquivo, ele será automaticamente aberto pelo Word. abraço
  8. Como já te passei, o select faz tudo e não é necessario usar o TBookMark ( com o tempo e experiencia voce vai aprender isso ) Se voce quer usar o usar o commitretaining e nos forms onde não lista os dados, usar o commit, voce até pode, mas não é uma boa pratica em programação. Deixe a propriedade DefaultAction do componente como TACommit abraço
  9. não vejo onde esta o seu problema, se depois do commit voce quer continuar mostrando os dados na tela, execute novamente a select inicial, quando voce ativa o Form abraço
  10. meu amigo, não sei qual é a sua forma de fazer programação, mas o usual é voce ter botões de inserir, alterar, excluir .... depois de uma dessas opções ter sido realizada, voce deve ter um outro botão para salvar e outro para cancelar a operação. tudo vai depender de quais outros comandos serão executados depois do commit no meu caso, depois do commit eu simplesmente limpo a tela .... não vejo necessidade de ficar aparecendo os registros, uma vez que a operação tenha sido finalizada. abraço
  11. por default, a transação é sempre iniciada quando voce ativa a edição de um registro em uma tabela. então utilize na hora da gravação do registro, o comando ( Commit ) para finalizar a gravação e depois logo em seguida voce inicia novamente a transação ( StartTransaction ) não vai ter problema nenhum abraço
  12. simplesmente deixe no componente ZConnection a propriedade TransactIsolationLevel = tiReadCommitted na hora de salvar use: ( exemplo ) begin CDS_Cadprod.ApplyUpdates(-1); CDS_Cadprod.Refresh; FMenu.ZConnection1.Commit; FMenu.ZConnection1.StartTransaction; MessageDlg('REGISTRO SALVO! ', mtInformation, [mbOK], 0); end; abraço
  13. nesse caso basta voce condicionar o salvamento dos registros nas tabelas try cdsagenda.post; if cdsagenda.applyupdates(0)> 0 then begin showmessage('Erro de gravação'); cdsagenda.Cancel; end else begin cdscontas.post; if cdscontas.applyupdates(0)> 0 then begin showmessage('Erro de gravação'); cdscontas.Cancel; end; end; while not cdsitens.eof do ... ... qrproducao.post; except showmessage('deu erro, não gravei nada'); transaction.rollbackretaining; end; Voce pode ainda, se não quiser dar um Cancel na Tabela, pode dar um comando Exit e sair do restante do código, para não ser executado. Pela minha experiência, se voce soube estruturar corretamente as suas tabelas, dificilmente vai ocorrer esse tipo de problema. abraço
  14. tente isso: try cdsagenda.post; if cdsagenda.applyupdates(0)> 0 then begin showmessage('Erro de gravação'); cdsagenda.Cancel; end; cdscontas.post; if cdscontas.applyupdates(0)> 0 then begin showmessage('Erro de gravação'); cdscontas.Cancel; end; while not cdsitens.eof do ... ... qrproducao.post; except showmessage('deu erro, não gravei nada'); transaction.rollbackretaining; end; abraço
  15. amigo, fiz um sistema de agenda médica para um hospital, e utilizei somente select, tanto para pesquisa como para gravação de registros. só para te dar uma ideia... o meu select seleciona todos os médicos que tem agenda em determinado dia e coloca em um dbgrid .... depois seleciono atraves de outra select nesse dbgrid o medico que eu quero ... e desse medico, consigo todos os pacientes dele com os seus respectivos horarios, sem a necessidade de usar locate ou um filter. tudo depende de como voce montou as suas tabelas. abraço
  16. achei que voce estava deixando o database desativado para fazer a leitura para depois ativa-lo novamente. OBS: Se voce fizer um teste em qualquer form que precise de conexão com a tabela, o database é ativado automaticamente, mas não é desativado depois .... então não esqueça de fazer isso antes de executar o programa. abraço
  17. Não consigo instalar mais o Zeosdbo-6.6.0-beta isso quer dizer que voce já conseguiu instalar ele antes .... voce deve desinstalar o Zeos e o usar o CCleaner para limpar os registros, para depois instalar ele novamente ou veja nesses links http://www.activedelphi.com.br/forum/viewtopic.php?t=33645 https://www.google.com.br/search?source=hp&ei=Z87wWs67O4WJwgT85IQ4&q=instalação+zeos+delphi+7&o que=instalação+do+zeos&gs_l=psy-ab.1.0.0i22i30k1.1722.5116.0.10439.18.18.0.0.0.0.185.1884.1j15.16.0....0...1c.1.64.psy-ab..2.15.1787...0j0i131k1.0.kl0c2LWACQQ abraço
  18. If P_Caracter = 'º' then Result := StrToInt(Trim(Copy(P_Texto, 1, Pos(P_Caracter, P_Texto)-1))); If P_Caracter = '''' then Result := StrToInt(Trim(Copy(P_Texto, Pos('º', P_Texto)+2, 2))); if P_Caracter = '"' then Result := StrToInt(Trim(Copy(P_Texto, Pos('''', P_Texto)+2, 2))); end; ou veja nesses links https://www.google.com.br/search?ei=O_juWp_EKMGowATgpaKYAQ&q=case+com+char+delphi&o que=case+com+char+delphi&gs_l=psy-ab.1.0.0i30k1.15554.16067.0.17742.4.4.0.0.0.0.128.475.0j4.4.0....0...1c.1.64.psy-ab..0.4.471...0i7i30k1.0.E9EIojoi9Hk abraço
  19. Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'Config.ini'); Dir_banco := Ini.ReadString('Banco', 'Dir', '***'); Ini.Free; OBS: O problema está no comando de leitura do arquivo INI veja esses exemplos de como fazer a leitura de um arquivo INI https://www.google.com.br/search?ei=NcbtWpXzOYGlwgTp5rGwDA&q=ler+arquivo+ini+delphi&o que=ler+arquivo+ini+&gs_l=psy-ab.1.0.0l4j0i22i30k1l6.271488.274939.0.277673.16.9.0.7.7.0.160.754.0j6.6.0....0...1c.1.64.psy-ab..3.13.848...0i67k1j0i131k1.0.RNpLmjorUB0 abraço
  20. como disse, prefira usar o select em lugar do Locate e o TBookMark Select * from agenda where data = hoje Não vi aonde voce coloca esse código, pois ele deveria estar dentro de uma query e se hoje é uma variavel, esse select nem funcionaria assim. Se é um sistema de agenda que esta fazendo, a select faz tudo o que voce esta querendo... tanto na gravação como na pesquisa. veja alguns exemplos de uso de uma select dentro de uma query https://www.google.com.br/search?source=hp&ei=LMbtWpvPMsqrwgTIybCgCA&q=query+select+delphi&o que=select+dephi&gs_l=psy-ab.1.3.0i13k1j0i13i5i30k1l5j0i13i5i10i30k1j0i13i5i30k1l2j0i13i5i10i30k1.1269.3555.0.8507.12.12.0.0.0.0.162.1414.0j12.12.0....0...1c.1.64.psy-ab..0.12.1409...0j0i131k1j0i22i30k1.0.u9jTGKUT8J8 abraço
  21. faça isso: procedure TForm1.Button1Click(Sender: TObject); Var i : Integer; begin Randomize; i := RandomRange(2,5); Case i of 2: Label1.caption := ('verde'); 3: Label1.caption := ('amarelo'); 4: Label1.caption := ('vermelho'); end; end; abraço
  22. Na minha opinião, prefiro usar sempre o select ( é mais rapido que as outras opções ) abraço
  23. O TBookMark obtém ou define o marcador atual em um conjunto de dados. Um TBookMark marca um local em um conjunto de dados para que um aplicativo possa retornar facilmente a esse local rapidamente. Um aplicativo pode ler o TBookMark para recuperar o marcador associado ao registro atual e pode alterar o registro atual no conjunto de dados, atribuindo um valor de marcador salvo a essa propriedade. Estou tentando recuperar a posição do cursor após gravar um registro Use a propriedade Recno do ClientDataSet exemplo: procedure TForm1.Button1Click(Sender: TObject); var Posicao_Agenda : integer; begin ClientDataSet1.Edit; ClientDataSet1.Post; ClientDataSet1.ApplyUpdates(0); Posicao_Agenda := ClientDataSet1.RecNo; showmessage('Posicao_Agenda => ' + inttostr(Posicao_Agenda)); ClientDataSet1.Close; ClientDataSet1.Open; showmessage('Abrir a Tabela na Posicao_Agenda => ' + inttostr(Posicao_Agenda)); ClientDataSet1.RecNo := Posicao_Agenda; end; cds.Close; //Aqui é executado um select que traz a agenda do dia cds.Open; A propria select traz todos os registros das agendas do dia que voce quiser , sem a necessidade de se usar o TBookMark select * from tabela where agenda_dia = '21/10/2018' ou /// usando parametro ( string ou date ) para passar o valor select from tabela where agenda_dia = :Diag OBS: Se ainda assim quiser usar o TBookmark seria assim o seu uso procedure TForm1.Button1Click(Sender: TObject); var Posicao_Agenda : TBookMark; begin ClientDataSet1.Edit; ClientDataSet1.Post; ClientDataSet1.ApplyUpdates(0); Posicao_Agenda := ClientDataSet1.GetBookmark; ClientDataSet1.Close; /// Não usar select ClientDataSet1.Open; /// O cursor retorna para o registro guardado /// depois de fechar e abrir a tabela ClientDataSet1.GotoBookmark(Posicao_Agenda); end; Aviso: //// Somente liberar da memoria, depois do uso ClientDataSet1.FreeBookmark(Posicao_Agenda); abraço
  24. Tente esse link Como descobrir fonte da Letra https://bruno9988.wordpress.com/2013/06/07/como-descobrir-fonte-da-letra/ abraço
  25. exemplo: voce poderia usar um bloco try..except em cada procedimento do sistema, mas usando o componente ApplicationEvents voce pode criar um único procedimento que fará o tratamento de todas as exceções que possam ser gerados pelo sistema. procedure TFrmPrincipal.ApplicationEvents1Exception(Sender: TObject; E: Exception); begin if pos('foreign key', E.Message) <> 0 then begin ShowMessage('Erro de Chave Estrangeira'); Halt(0);//finaliza o programa /// ou ... aqui voce pode colocar uma rotina para /// Cancelar a edição do registro da tabela end else if pos('Access violation', E.Message) <> 0 then ShowMessage('Erro ao acessar um Objeto') else begin ShowMessage('Erro não tratado ' +#13+E.Message ); {caso seja uma exceção desconhecida, a linha de código abaixo ira recriar exceção sem fazer tratamento algum} raise Exception.Create(E.Message); end; end; abraço
×
×
  • Criar Novo...