Ir para conteúdo
Fórum Script Brasil

Jhonas

Monitores
  • Total de itens

    9.657
  • Registro em

Tudo que Jhonas postou

  1. veja http://www.planetadelphi.com.br/dica/6588/...para-relatorios a idéia é a mesma abraço
  2. tente http://scriptbrasil.com.br/forum/index.php...lite=webbrowser se o link estiver quebrado, faça uma pesquisa pela palavra webbrowser abraço
  3. veja http://www.cryer.co.uk/brian/delphi/twebbr...r_oleobject.htm link correto: http://www.cryer.co.uk/brian/delphi/twebbrowser/twebbrowser_oleobject.htm abraço
  4. basta limitar o numero de caracteres que vai mostrar a data de duplo clique do mouse no ClientDataSet1 e na janelinha que aparece, voce clica no campo DATA e no object inspector voce altera a propriedade EditMask para !99/99/0000;1;_ abraço
  5. exemplo: function Executa (Arquivo : String; Estado : Integer) : Integer; var Programa : array [0..512] of char; CurDir : array [0..255] of char; WorkDir : String; StartupInfo : TStartupInfo; ProcessInfo : TProcessInformation; begin StrPCopy (Programa, Arquivo); GetDir (0, WorkDir); StrPCopy (CurDir, WorkDir); FillChar (StartupInfo, Sizeof (StartupInfo), #0); StartupInfo.cb := sizeof (StartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW; StartupInfo.wShowWindow := Estado; if not CreateProcess (nil, Programa, nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then Result := -1 else begin WaitForSingleObject (ProcessInfo.hProcess, Infinite); //GetExitCodeProcess (ProcessInfo.hProcess, Result); end; end; procedure TForm1.Button1Click(Sender: TObject); begin Executa ('calc.exe' ,SW_HIDE); // chama calculadora do windows e espera fechar close; // fecha o programa end; abraço
  6. No final do processamento use: Query1.Active := false; ClientDataSet1.Active := false; Query1.Active := true; ClientDataSet1.Active := true; os registros serão atualizados no dbgrid o campo tem que ser tipo Data e não DataTime abraço
  7. OK ... então voce vai penar um pouquinho ... rs quando quiser procurar alguma coisa dentro do programa va em: Menu > Search > Find in files... digite a palavra ( qryConfiguracao ) que deseja procurar... na lista vai aparecer todos os lugares no código onde aparecem essa palavra. depois é so clicar em um dos itens da lista, e o cursor irá parar exatamente onde voce quer chegar abraço
  8. Paulo Nobre... o nosso amigo Progr'amador fez o que eu venho desejando a tempos ... mais participação dos nossos colegas no forum, mas a maioria prefere somente ver as respostas, do que tentar, dentro de seus conhecimenos ajudar a outros. OBS: o código que te passei para testar se o usuario se logou como administrador ou não deve ser o seu ponto de partida ( muitas vezes uma mudança radical na sua lógica resolve o problema ) abraço
  9. os componentes que voce deve usar são: ADOQuery1 , DataSetProvider1, ClientDataSet1 e DataSource1 DataSetProvider1 ligado ao ADOQuery1 pela propriedade DataSet. ClientDataSet1 ligado ao DataSetProvider1 pela propriedade ProviderName. DataSource1 ligado ao ClientDataSet1 pela propriedade DataSet. NOTA: no ClientDataSet1, não é preciso criar os campos .. de duplo clique do mouse no componente e na janelinha que aparece, voce clica com o botão direito do mouse e clica em Add all fields. abraço
  10. no banco de dados, a definição desse campo é outra. voce pode alterar na propria tabela o registro. OBS: se voce é iniciante do delphi, porque pegou um código fonte de outro ? abraço
  11. experimente: procedure TFrmTelaIni.Button1Click(Sender: TObject); function TerminateThread(hThread: THandle; dwExitCode: DWORD); var sMSN : TShowMSN; begin sMSN := TShowMsn.Create(True); sMSN.FreeOnTerminate := True; Priority := TpLower; if Terminated then TerminateThread(sMSN.Handle, 0); sMSN.Suspend; sMSN.Resume; end; veja: http://users.skynet.be/bk296578/Dro/Delphi...tm#_Toc24549110 http://books.google.com.br/books?id=9JzBn4...phi&f=false abraço
  12. como um programador que gosta de desafios, se eu falar ( escrever ), qual será o seu desafio ? rs abraço
  13. baixei seu código, mas não consegui rodar devido a algumas units que não tenho e voce não colocou junto com o código. entretanto fazendo uma breve analise, tudo indica que ao fechar o seu form, a Thread ainda esta sendo executada, ocorrrendo o erro de mémoria. coloque um break point no código: sMSN := TShowMsn.Create(True); e siga com o debuger do delphi para ver onde esta ocorrendo o problema ( utilize a tecla F7 e não a F8 ) abraço
  14. Amigo, erro de endereço de memória, somente com o código para descobrir o problema abraço
  15. Você quer dizer que com o meu código jamais conseguirei alcançar meus objetivos? Só baixando o controle da UAC para o minimo? se voce leu o artigo, isso foi feito justamente para evitar que programas com virus sejam executados no micro sem seu consentimento ... pois muitos programas de virus utilizam o registry do windows. Então no meu caso quando coloquei: PrimeiraVez:=False; ela não foi inicializada? Achei que variáveis do tipo Boolean poderiam ser inicializado com false ou true. e podem ... as mensagens de Hints e Warnings são mensagens de alerta que podem ser mostradas ou não ... mas não interferem na execução do programa http://www.delphibasics.co.uk/RTL.asp?Name=$Hints http://www.delphibasics.co.uk/RTL.asp?Name=$Warnings Entendi a explicação, não sabia deste detalhe. É o mal de quem quer se meter a programar sem saber o básico primeiro. isso voce aprende no curso básico de delphi .. rs Você quer dizer que todo o código que escrevi no OnCreat deveria estar em outro lugar? Você não respondeu se o que eu coloquei no inicio do meu post anterior tem algum sentido? Parece que voce descobriu onde o tesouro está enterrado ... rs se eu quero executar algo, mesmo antes do programa criar o meu primeiro form, o lugar é lá Project > View Source mas voce deve tomar alguns cuidados nessa área ok ? abraço
  16. Na linha onde esta o QTDLINHASE esta assim: qryConfiguracaoQTDLINHASE: TSmallintField; Esse erro refere-se ao tipo do campo 'QTDLINHASE' que esta esperando o tipo inteiro pequeno ( TSmallintField ), mas atualmente está definido como BCD ( o bcp na verdade é um tipo de double - float ) voce pode fazer uma conversão de tipos ... ou dar duplo clique na 'qryConfiguracao' deletar todos os campos e adiciona-los novamente, para que o tipo atual fique como definição. abraço
  17. Erro de DBX: Driver não pôde ser inicializado corretamente. Biblioteca cliente pode estar faltando, não instalou corretamente, versão errada, ou pode estar faltando o caminho para o driver no sistema. procure pelo driver do DBExpress na sua maquina e copie para a outra ... se não tente: http://www.devart.com/dbx/sqlserver/ abraço
  18. considerações: converta BMP para JPG ...isso reduz ainda mais o tamanho da figura reveja a definição para os campos BLOB, voce pode limitar o seu tamanho faça acesso a tabela com filmes somente depois do programa ser carregado, de preferencia no clique do item do Menu voce pode usar um componente Gauge no lugar do ProgressBar, ele mostrara a porcentagem de carregamento no exemplo abaixo é só substituir a Query pela AdoQuery procedure TForm1.Button1Click(Sender: TObject); begin Query1.Open;{ abre a table query que seja} Gauge1.MaxValue:=query1.RecordCount; {diz que o valor max do gauge é o valor de regitrs a serem processados pela na tabela} Query1.First; {posiciona no inicio da tabela} if not Query1.Eof then {enquanto a tabela não estiver, vai executar o codigo abaixo } repeat { seus comandos para a tabela } Gauge1.Progress:=Gauge1.Progress + 1; if Gauge1.Progress = Gauge1.MaxValue then begin showmessage('Processo Terminado!'); end; Query1.Next { move para o próximo registro} until Query1.Eof; {finaliza o programa ao final da tabela} end; OBS: No forum tem varios posts sobre isso .... pesquise pela palavra Gauge ou ProgressBar abraço
  19. 1)Porque o código faz tudo que preciso no XP e não no seven? 2) No seven ele chega a criar o arquivo ini, mas não mostra a mensagem que o windows7 está instalado é win7. Estranho é que executando como administrador( via botão direito do mouse), embora já esteja logado como administrador,até porque sou o únco usuário da máquina, o código funciona como gostaria. Você saberia dizer porque acontece isso. Se o código estivesse errado não funcionaria de maneira nenhuma você não acha? porque o Winsdows Vista e Win 7 passaram a ter o controle UAC, no XP não tem http://todoespacoonline.com/post.php?id=143 3) Na hora de compilar aparece um hint dizendo que a variável "PrimeiraVez" nunca foi usada. Acho que minha experiencia é muito pouca, porém achei que ela estava sendo usada sim, tanto que depois que o arquivo ini é criado a mensagem de que o windows7 está insatalado não aparece mais(pois ela assume o valor false). Tem algum erro com ela?? Essa mensagem aparece se a variavel foi declarada, mas não foi inicializada exe: Var Num : Integer; // variavel num declarada Num := 0; // variavel num inicializada 4) Agora uma dúvida de lógica de programação; qual a diferença entre If (Encerra = True) and (PrimeiraVez = True) then e...... If Encerra = True and PrimeiraVez = True then? o primeiro é o que dá certo, pois as variáveis chegando como false e false não rodam o código, mas na segunda as variaveis chegando com false e false o codigo dentro do if roda. Não entendi. lógica elementar: numa operação matematica o que é executado primeiro ? lembra da prioridade ( ou hierarquia ) para os operadores aritméticos ? primeiro a divisão, depois multiplicação, depois soma e depois subtração ..... mas se colocar parenteses ( ... ) o que será executado primeiro é o que estará dentro do parenteses os resultados seriam diferentes =========================================== então nesse caso: If (Encerra = True) and (PrimeiraVez = True) then os valores das 2 sentenças já são testados antes do operador and nesse caso If Encerra = True and PrimeiraVez = True then o operador and é executado antes da segunda sentença ... seria o mesmo que If Encerra = True or PrimeiraVez = True then se não usar os parenteses .. entendeu ??? ============================================= OBS: A sua abordagem esta no lugar errado procedure TfrmPrincipalDD.FormCreate(Sender: TObject); existe um código que é rodado antes da criação de qualquer form do seu programa, ou seja, é o código que vai criar o seu form e não é na propriedade OnCreate dele ( Form ) e como voce gosta de desafio, tente descobrir onde voce encontra esse código... rs isso te dará outra perspectiva sobre programação abraço
  20. veja http://www.google.com.br/search?hl=pt-BR&a...0l1l321l621l3-2 abraço
  21. vamos fazer algumas modificações: primeiro voce deve criar uma tabela que tenha os seguintes campos: Parcelas -> tipo string 10 Valor -> tipo float ( 10, 2 ) Data -> tipo data depois voce cria a instrução SQL na query1 Select * from MinhaTabela para acessar o banco de dados voce vai usar TQuery, TDataSetProvider, TClientDataSet e um DataSource faça a ligação entre os componentes depois de clique duplo no componente ClientDataSet1 para adicionar os campos veja a alteração no código: var valor : real; venc, parcelas, i : integer; s : string; begin valor := 180; Venc := 21; parcelas := 10; memo1.Clear; Query1.Active := false; ClientDataSet1.Active := false; Query1.Active := true; ClientDataSet1.Active := true; for i := 1 to parcelas do begin ClientDataSet1.Last; // ultimo registro ClientDataSet1.Append; // adicionar novo registro ClientDataSet1.Edit; // editar registro {s := 'Parcela: '+ inttostr(i) +'/'+inttostr(Qtde_parc)+ ' - Valor: R$ '+ formatfloat('0.00',valor) + ' - Vencimento: ' + inttostr(venc) + copy(datetostr(now+(30*i)),3,8); memo1.Lines.Append(s);} // Atribuir os valores das variaveis aos campos do registro na tabela ClientDataSet1parcelas.Value := inttostr(i) +'/'+inttostr(parcelas); // campo String ClientDataSet1Valor.Value := valor; // campo Float ClientDataSet1Vencimento.Value := now+(30*i); // campo Data ClientDataSet1.Post; // salvar o registro ClientDataSet1.ApplyUpdates(-1);// atualizar o registro end; end; OBS: isso é só um exemplo, entendendo o funcionamento, depois voce faz uma adaptação ao seu código abraço
  22. message 'qryConfiguracao: Type mismatch for field 'QTDLINHASE', expecting: Smallint actual: BCD Tipo incompativel para o campo 'QTDLINHASE', esperando: Smallint, atual BCD Esse erro refere-se ao tipo do campo 'QTDLINHASE' que esta esperando o tipo inteiro pequeno, mas atualmente está definido como BCD ( o bcp na verdade é um tipo de double - float ) voce pode fazer uma conversão de tipos ... ou dar duplo clique na 'qryConfiguracao' deletar todos os campos e adiciona-los novamente. http://scriptbrasil.com.br/forum/index.php?showtopic=151141 abraço
  23. Erro de DBX: Driver não pôde ser inicializado corretamente. Biblioteca cliente pode estar faltando, não instalou corretamente, versão errada, ou pode estar faltando o caminho para o driver no sistema. veja http://www.devmedia.com.br/post-6954-Conex...-dbexpress.html abraço
  24. Amigo, colocar os dados em um banco de dados é muito simples exemplo: procedure TForm1.Button1Click(Sender: TObject); var valor : real; venc, qtde_parc, i : integer; s : string; begin valor := 180; Venc := 21; Qtde_parc := 10; memo1.Clear; Query1.Active := false; ClientDataSet1.Active := false; Query1.Active := true; ClientDataSet1.Active := true; for i := 1 to Qtde_parc do begin Query1.Last; // ultimo registro Query1.Append; // adicionar novo registro Query1.Edit; // editar registro {s := 'Parcela: '+ inttostr(i) +'/'+inttostr(Qtde_parc)+ ' - Valor: R$ '+ formatfloat('0.00',valor) + ' - Vencimento: ' + inttostr(venc) + copy(datetostr(now+(30*i)),3,8); memo1.Lines.Append(s);} // Atribuir os valores das variaveis aos campos do registro na tabela Query1Parecela.Value := inttostr(i) +'/'+inttostr(Qtde_parc); // campo String Query1Valor.Value := valor; // campo Float Query1Vencimento.Value := now+(30*i); // campo Data Query1.Post; // salvar o registro Query1.ApplyUpdates; // atualizar o registro end; end; OBS: Tente fazer... abraço
  25. Tenha sempre o habito de procurar as respostas no help do delphi, para poder encontrar a solução procedure TForm1.BitBtn1Click(Sender: TObject); var i, x,y,w : integer; begin x := 0; y:= 0; w := 0; for i := 0 to Panel1.ControlCount-1 do // vai listar todos os componentes dentro do Panel begin if Panel1.Controls[i] is TImage then inc(x); if Panel1.Controls[i] is TButton then inc(y); if Panel1.Controls[i] is TEdit then inc(w); end; showmessage('tem '+inttostr(x)+ ' componente(s) TImage no Panel1'); showmessage('tem '+inttostr(y)+ ' componente(s) TButton no Panel1'); showmessage('tem '+inttostr(w)+ ' componente(s) TEdit no Panel1'); end; abraço
×
×
  • Criar Novo...