-
Total de itens
9.657 -
Registro em
Tudo que Jhonas postou
-
(Resolvido) Escrever da Direita para Esquerda em Edit
pergunta respondeu ao Pirambu! de Jhonas em Delphi, Kylix
Douglas_Soares ....Inverte ele, huahuhauha, brincadeira Douglas é exatamente isso que tem que ser feito ... a unica diferença é quando voce vai escrever em formato de moeda exemplo: use 2 edits e um botão procedure TForm1.Button1Click(Sender: TObject); var i, x : integer; s,s1,s2 : string; begin x := length(Edit1.text); s1 := ''; s2 := ''; edit2.clear; for i := 1 to x do begin Edit2.MaxLength := 20; s := ''; s := '%'+inttostr(20-i)+'s'; if i = 1 then s1 := Format(s,[Edit1.Text[i]]) else s1 := Edit1.Text[i]; insert(s1,s2,20+i); Edit2.Text := s2; Edit2.Refresh; delete(s2,1,2); sleep(500); end; end; OBS: neste exemplo o que estiver digitado no Edit1 será digitado no Edit2 da direita para a esquerda Com algumas alterações no código, voce pode digitar da direita para a esquerda no mesmo edit , obrigando o Edit a aceitar apenas numeros e coloca-lo no formato de moeda exemplo: function FNUMD(Objeto: TEdit; Texto, VKey: String; Espaco, Decimal: Integer): String; Var vChar, vDiv : String; I : Integer; begin vDiv := '1'; For I := 1 to Decimal do vDiv := vDiv + '0'; vChar := copy(Texto,1,length(Texto)); if (vchar = '') or (vchar = '0') then vchar := vkey else vchar := vchar + vkey; While ( pos( ',', vChar ) > 0 ) or ( pos( '.', vChar ) > 0 ) do begin Delete( vChar, pos( '.', vChar ), 1 ); Delete( vChar, pos( ',', vChar ), 1 ); end; Objeto.MaxLength := Espaco; Objeto.Text := Format('%*.*n',[Espaco,Decimal,StrToFloat(vchar)/StrToInt(vDiv)]); Objeto.SelStart := length(Objeto.text); end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9',',', #8]) then key := #0 else FNUMD(Edit1,trim(Edit1.text),key,20,2); end; abraço -
Neste caso voce pode tentar direcionar a impressão para outra porta procedure TForm1.Button1Click(Sender: TObject); var Porta:TextFile; // o P = pagina; o L = Linha da pagina P,L:integer; Begin //direciona a porta Assignfile(porta,'USB001'); //e manda abrir REWRITE(porta); Query1.First; P:=1; While not Query1.Eof do begin writeln(porta,'xxxxxxxxxxxxxxxxxxxxxxxx'); writeln(porta,'xxxxxxxxx:' + inttostr(P)); writeln(porta,'.........................................'); writeln(porta,'xxxxx'); writeln(porta,'.........................................'); L:= 0; while (not Query1.Eof) and (L<=58) do begin writeln(porta,floattostr(query1num.Value)); L:= L+1; Query1.Next; IF L > 58 then begin P:= P + 1; writeln(porta,#12); end; end; end; closefile(porta); end; abraço
-
ApplyUpdate ou Commit não gravam nas estações
pergunta respondeu ao geovanepc de Jhonas em Delphi, Kylix
As atualizações dos DBGrids não são automáticas nas estações, a menos que um comando seja dado: por exemplo: alguém na rede inseriu um registro ... após o Post e o ApplyUpdates é necessario realizar o Commit para atualizar os dados para a rede. Mas para que outro usuário veja essa atualização, é necessario que seja exetudado pelo menos um comando na tabela. DM.DataModule1.CDS_Cadastro.Post; DM.DataModule1.CDS_Aparelhos.ApplyUpdates(-1); MessageDlg('Alterações efetuadas com sucesso! ', mtInformation, [mbOK], 0); //ATUALIZAR OS DADOS PARA A REDE IBTransaction1.Commit; IBTransaction1.StartTransaction; abraço -
(Resolvido) Frames de site - Configurando no embedde Web Browser
pergunta respondeu ao Rafazuhdo de Jhonas em Delphi, Kylix
Voce só colocou o botão para navegar e onde está o comando para localizar o texto ? procedure WBLocateHighlight(WB: TWebBrowser; Text: string); const prefix = '<span style="color:white; background-color: red;">'; suffix = '</span>'; var tr: IHTMLTxtRange; begin TForm1.Memo1.Clear; if Assigned(WB.Document) then begin tr := ((wb.Document AS IHTMLDocument2).body AS IHTMLBodyElement).createTextRange; while tr.findText(Text, 1, 0) do begin tr.pasteHTML(prefix + tr.htmlText + suffix); tr.scrollIntoView(True); TForm1.Memo1.Lines.Append(prefix + tr.htmlText + suffix); end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin WB.Navigate('127.0.0.1/teste.php'); // navegar na pagina end; procedure TForm1.Button2Click(Sender: TObject); begin WBLocateHighlight(WB,'texto procurado'); // localizar o texto na pagina web end; Obs: uma vez que o texto seja localizado na página, o memo receberá a string abraço -
(Resolvido) Frames de site - Configurando no embedde Web Browser
pergunta respondeu ao Rafazuhdo de Jhonas em Delphi, Kylix
procedure WBLocateHighlight(WB: TWebBrowser; Text: string); O WBLocateHighlight localiza toda a ocorrência de uma string passada como um " parâmetro de Texto " em um documento web carregado em um componente de TWebBrowser passado como " parâmetro de WB ". O fundo da string localizada é tornado vermelho com o texto em branco ( prefix e suffix ). Como eu faço para visualizar o texto tratado em um TMemo ??? procedure WBLocateHighlight(WB: TWebBrowser; Text: string); const prefix = '<span style="color:white; background-color: red;">'; suffix = '</span>'; var tr: IHTMLTxtRange; begin TForm1.Memo1.Clear; if Assigned(WB.Document) then begin tr := ((wb.Document AS IHTMLDocument2).body AS IHTMLBodyElement).createTextRange; while tr.findText(Text, 1, 0) do begin tr.pasteHTML(prefix + tr.htmlText + suffix); tr.scrollIntoView(True); TForm1.Memo1.Lines.Append(prefix + tr.htmlText + suffix); end; end; end; OBS: Se quiser apenas o texto TForm1.Memo1.Lines.Append(tr.htmlText); abraço -
Não há nenhuma versão de ' Trim' que pode ser chamado com estes argumentos Tipos Incompativeis: Inteiro e TCaption OPS: Erro meu ... desculpe...rs O correto: tbproduto.FindNearest([trim(EditCodbarra.Text)]); abraço
-
(Resolvido) Frames de site - Configurando no embedde Web Browser
pergunta respondeu ao Rafazuhdo de Jhonas em Delphi, Kylix
Veja estes Posts http://scriptbrasil.com.br/forum/index.php...st&p=559407 http://scriptbrasil.com.br/forum/index.php...st&p=559441 localizar uma string em um TWebBrowser http://delphi.about.com/od/adptips2004/a/bltip1004_3.htm abraço -
Não existe problema desde que nenhum dos usuários tentem acessar esta tabela antes da criação da mesma. Vale lembrar que todo código utilizado para acessar essa tabela deverá estar criado no executável, mas só poderá ser utilizado depois da criação da tabela abraço
-
Convém notar que, para reproduzir um arquivo WMV, você precisa ter um codec. Um codec é um software que pode facilmente ler e criar um formato de arquivo de imagens de vídeo e áudio a partir dos dados fornecidos. Veja o que encontra neste endereço http://www.fileguru.com/apps/wave_delphi/p2 abraço
-
Na tela voce teve ter deixado o currency como true ou usado a mascara ,0.00 já no relatório é necessario fazer a mesma coisa, ou seja, formatar a saida exemplo: Report1.RLTotal.Caption := FloatToStr(TCurrency.value,StrToFloat(EdTotalA.Text),9,2); abraço
-
robinhocne ... não posso te dizer com certeza, pois não tenho o delphi 2007 para testar, mas creio que exista um componente no proprio delphi para criar um menu do mesmo tipo. Caso não exista, use este componente ... ele cria um Menu Vertical com submenus http://geocities.yahoo.com.br/admsqlbr/arq.../OutLockBar.zip abraço
-
O antivirus reconhece o sistema como virus
pergunta respondeu ao rickayron de Jhonas em Delphi, Kylix
Aproveitando o gancho .... Vale lembrar que este vírus deleta o arquivo SysConst.pas e substitui por outro que tem o fonte alterado e qualquer executavel gerado pelo delphi estará infectado. Além de usar o programa fornecido pelo Douglas_Soares , se voce tiver o cd de instalação do delphi, copie novamente o arquivo SysConst.pas e recompile. abraço -
Veja se consegue postar a imagem do que voce esta querendo abraço
-
nicolasbraz ... voce percebe o quanto esta tabela vai crescer ? pense em apenas 1 dia de uso do sistema .... ainda mais se voce levar em conta, que se estiver trabalhando em rede e com apenas 5 usuários, qual será a quantidade de registros que será acumulada na tabela. E quanto a segurança dos dados ? no minimo voce terá que usar uma senha de acesso para esta tabela. Um usuário mais espero pode apagar parte dos registros da tabela se esta não estiver protegida. Pense em talvez usar criptografia dos dados. A idéia é bem simples.... monte uma procedure ou uma função que será chamada durante a execução de Inclusão, Alteração, Exclusão. Abra a tabela apenas uma vez, e durante as operações voce chama a procedure e salva os registros exemplo: procedure Incluir; begin dmdados.iblog.insert; dmdados.IbLogLOG_DATA.Value:=date; dmdados.IbLogLOG_HORA.Value:=time; dmdados.IbLogLOG_NOMEUSUARIO.AsString:= dadosusuario.nomeusuario; // Aqui é uma variavel que pega o nome do funcionario logado. dmdados.IbLogLOG_tabela.AsString:='clientes'; //use uma variavel para atribuir o nome da tabela dmdados.IbLogLOG_OPERACAO.AsString:= 'incluiu'; // a operação realizada. dmdados.IbLog.Post; dmdados.ibCliente.append; TbConsulta.TabVisible := false; tbCadastro.TabVisible := true; dmdados.ibclienteCli_datacad.value:=date; DBNome.SetFocus; end; procedure Alterar; begin dmdados.iblog.Edit; dmdados.IbLogLOG_DATA.Value:=date; dmdados.IbLogLOG_HORA.Value:=time; dmdados.IbLogLOG_NOMEUSUARIO.AsString:= dadosusuario.nomeusuario; // Aqui é uma variavel que pega o nome do funcionario logado. dmdados.IbLogLOG_tabela.AsString:='clientes'; //use uma variavel para atribuir o nome da tabela dmdados.IbLogLOG_OPERACAO.AsString:= 'alterou'; // a operação realizada. dmdados.IbLog.Post; dmdados.ibCliente.append; TbConsulta.TabVisible := false; tbCadastro.TabVisible := true; dmdados.ibclienteCli_datacad.value:=date; DBNome.SetFocus; end; procedure Excluir; begin dmdados.iblog.delete; dmdados.IbLogLOG_DATA.Value:=date; dmdados.IbLogLOG_HORA.Value:=time; dmdados.IbLogLOG_NOMEUSUARIO.AsString:= dadosusuario.nomeusuario; // Aqui é uma variavel que pega o nome do funcionario logado. dmdados.IbLogLOG_tabela.AsString:='clientes'; //use uma variavel para atribuir o nome da tabela dmdados.IbLogLOG_OPERACAO.AsString:= 'excluiu'; // a operação realizada. dmdados.IbLog.Post; dmdados.ibCliente.append; TbConsulta.TabVisible := false; tbCadastro.TabVisible := true; dmdados.ibclienteCli_datacad.value:=date; DBNome.SetFocus; end; Então durante as rotinas de operações com tabelas no seu codigo voce chama a procedure Incluir; Alterar; Excluir; abraço
-
exatamente .... coloque nele o campo da sua tabela que será a chave do grupo no seu caso será o nome do funcionario.... na pesquisa os nomes apareçerão juntos, mas no relatorio aparecerá apenas uma vez com a somatoria dos outros campos abraço
-
Voce deve instalar o BDE na pasta Default do Windows ( Vista ou Win 7 ) Arquivos de Programas ... alias, ao instalar pelo installshield ele já faz isso automaticamente, a menos que voce tenha definido outro local quanto a permissão, voce deve autorizar a instalação e a execução do programa somente na primeira vez de uso. abraço
-
listasuporte.append('listasuporte||' + Corrija o erro .... listagem 3. obtendo a lista de suporte function tserverf.getusuariossuporte: tstringlist; var listasuporte: tstringlist; begin dtm.qrysuporte.close; dtm.qrysuporte.sql.clear; dtm.qrysuporte.sql.add('select * from suporte'); dtm.qrysuporte.open; listasuporte := tstringlist.create; while not dtm.qrysuporte.eof do begin listasuporte.append('listasuporte' + '||' + // o correto dtm.qrysuporteid_suporte.asstring + '||' + dtm.qrysuporteapelido.asstring + '||'+ dtm.qrysuporteonline.asstring + '||'+ dtm.qrysuportestatus.asstring + '||'); dtm.qrysuporte.next; end; dtm.qrysuporte.close; result := listasuporte; end; abraço
-
Installshield - Configuração Instalação BDE
pergunta respondeu ao Mario Lopes de Jhonas em Delphi, Kylix
O installshield que acompanha o delphi 5 faz isso sem problemas... instala o bde na maquina cliente e configura o alias Faça uma busca no forum ( installshield ) ... tem explicações sobre como utilizar abraço -
Veja nestes endereços: http://www.fast-report.com/en/download/fas...4-download.html http://edn.embarcadero.com/br/article/37456 abraço
-
http://scriptbrasil.com.br/forum/index.php...oogle&st=25 Se voce tiver paciencia para procurar neste link que te passei, acho que vai encontrar algo que lhe sirva abraço
-
tem um jeito de interpretá-las por si só ? Tudo vai depender do seu nivel conhecimento e aprendizado ... por isso existem tutoriais, apostilas, biblias e o mais importante o help que vem com o delphi. Muito de suas dúvidas podem ser esclarecidas por ele ( help ). Porém também me pergunto se precisamos sempre saber tudo o que acontece na função/procedure para colocarmos no sistema? O ideal é saber tudo, ou seja, "o porque", "para que" e "como usar" determinada função ou comando para obter um determinado resultado dentro do seu programa. Por isso há a necessidade de se ler muito sobre o assunto e principalmente experimentar, testar e compreender o porque das coisas. function TForm1.FileCopy(source,dest: String): Boolean; Veja que a função que voce postou é para copiar um arquivo de um lugar para outro e retorna um true ou false ( boolean ) se a operação for bem sucedida ou não. Não vou me aprofundar nos comandos da função, pois cabe a voce ler mais sobre o assunto, mas para dar um exemplo a sua pergunta. buffer: packed array [0..2047] of Byte; 1 - arrays , tambem conhecido como vetores, é usado para indexar uma coleção de dados, que podem ser inteiros, strings, records, bytes ...etc 2 - byte é um tipo inteiro que ocupa 8 bits de formato e esta na faixa de valores de 0 a 255 3 - packed ou pacote ou empacotamento é usado para compactar tipos de dados complexos para realizar um trabalho menor exemplo: Empacotando um registro para reduzir o trabalho type // Declare an unpacked record TDefaultRecord = Record name1 : string[4]; floater : single; name2 : char; int : Integer; end; // Declare a packed record TPackedRecord = Packed Record name1 : string[4]; floater : single; name2 : char; int : Integer; end; var defaultRec : TDefaultRecord; packedRec : TPackedRecord; begin ShowMessage('Tamanho do registro padrão = '+IntToStr(SizeOf(defaultRec))); ShowMessage('Tamanho de registro empacotado = '+IntToStr(SizeOf(packedRec))); end; Saida do código: Tamanho do registro padrão = 20 Tamanho de registro empacotado = 14 OBS: Este exemplo serve para demonstrar que ao usar packed, comprimimos os dados para executar um trabalho menor e mais rapido. buffer: packed array [0..2047] of Byte; Então voce percebe que cada vetor desse array empacotado pode receber valores de 0 a 255 para o tipo byte as 2047 posições não são um valor padrão, mas uma definição do possivel numero maximo do buffer, que pode ocorrer durante o processamento da função durante a leitura do buffer Como disse o ideal é que o programador saiba exatamente o que cada comando do delphi faz e entender a lógica de funcionamento .... como dizia meu professor: " O computador é um Burro rápido " Só faz mais rapidamente o que voce lhe ensina ( programar ) abraço
-
Veja neste endereço: http://www.firebirdsql.org/dotnetfirebird/...es-mapping.html Veja Tipo de dados do Firebird nesta apostila http://www.comunidade-firebird.org/cflp/do...s/CFLP_O012.PDF abraço
-
uses IBDatabase; abraço
-
já existe um exemplo no forum http://scriptbrasil.com.br/forum/index.php...st&p=531796 caso não seja isso, faça uma busca no forum pela palavra google ou webbrowser http://scriptbrasil.com.br/forum/index.php...oogle&st=25 abraço
-
Se o frmSobre já existe basta declarar a unit desse form na uses do form que o chama exemplo Uses UfrmSobre; Se o frmSobre ainda não existe então crie-o e na hora de compilar ele irá anexar ao form que o chama abraço