-
Total de itens
9.657 -
Registro em
Tudo que Jhonas postou
-
para que é a biblioteca Stdio.h do c/c++?
pergunta respondeu ao Eduardo_Santos_ de Jhonas em Grupo de Estudos
explicação: https://pt.wikipedia.org/wiki/Stdio.h abraço -
como meu sistema pdv ler codigo de barras de balança
tópico respondeu ao marcos rolao de Jhonas em Outros Assuntos
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. -
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
-
(Resolvido) Filtrar arquivo de uma pasta pelo edit
pergunta respondeu ao Amauri Barreto de Jhonas em Delphi, Kylix
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 -
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 ?
-
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
-
(Resolvido) Filtrar arquivo de uma pasta pelo edit
pergunta respondeu ao Amauri Barreto de Jhonas em Delphi, Kylix
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 -
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
-
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
-
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
-
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
-
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
-
(Resolvido) Tratando Exceção no ClientDataSet
pergunta respondeu ao renanbg de Jhonas em Delphi, Kylix
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 -
(Resolvido) Tratando Exceção no ClientDataSet
pergunta respondeu ao renanbg de Jhonas em Delphi, Kylix
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 -
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
-
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
-
não consigo instalar Não consigo mais instalar o Zeosdbo-6.6.0-beta
pergunta respondeu ao C@pit@o_Z@p de Jhonas em Delphi, Kylix
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 -
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
-
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
-
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
-
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
-
Na minha opinião, prefiro usar sempre o select ( é mais rapido que as outras opções ) abraço
-
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
-
Tente esse link Como descobrir fonte da Letra https://bruno9988.wordpress.com/2013/06/07/como-descobrir-fonte-da-letra/ abraço
-
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