-
Total de itens
9.657 -
Registro em
Tudo que Jhonas postou
-
quanto a testar um numero <% vl= 10 if vl < -0 then response.write("o numero é negativo") else response.write("o numero é positivo") end if %> quanto a mensagem veja http://www.functionx.com/vb/functions/msgbox.htm abraço
-
veja esses exemplos http://www.emailarchitect.net/easendmail/ex/b/ abraço
-
Use o método WebBrowser.Navigate para abrir o PDF com o navegador da Web padrão. Por exemplo, digite o seguinte código antes da seção " End Sub " : " WebBrowser.Navigate (" C: \\ Documents \\ book.pdf ")" , mas use um local válido para o arquivo PDF < . br> abraço
-
(Resolvido) Erro ao alterar caminho do firebird com dbexpress
pergunta respondeu ao nicolasbraz de Jhonas em Delphi, Kylix
me passa o conteudo do config.ini -
Relatorio de contas a pagar com plano de contas quickreport
pergunta respondeu ao nicolasbraz de Jhonas em Delphi, Kylix
voce deve usar a banda tipo Summary no quick report e usar o componente QRExpr1 onde voce define qual o campo devera ser somando ( usando as funções internas desse componente ) se existir mais de um plano de contas no seu report use a banda rbGroupHeader e a rbGroupFooter para separar em grupos e executar a somatoria de cada plano tem exemplo na pasta Demos do delphi ou na net .. basta pesquisar pela palavra rbGroupHeader Delphi abraço -
(Resolvido) Erro ao alterar caminho do firebird com dbexpress
pergunta respondeu ao nicolasbraz de Jhonas em Delphi, Kylix
toda a vez que eu vou alterar o caminho do banco ele não consegue se conectar é necessário fechar a aplicação e abrir de novo. Try iniconf:=Tinifile.Create(ExtractFilePath(application.exename)+'config.ini'); iniconf.writestring('PDV','Database', '' + edtCaminho.Text); try dm.conexao.Connected := false; dm.conexao.ConnectionName :='PDV'; //Nome do Driver válido *** dm.conexao.DriverName :='FIREBIRD'; dm.conexao.LoadParamsFromIniFile('config.ini'); dm.conexao.Connected := True; ShowMessage('Conexão realizada com sucesso.'); except ShowMessage('Erro ao conectar a nova base de dados! Contate o suporte.'); end; btnFecharClick(self); except showmessage('Erro na conexão com o Banco de Dados.'); end; veja que voce fechando o programa e abrindo ele novamente, esse comando consegue ser executado dm.conexao.LoadParamsFromIniFile('config.ini'); a pergunta é : houve tempo suficiente para que esse comando fosse executado ? iniconf:=Tinifile.Create(ExtractFilePath(application.exename)+'config.ini'); iniconf.writestring('PDV','Database', '' + edtCaminho.Text); experimente usar o comando Sleep(300) sleep time em millisegundos para ver se resolve tipo: sleep(1000); // esperar 1 segundo para executar o proximo comando dm.conexao.LoadParamsFromIniFile('config.ini'); OBS: se não resolver tente colocar esses comandos no active do form ou outro lugar iniconf:=Tinifile.Create(ExtractFilePath(application.exename)+'config.ini'); iniconf.writestring('PDV','Database', '' + edtCaminho.Text); abraço -
fiz algumas alterações no seu código ... OBS: comentei as linhas do código onde voce usa o banco de dados procedure TForm1.Button1Click(Sender: TObject); var Caminho, Diretorio : String; Origem, Destino :array[0..512] of Char; begin //dm.t_ft_vendas.Insert; if OpenPictureDialog1.Execute then begin //Diretorio := '\\server\c\listagem\img_vendas\'+ ExtractFileName // CAMINHO DA FOTO E O NOME DA FOTO Caminho := ExtractFilePath(OpenPictureDialog1.FileName)+ ExtractFileName(OpenPictureDialog1.FileName); // DIRETORIO ONDE SERA SALVO AS FOTOS DE ACORDO COM O NOME DA FOTO Diretorio := ChangeFileExt(Caminho,''); // FORÇA A CRIAÇÃO DO DIRETORIO SE NÃO EXISTIR if ForceDirectories(Diretorio) then showmessage('Diretorio = '+ Diretorio + ' foi criado!') else showmessage('Diretorio = '+ Diretorio + ' já existe!'); // VERIFICA SE O ARQUIVO JA EXISTE NO DIRETORIO E FAZ COPIA DA FOTO if FileExists(Diretorio + '\'+ ExtractFileName(OpenPictureDialog1.FileName)) then begin if MessageDlg('O arquivo ' + ExtractFileName(OpenPictureDialog1.FileName) + ' já existe no destino. Deseja sobrescrevê-lo?', mtConfirmation, [mbYes, mbNo], 0) = IDYes then begin StrPCopy(Origem, Caminho); StrPCopy(Destino, Diretorio + '\'+ ExtractFileName(OpenPictureDialog1.FileName)); CopyFile(Origem, Destino, False); end; end else begin StrPCopy(Origem, Caminho); StrPCopy(Destino, Diretorio + '\'+ ExtractFileName(OpenPictureDialog1.FileName)); CopyFile(Origem, Destino, True); end; //f_incluir_imoveis_venda.Image1.Picture.LoadFromFile(Diretorio); //dm.t_ft_vendas.Edit; //dm.t_ft_vendas.Fields.FieldByName('img01').AsString := Diretorio; // < === *** supondo nome campo CaminhoImg //dm.t_ft_vendas.Post; ShowMessage('Foto cadastrada!'); //SpeedButton2.Enabled := true; end; end; o codigo como esta, permite voce selecionar uma foto de algum diretorio, criar um diretorio com o nome dessa foto e copiar a foto para dentro desse diretorio faça as alterações que forem necessarias a partir disso abraço
-
amigo, o comando ForceDirectories(Diretorio) força a criação de um diretorio se ele não existir Diretorio := '\\server\sysvistoria\ftsaida\'; if ForceDirectories(Diretorio) then f_cad_vissaida.DBEdit1.text := Diretorio + ' foi criado!'; veja que voce colocou o comando no inicio do codigo ... então se esse diretorio já existe ele não sera mais criado enretanto esse codigo Diretorio := '\\server\sysvistoria\ftsaida\'+ ExtractFileName(OpenPictureDialog1.FileName); vai receber o caminho e o nome da figura que voce esta abrindo ... se quiser criar um novo diretorio com esse caminho o comando if ForceDirectories(Diretorio) then deve vir logo após esse comando. abraço
-
exemplos em video aulas ou veja esse artigo http://codigobr.wordpress.com/category/python/ abraço
-
[AJUDA] - Registros em Pascal
pergunta respondeu ao clovis23 de Jhonas em Outras Linguagens de Programação
solução da primeira questão bem detalhada http://algoritmofacil.blogspot.com.br/2011/09/5-sistema-de-cadastro-de-clientes.html OBS: tente se esforçar para aprender a logica de programação e os comandos em pascal ... não é dificil um exemplo mais facil http://professorwellingtontelles.blogspot.com.br/2011/11/cadastro-de-clientes-em-pascal-parte-1.html abraço -
reveja esse codigo para i:=1 ate 4 faca se MatrizPraia[i,1] = 1 então Praia_do_Diabo <- Praia_do_Diabo + 1 fimse fimpara se a condição é verdadeira para apenas um elemento da matriz, o que acontece com o restante ? abraço
-
Algoritmo no Visualg - Laço de repetição
pergunta respondeu ao EdmarJr de Jhonas em Lógica de Programação
Mas quando é digitado um numero negativo para encerrar, esse numero acaba entrando no valor salário e alterando a media de salário. se sal > maior então maior <- sal fimse se sal < 150.00 então cs<- cs+ 1 // contador de pessoas com salário maior que 150 perc <- cs * (100/c) fimse faltou o teste para verificar se o salario é negativo ou seja menor que zero abraço -
veja nesse link http://forum.clubedohardware.com.br/topic/974560-urna-eletr%C3%B4nica-em-visualg/ e veja essa apostila a partir da pagina 26 http://www.google.com.br/url?q=http://www.anisioteixeira.com.br/arquivosblog/Apostila_modulo_III-Programacao.pdf&sa=U&ei=hA5XU7-GF5DQsQSIyYDICA&ved=0CE0QFjAH&usg=AFQjCNHipoHs-0uj_7LODa-tgsjPA6kXxQ abraço
-
exemplo para voce fazer a adaptação ao seu código basta colocar o caminho da ID do cadastro na variavel Dir procedure TForm1.Button1Click(Sender: TObject); var Dir: string; begin Dir := 'C:\APPS\SALES\LOCAL'; if ForceDirectories(Dir) then Label1.Caption := Dir + ' foi criado!' end; abraço
-
se voce fez alterações no banco de dados ( tipo inserir um novo campo, ou alterar o tipo ou o tamnho do campo, ou o nome de um campo ou da tabela ...etc ) essas alterações tambem deverão ser feitas no seu programa executavel ... outra coisa ... voce deve deletar todas as tabelas do firebird na maquina cliente antes de copiar as tabelas modificadas abraço
-
Nesse caso voce não pode fazer referencia da tabela ( DataSet ) no quick report uma opção é voce deve usar o evento OnNeedData do quickreport, onde voce pode controlar os registros das duas tabelas independentemente pesquise no forum ou na net sobre OnNeedData ou veja esses exemplos que podem lhe ajudar http://www.quickreport.co.uk/webinfopage.aspx?WebInfoID=623 abraço
- 3 respostas
-
- quick report
- duas querys
- (e %d mais)
-
(Resolvido) Teclas de atalho não funciona (KeyDown)
pergunta respondeu ao robinhocne de Jhonas em Delphi, Kylix
esse JvPageList.pas funciona no delphi 8 https://github.com/project-jedi/jvcl/blob/master/jvcl/run/JvPageList.pas veja outra versão do dcc32.exe http://originaldll.com/file/dcc32.exe/17467.html abraço -
porque usar 2 querys se os dados da primeira e da segunda querys parecem ser iguais ? se os dados são de tabelas diferentes, faça relacionamento entre as tabelas e use apenas uma query para dividir o quick report em colunas, veja o item 6 desse artigo Criando Relatório no Delphi 1.Abra um novo Form 2.Insira o componente QuickRep (aba QReport). 3.Ligar a propriedade DataSet do componente QuickRep com a tabela que você deseja fazer o relatório. Se não tiver nada nessa propriedade, significa que a tabela não está nesse formulário, então é necessário fazer a ligação com o formulário que tem a tabela, para isto clique no menu File – use unit, escolha a unidade que tem a tabela e clique em ok. 4.Insira um QRBand - responsável para fazer o cabeçalho. Para isso mude BandType desse QRBand para RBPageHeader. Obs. Sempre que você colocar um QRBand, o tipo dela será Title (título), para mudar esse tipo utilize a propriedade BandType. No cabeçalho, vou querer que saia a data, portanto, coloque o componente QRSysDate e muda a propriedade Data para QrsDate. 5.Insira outro QRBand – responsável por colocar um título no relatório. Coloque dentro dessa banda o componente QRLabel e digite o título do seu relatório na propriedade caption. Para centralizar um título mude as seguintes propriedades do QRLabel : Alignment – tacenter e AligntoBand - True 6.Insira outro QRBand – agora responsável por fazer o relatório em colunas. Para isso, mude a propriedade BandType para RBColumnHeader. Coloque dentro dessa banda a quantidade de QRLabel necessária para montar o seu relatório. Por exemplo, se você quer que no relatório saia Nome, Endereço e Telefone, então coloque 3 QrLabel’s e mude a propriedade caption. 7.Insira outro QRBand – responsável por pegar os dados no Banco de Dados. Mude a propriedade BandType para RBDetail. Coloque dentro dessa banda a quantidade de QRDBText (dependendo das informações que você quer que saia no relatório – mesmo caso do item acima) e ligue as propriedades DataSet com a tabela e DataField com o nome do campo. 8.Insira outro QRBand – responsável por fazer o rodapé. Mude a propriedade BandType para RBPageFooter. No rodapé eu quero mostrar o nome da pessoa que desenvolveu o relatório, para isto, coloque o QRLabel e mude a propriedade caption, e também o número da página, para isto insira o componente QRSysData, muda a propriedade Data para QRSPageNumber. 9.Salve o seu programa e abra o formulário de menu. Na opção que chama o relatório, fazer a seguinte procedure : Form3.quickrep1.preview; Obs: Form3 é o formulário do relatório, no seu projeto pode ser outro. http://www.planetadelphi.com.br/dica/6261/criando-relat%C3%B3rio-no-delphi---quickreport abraço
- 3 respostas
-
- quick report
- duas querys
- (e %d mais)
-
(Resolvido) Teclas de atalho não funciona (KeyDown)
pergunta respondeu ao robinhocne de Jhonas em Delphi, Kylix
tente uma versão mais nova do dcc32.exe http://originaldll.com/download/17467.7z abraço -
(Resolvido) Teclas de atalho não funciona (KeyDown)
pergunta respondeu ao robinhocne de Jhonas em Delphi, Kylix
compare a versão do seu JvPageList.pas com esse e veja se existe alguma diferença https://github.com/project-jedi/jvcl/blob/master/jvcl/run/JvPageList.pas abraço -
Como escolher uma webcam entre várias?
pergunta respondeu ao Gabriel Cabral de Jhonas em Delphi, Kylix
amigo, creio então que voce deverá recorrer ao componente TVideoGrabber, o qual, lhe falei ... uso sem problemas os componentes que utilizo fazem parte do pacote de componentes do TVideoGrabber FilterGraph: TFilterGraph; SampleGrabber: TSampleGrabber; VideoWindow: TVideoWindow; nesses componentes é possivel selecionar a webcam pelo nome tem um exemplo muito bom nesse link ... veja todas ( 12 ) as paginas sobre esse assunto http://www.vwlowen.co.uk/directshow/page03.htm http://www.vwlowen.co.uk/directshow/page05.htm http://www.vwlowen.co.uk/directshow/page06.htm abraço -
Como escolher uma webcam entre várias?
pergunta respondeu ao Gabriel Cabral de Jhonas em Delphi, Kylix
use esse codigo e me informe o nome que aparece no combobox unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; ComboBox1: TComboBox; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} Uses ActiveX, ComObj; Type ICreateDevEnum = interface(IUnknown) ['{29840822-5B84-11D0-BD3B-00A0C911CE86}'] (*** ICreateDevEnum methods ***) function CreateClassEnumerator(const clsidDeviceClass: TGUID; out ppEnumMoniker: IEnumMoniker; dwFlags: DWORD): HResult; stdcall; end; procedure EnumerateVideoInputDevices( Liste:TStrings ); const IID_ICreateDevEnum : TGUID = '{29840822-5B84-11D0-BD3B-00A0C911CE86}'; CLSID_SystemDeviceEnum : TGUID = (D1:$62BE5D10;D2:$60EB;D3:$11D0;D4:($BD,$3B,$00,$A0,$C9,$11,$CE,$86)); CLSID_VideoInputDeviceCategory: TGUID = (D1:$860BB310;D2:$5D01;D3:$11D0;D4:($BD,$3B,$00,$A0,$C9,$11,$CE,$86)); IID_IPropertyBag : TGUID = '{55272A00-42CB-11CE-8135-00AA004BB851}'; var LDevEnum : ICreateDevEnum; ppEnumMoniker : IEnumMoniker; pceltFetched : ULONG; Moniker : IMoniker; PropBag : IPropertyBag; pvar : olevariant; hr : HRESULT; strDescription, strFriendlyName, strDevicePath, strCLSID : String; begin CocreateInstance(CLSID_SystemDeviceEnum, nil, CLSCTX_INPROC, IID_ICreateDevEnum, LDevEnum); hr := LDevEnum.CreateClassEnumerator(CLSID_VideoInputDeviceCategory, ppEnumMoniker, 0); if (hr = S_OK) then begin while(ppEnumMoniker.Next(1, Moniker, @pceltFetched) = S_OK) do begin strDescription := ''; strFriendlyName := ''; strDevicePath := ''; strCLSID := ''; Moniker.BindToStorage(nil, nil, IID_IPropertyBag, PropBag); if PropBag.Read('Description', pvar, nil) = S_OK then strDescription := String(pvar); if PropBag.Read('FriendlyName', pvar, nil) = S_OK then strFriendlyName := String(pvar); if PropBag.Read('DevicePath', pvar, nil) = S_OK then strDevicePath := (pvar); if PropBag.Read('CLSID', pvar, nil) = S_OK then strCLSID := String(pvar); PropBag := nil; Moniker := nil; Liste.Add( strFriendlyName ); end; end; ppEnumMoniker :=nil; LDevEnum :=nil; end; procedure TForm1.Button1Click(Sender: TObject); begin EnumerateVideoInputDevices( ComboBox1.Items ); end; end. ===================================================================== OBS: olhando as funções da api, realmente não é o nome mas um numero da camera que voce ira usar SendMessage(_windowHandle, WM_CAP_CONNECT, _videoSourceIndex, 0) então nesse código que passei, não utilze o nome que esta no combobox e sim o indice dele tente 0,1,2,3,..5 outra detalhe, ao selecionar um numero acima de zero ( padrão ) voce deve esperar alguns segundos para a imagem aparecer e dependendo pode demorar até um pouco mais. abraço -
o codigo funciona no delphi XE2 amigo, porque voce precisa mudar o icone da aplicação em tempo de execução ? abraço
-
tente esse http://www.delphikingdom.com/asp/answer.asp?IDAnswer=39149 abraço
-
creio que esse código vai ajuda-lo ...executar uma função Javascript no Webbrowser Author: Thomas Stutz uses MSHTML_TLB, SHDocVw, ShellAPI; // function to execute a script function function ExecuteScript(doc: IHTMLDocument2; script: string; language: string): Boolean; var win: IHTMLWindow2; Olelanguage: Olevariant; begin if doc <> nil then begin try win := doc.parentWindow; if win <> nil then begin try Olelanguage := language; win.ExecScript(script, Olelanguage); finally win := nil; end; end; finally doc := nil; end; end; end; // 2 Examples how to login to gmx homepage procedure FillInGMXForms(WB: ShDocVW_TLB.IWebbrowser2; IDoc1: IHTMLDocument2; Document: Variant; AKennung, APasswort: string); const IEFields: array[1..4] of string = ('INPUT', 'text', 'INPUT', 'password'); var IEFieldsCounter: Integer; i: Integer; m: Integer; ovElements: OleVariant; begin if Pos('GMX - Homepage', Document.Title) <> 0 then while WB.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages; // count forms on document and iterate through its forms IEFieldsCounter := 0; for m := 0 to Document.forms.Length - 1 do begin ovElements := Document.forms.Item(m).elements; // iterate through elements for i := ovElements.Length - 1 downto 0 do begin try // if input fields found, try to fill them out if (ovElements.item(i).tagName = IEFields[1]) and (ovElements.item(i).type = IEFields[2]) then begin ovElements.item(i).Value := AKennung; Inc(IEFieldsCounter); end; if (ovElements.item(i).tagName = IEFields[3]) and (ovElements.item(i).type = IEFields[4]) then begin ovElements.item(i).Value := APasswort; Inc(IEFieldsCounter); end; except // failed... end; end; { for i...} end; { for m } // if the fields are filled in, submit. if IEFieldsCounter = 3 then ExecuteScript(iDoc1, 'document.login.submit()', 'JavaScript'); end; function LoginGMX_IE(AKennung, APasswort: string): Boolean; var ShellWindow: IShellWindows; WB: ShDocVW_TLB.IWebbrowser2; spDisp: IDispatch; IDoc1: IHTMLDocument2; Document: Variant; k: Integer; begin ShellWindow := CoShellWindows.Create; // get the running instance of Internet Explorer for k := 0 to ShellWindow.Count do begin spDisp := ShellWindow.Item(k); if spDisp = nil then Continue; // QueryInterface determines if an interface can be used with an object spDisp.QueryInterface(iWebBrowser2, WB); if WB <> nil then begin WB.Document.QueryInterface(IHTMLDocument2, iDoc1); if iDoc1 <> nil then begin WB := ShellWindow.Item(k) as ShDocVW_TLB.IWebbrowser2; Document := WB.Document; // if GMX page... FillInGMXForms(WB, IDoc1, Document, AKennung, APasswort); end; { idoc <> nil } end; { wb <> nil } end; { for k } end; // Example 1: Navigate to the gmx homepage in the IE browser an login procedure TForm1.Button1Click(Sender: TObject); begin ShellExecute(Handle, 'open', 'http://www.gmx.ch' nil, nil, SW_SHOW); Sleep(2000); LoginGMX_IE('user@gmx.net', 'pswd'); end; // Example 2: navigate to the gmx homepage in the Webbrowser an login procedure TForm1.Button2Click(Sender: TObject); var IDoc1: IHTMLDocument2; Web: ShDocVW_TLB.IWebBrowser2; begin Webbrowser1.Navigate('http://www.gmx.ch'); while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages; Webbrowser1.Document.QueryInterface(IHTMLDocument2, iDoc1); Web := WebBrowser1.ControlInterface; FillInGMXForms(Web, iDoc1, Webbrowser1.Document, 'user@gmx.net', 'pswd'); end; ================================================================================== segue um código testado e funcionando do Forum DevMedia unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw, MSHTML, StdCtrls,shellapi, Buttons; type TForm1 = class(TForm) WebBrowser1: TWebBrowser; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} function ExecuteScript(doc: IHTMLDocument2; script: string; language: string): Boolean; var win: IHTMLWindow2; Olelanguage: Olevariant; begin if doc <> nil then begin try win := doc.parentWindow; if win <> nil then begin try Olelanguage := language; win.ExecScript(script, Olelanguage); finally win := nil; end; end; finally doc := nil; end; end; end; procedure FillInGMXForms(WB: ShDocVW.IWebbrowser2; IDoc1: IHTMLDocument2; Document: Variant; P_CNPJ : string); const IEFields: array[1..2] of string = ('INPUT', 'text'); var IEFieldsCounter: Integer; i: Integer; m: Integer; ovElements: OleVariant; begin if Pos('Receita Fazendaria', Document.Title) <> 0 then while WB.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages; // contar os elementos e interagir por suas formas IEFieldsCounter := 0; for m := 0 to Document.forms.Length - 1 do begin ovElements := Document.forms.Item(m).elements; // interagir por elemento try // preencher os campos if (ovElements.item(0).tagName = IEFields[1]) and (ovElements.item(0).type = IEFields[2]) then begin ovElements.item(0).Value := P_CNPJ; Inc(IEFieldsCounter); end; except // falha... end; end; // se o campo estiver preenchido. if IEFieldsCounter = 3 then ExecuteScript(iDoc1,'','JavaScript'); end; procedure TForm1.Button1Click(Sender: TObject); var IDoc1: IHTMLDocument2; Web: ShDocVW.IWebBrowser2; begin Webbrowser1.Navigate('http://www.receita.fazenda.gov.br/Aplicacoes/ATSPO/Certidao/CertInter/NICertidao.asp?tipo=1'); while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages; Webbrowser1.Document.QueryInterface(IHTMLDocument2, iDoc1); Web := WebBrowser1.ControlInterface; FillInGMXForms(Web, iDoc1, Webbrowser1.Document, '05.247.421/0001-35'); end; end. _________________ obrigado att Emerson =================================================================================== faça os testes para ver se resolve o seu problema abraço