-
Total de itens
9.657 -
Registro em
Tudo que Jhonas postou
-
Parece que voce esta com erros no carregamento das dlls do seu projeto Verifique novamente as configurações do seu Delphi Verifique se algum componente foi desinstalado e que fazia parte do projeto Verifique os caminhos das dlls na Library/Path Desmarque a opção de Debug do delphi e tente compilar novamente o projeto abraço
-
(Resolvido) Programa detectar alteração de um arquivo txt automaticamente
pergunta respondeu ao valSistemasDelphi de Jhonas em Delphi, Kylix
Se voce está pensando em usar esse arquivo como sistema de segurança, esquece. Primeiro que, para testar alguma alteração em um arquivo txt, voce tem que ter uma cópia desse arquivo em algum lugar ( pode até estar dentro do proprio programa ) ou guardar em algum lugar a data de criação desse arquivo. voce pode alterar os atributos de escrita, para não permitir que seja modificado ... entretanto se o usuario for um pouco esperto, vai alterar novamente esse atributo, se ele souber onde está o arquivo. https://www.google.com.br/search?source=hp&ei=vLr9W-i4A8SVwgSh34TgDg&q=alterar+atributos+de+arquivos&o que=alterar+atributos+de+&gs_l=psy-ab.1.0.0j0i22i30l9.1563.9470..15092...1.0..0.238.2365.15j5j2......0....1..gws-wiz.....0..0i131j0i131i10j0i10.mjCBXGMGE10 OBS: Se quiser algo mais eficiente, voce pode guardar uma informação em um registro do windows e depois ler novamente essa informação . https://www.google.com.br/search?ei=y7r9W7i7KsWNwwSJ0Y_gAg&q=gravar+e+ler+registro+do+windows&o que=gravar+e+ler+registro+do+windows&gs_l=psy-ab.3...567323.591171..592997...0.0..1.348.5198.9j18j7j2......0....1..gws-wiz.......0j0i71j0i67j0i131j0i10j0i10i30j0i13j0i13i30j0i8i13i30j33i160.TzsnkGpFxcg https://www.google.com.br/search?ei=Hb39W4j8MoKnwgTOuLbIDg&q=alterar+registro+do+windows+delphi&o que=gravar+e+ler+registro+do+windows&gs_l=psy-ab.1.0.0i71l8.0.0..9004...0.0..0.0.0.......0......gws-wiz.CXB-shUbJRk abraço -
(Resolvido) Aplicação Ativa Na Barra De Tarefas
pergunta respondeu ao valSistemasDelphi de Jhonas em Delphi, Kylix
Só complementando ... se alguém quiser usar um componente para minimizar a aplicação, veja esse link https://torry.net/vcl/forms/other/minmodal.zip ou use esse unit Minimizer; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,shellapi; const mymes=wm_user+1; type TMinimizer = class(TComponent) private Fdblclk:TNotifyevent; FRbuttondown:TNotifyevent; Fhandle:integer; FHint:string; { Private declarations } procedure WndProc(var Msg: TMessage); protected procedure SetValue(value:string); { Protected declarations } public procedure minimize; procedure remove; constructor create(aowner:TComponent);override; { Public declarations } published property LButtonDdblclick:TNotifyEvent read fdblclk write fdblclk ; property RButtonDown:TNotifyEvent read FRButtonDown write FRButtonDown; property Hint:string read Fhint write SetValue; { Published declarations } end; var x,hicon:integer; T:Tnotifyicondata; numara:TForm; procedure Register; implementation constructor TMinimizer.create(aowner:TComponent); begin inherited; t.cbSize:=sizeof(t); t.uID:=1; t.uFlags:=nif_message or nif_tip or nif_icon; t.uCallbackMessage:=mymes; fhint:='A hint!'; strpcopy(t.szTip,fhint); Fhandle:=AllocateHWnd(WndProc); t.Wnd:=Fhandle; end; procedure TMinimizer.WndProc(var Msg: TMessage); begin if msg.LParam= wm_lbuttondblclk then if assigned(fdblclk) then fdblclk(self); if msg.LParam= wm_rbuttondown then if assigned(frbuttondown) then frbuttondown(self); end; procedure TMinimizer.minimize; begin hicon:=LoadIcon(hinstance,'mainicon'); if hicon<>0 then BEGIN t.hIcon:=hicon; Shell_NotifyIcon(NIM_ADD ,@t); end else showmessage('Error in loading icon'); end; procedure TMinimizer.remove; begin Shell_NotifyIcon(NIM_delete,@t); end; procedure TMinimizer.SetValue(value:string); var i:integer; begin strpcopy(t.szTip,value); fhint:=value; Shell_NotifyIcon(NIM_Modify,@t); end; procedure Register; begin RegisterComponents('Samples', [TMinimizer]); end; end. abraço -
Amigo, isso varia muito, e depende muito da complexidade do programa Voce pode vender a licença de uso ( somente o executavel ) ou pode vender o direito de propriedade ( todos os códigos fontes do programa ) mas nesse ultimo caso, voce não poderá mais vender o programa para outra pessoa. Ultimamente, as empresas de softwares, não vendem mais a licença e sim alugam o software. Com isso eles mantem o usuario pagando todos os meses, garantindo uma renda maior e mais estavel. Se por exemplo voce fosse vender o executavel por R$ 3.000, nesse caso voce cobraria de aluguel R$ 300 por mes ( depois de um tempo voce ajusta o preço ) Vai ficar ganhando uma renda todo mes, e se o usuario não quiser mais, o programa para e não funciona mais. Para voce que ainda é inexperiente, cobre R$ 100,00 por modulo do seu programa.. depois com a experiencia aumente esse valor, de acordo com a complexidade e o tempo de serviço. Então vamos supor que seu programa deu 15 modulos, então seriam R$ 1.500 ou voce vende o executavel por esse valor ou cobra um aluguel de R$ 200,00 por mes abraço
-
(Resolvido) Atualização De Programas
pergunta respondeu ao valSistemasDelphi de Jhonas em Delphi, Kylix
voce pode fazer isso de 2 maneiras: 1 - mandar via email a atualização do seu programa 2 - criar um site e colocar nele a sua atualização e atravez do delphi, verificar a data e fazer um download do programa para a maquina do usuario exemplos: https://www.google.com.br/search?source=hp&ei=HPP7W4W2HsmisgGXqo3oAQ&q=atualização+automatica+de+programas+delphi+&btnK=Pesquisa+Google&o que=atualização+automatica+de+programas+delphi+&gs_l=psy-ab.3...1580.26534..26926...0.0..0.388.14087.3-43......0....1..gws-wiz.....0..0j0i131j0i10j0i22i30j0i5i30.k5NFXInXfvM abraço -
(Resolvido) Desenvolver para windows XP
pergunta respondeu ao valSistemasDelphi de Jhonas em Delphi, Kylix
Não foi só para o windows XP, foi tambem para o windows 7 que a Microsoft encerrou as atualizações. Isso é uma maneira de obrigar a voce migrar para o windows 10 ( cheio de segredos embutidos nele ) Todo executavel compilado a partir do delphi 7, roda no XP, VISTA, 2000, WIN 7, WIN 8 e WIN 10 abraço -
amigo, nesse código que voce colocou, está apenas gravando a data no arquivo NomeDoArq := 'D:\Programas Em Delphi\TV Online\help.txt'; se o arquivo ficar na mesma pasta do programa, então não vai servir para nada, pois poderá ser modificado pelo usuário. if (Vdt < now()) and (strtodate(linha) > Vdt) then Application.Terminate; voce não fez a leitura do arquivo ( help.txt ) , portanto a variavel linha não recebeu um valor, portanto é uma data invalida. use o ultimo código que te passei, e acrescente ao código ( além de terminar o programa o executavel ser apagado ) exemplos: https://www.google.com.br/search?source=hp&ei=EVb4W4CfDYGcwASGuYDoDA&q=deletar+o+executavel+delphi&btnK=Pesquisa+Google&o que=deletar+o+executavel+delphi&gs_l=psy-ab.3...3523.11316..11664...0.0..0.246.2951.9j17j1......0....1..gws-wiz.....0..0j0i131j0i22i30j33i22i29i30j33i21j33i160.3GJvpOD88zc abraço
-
o outro exemplo é uma preposição que confirma os primeiros códigos ? sim eu coloquei os códigos em botões para voce poder testar e ver que funciona mas esses códigos podem estar em uma procedure independente. Qual eu uso especificamente, por sequencia ? o primeiro código a ser executado é a gravação da data do micro, no arquivo que esta escondido. o segundo código é o que testa a data para fazer o programa parar de funcionar, se a data ultrapassou a data que voce definiu, ou se data do micro foi alterada. OBS: se quiser algo ainda mais simples, basta voce colocar o código abaixo em um campo que seja data e que necessariamente vai ter que receber a data atual do sistema. var a,b : TDate; begin a := date(); b := strtodate('30/11/2018'); if a >= b then begin MessageDlg('Esta é uma Vesão de Teste - Prazo Expirado!!! .' , mtInformation, [mbOk], 0); Application.Terminate; end; end; mas sugiro que voce tire a mensagem, e que o sistema simplesmente pare sem dar aviso algum ao usuário ... o mesmo vai pensar que houve algum problema com o programa e vai voltar a procurá-lo para saber o que houve. abraço
-
Nos videos que vi, instalavam com o arquivo .PAS, mais o que eu baixei não tem com essa extensão, ou não estou sabendo instalar o componente o arquivo do componente é mTimeStop.pas No delphi XE8 eu não sei como é feita a instalaçao. Se não quiser instalar o componente, a sugestão que eu te faço é: No seu form de Menu coloque uma variavel Global Tipo Date e coloque uma data que voce quer que seu programa expire ( pare de funcionar ) Var Vdt : TDate; Vdt := '25/12/2018'; Na propriedade OnActive do Form ou outra, voce testa essa variavel com a data do micro se for maior voce termina o programa: Application.Terminate; Se o usuário burlar, tipo trocando a data do computador ? nesse caso voce vai colocar a data em um arquivo texto ou com outra extensão, e esconde-lo num lugar onde tenha muitos arquivos ... tipo a pasta System32 do windows ou qualquer outra que dificulte a localização do arquivo .. e voce deve usar um nome de arquivo que não chame a atenção, como no exemplo que passei: var NomeDoLog: string; Arquivo: TextFile; begin NomeDoArq := 'c:\windows\system32\help.txt'; AssignFile(Arquivo, NomeDoArq); if FileExists(NomeDoArq) then Append(arquivo) { se existir, apenas adiciona linhas } else ReWrite(arquivo); { cria um novo se não existir } try WriteLn(arquivo, datetostr(now)); // data atual do micro finally CloseFile(arquivo) end; Veja que nesse exemplo: a cada vez que o programa for acionado ele vai gravar a data atual ... se o usuario alterar a data do micro, o seu programa vai comparar a data desse arquivo, com a data atual do micro. Se a data for diferente voce encerra o programa: procedure TForm1.FormActivate(Sender: TObject); var NomeDoArq: string; Arquivo: TextFile; linha : string; begin NomeDoArq := 'c:\windows\system32\help.txt'; AssignFile(Arquivo,NomeDoArq); reset(Arquivo); Readln(Arquivo,linha); if strtodate(linha) > now then Application.Terminate; // termina o programa se a data do micro for alterada CloseFile(arquivo); end; em um exemplo mais pratico para voce entender melhor: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } Vdt : TDate; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var NomeDoArq: string; Arquivo: TextFile; begin NomeDoArq := 'c:\windows\system32\help.txt'; AssignFile(Arquivo, NomeDoArq); if FileExists(NomeDoArq) then //Append(arquivo) { se existir, apenas adiciona linhas } //else ReWrite(arquivo); { cria um novo se não existir } try WriteLn(arquivo, datetostr(now)); // data atual do micro finally CloseFile(arquivo) end; end; procedure TForm1.Button2Click(Sender: TObject); var NomeDoArq: string; Arquivo: TextFile; linha : string; begin NomeDoArq := 'c:\windows\system32\help.txt'; AssignFile(Arquivo,NomeDoArq); reset(Arquivo); Readln(Arquivo,linha); if (Vdt < now()) and (strtodate(linha) > Vdt) then Application.Terminate; // termina o programa se a data do micro for alterada CloseFile(arquivo); end; procedure TForm1.FormActivate(Sender: TObject); begin Vdt := strtodate('25/11/2018'); end; end. Imagine que o Button1 é a rotina que voce vai gravar a data, toda vez que o programa for executado o Button2 é a rotina que vai verificar se a data de expiração do programa está de acordo com o previsto ou se a data do micro foi alterada OBS: se voce que guardar todas as datas e quiser testa-las, voce deve liberar essa linhas de código //Append(arquivo) { se existir, apenas adiciona linhas } //else mas tera que fazer a leitura de cada linha e testar se a data do micro não foi alterada para data anterior a instalação do programa ou a primeira vez que foi executado o programa. agora voce deve usar a sua imaginação e modificar o código de acordo com a sua necessidade. ( não estou usando nesse caso nenhum componente ) abraço
-
exemplo no forum https://www.scriptbrasil.com.br/forum/topic/170089-sistema-com-serial/ outros exemplos https://www.google.com.br/search?source=hp&ei=ltH1W6aNEIG-wAS857DQDA&q=programa+trial+delphi&btnK=Pesquisa+Google&o que=programa+trial+delphi&gs_l=psy-ab.3...3449.25243..26103...0.0..0.251.2416.8j11j2......0....1..gws-wiz.....0..0j0i131j0i22i30j0i22i10i30j0i19j0i8i7i30j0i13i30j0i13i5i30j0i8i13i30.HYTk8H8oFi4 OBS: No 1º e no 2º Link tem um exemplo e um componente para usar no delphi abraço
-
(Resolvido) Abrir Páginas no Delphi
pergunta respondeu ao valSistemasDelphi de Jhonas em Delphi, Kylix
Tem sim ... existe o componente Chromium para delphi XE8 veja nos links https://www.google.com.br/search?source=hp&ei=O1n0W_X0PIzCwATqn4qIDA&q=chromium+delphi+xe8&o que=chromium+para+delphi+xe8&gs_l=psy-ab.1.0.0i22i30.1602.16506..20019...0.0..1.299.3040.12j8j4....2..0....1..gws-wiz.....0..0j0i131j0i22i10i30.PQX23sWq8Uc abraço -
(Resolvido) SaveDialog e OpenDialog FIXOS
pergunta respondeu ao Arrais Júnior de Jhonas em Delphi, Kylix
Voce precisa listar todos os arquivos de musica em seu micro e depois clicar em um arquivo para reproduzir a musica ( pode usar o TMedia Player do delphi ) exemplo de como listar todos os arquivos https://forum.baboo.com.br/index.php?/topic/404499-localizar-arquivos-usando-delphi/ abraço -
(Resolvido) Abrir Páginas no Delphi
pergunta respondeu ao valSistemasDelphi de Jhonas em Delphi, Kylix
O WebBrowser utiliza o Internet Explorer. Se a versão do seu Internet Explorer não estiver atualizada, vai ocorrer erros outras opções: https://www.scriptbrasil.com.br/forum/topic/175034-alternativas-ao-webbrowser-do-delphi/ https://www.scriptbrasil.com.br/forum/topic/147402-componente-para-delphi-7-2009-usar-mozilla-firefox/ abraço -
ok... mas o teste era para verificar se o MonthCalendar aumenta junto com o Form se isso ocorreu, então voce tem a propriedade Font do MonthCalendar que pode ser alterado OBS: Voce tem outras oções de calendário no delphi ... já experiementou usar o TCalendar ou outros como o TMS Calendar para Delphi ? https://www.google.com.br/search?source=hp&ei=ksfhW93zHYi4wATEkpaYBQ&q=tms+calendar+delphi&o que=tms+calendar&gs_l=psy-ab.1.3.0i19k1l2j0i22i30i19k1l8.2240.8303.0.10001.12.12.0.0.0.0.130.1398.1j11.12.0....0...1c.1.64.psy-ab..0.12.1393...0j0i131k1j0i22i30k1j0i13k1j0i13i30k1.0.gpQY3-p3F3o abraço
-
Problema com campo Lookup entre ClientDataSet e ADODataSet
pergunta respondeu ao danielrgoes de Jhonas em Delphi, Kylix
Amigo, a muito tempo atrás ( 2009 ) fiz algo parecido com o que voce esta querendo veja esse link veja o que consegue fazer outra sugestão possivel https://stackoverflow.com/questions/32916374/add-dblookupcombobox-to-delphi-dbgrid/32935706 OBS: Não sei vai funcionar, mas tente isso procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); begin DBGrid2.SelectedIndex := DBGrid1.SelectedIndex; DBGrid2.DataSource := DBGrid1.DataSource; end; abraço -
Problema com campo Lookup entre ClientDataSet e ADODataSet
pergunta respondeu ao danielrgoes de Jhonas em Delphi, Kylix
Acho que, o Dbgrid não aceita muito bem voce trabalhar com com bancos diferentes. entretanto, acho que voce pode colocar 2 Dbgrids : um para o ADODataSet e o outro para o ClientDataSet ( lado a lado ) e durante a navegação do cursor em um, automaticamente moveria o cursor no outro. Já vi acontecer esses problemas com Bancos diferentes, mesmo porque isso não é usual. Porque voce não migra as tabelas de um banco para o outro e fica tudo num só ? abraço -
ok... vou te passar esse exemplo, para teste: em um form coloque o componente MonthCalendar e ajuste o form para ficar com as bordas um pouco maiores que as bordas do MonthCalendar aplique esse código e me diga o resultado unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls; type TForm1 = class(TForm) MonthCalendar1: TMonthCalendar; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; const sw : longint = 500; implementation {$R *.dfm} uses TypInfo; procedure TForm1.FormCreate(Sender: TObject); var i , w : integer; begin w := width; Scaled := true; if (Screen.width <> sw) then Scaleby(screen.width,sw); for i := ComponentCount-1 downto 0 do with Components[i] do begin if GetPropInfo(ClassInfo, 'Font') <> nil then Font.Size := (width div w) * font.Size; end; end; end. abraço
-
tente esse link http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/!!MEMBEROVERVIEW_ComCtrls_TMonthCalendar.html ou tente ScaleBy(200, 100); MonthCalendar1.RecreateWnd; SetWindowTheme(MonthCalendar1.Handle, '', ''); abraço
-
Problema com campo Lookup entre ClientDataSet e ADODataSet
pergunta respondeu ao danielrgoes de Jhonas em Delphi, Kylix
Siga a dica desse link https://www.mail-archive.com/delphi-br@yahoogrupos.com.br/msg07996.html caso ainda esteja em dúvida.. veja esse exemplo https://www.thoughtco.com/place-dblookupcombobox-into-dbgrid-4077834 abraço -
Problema com campo Lookup entre ClientDataSet e ADODataSet
pergunta respondeu ao danielrgoes de Jhonas em Delphi, Kylix
Veja nesses links .... tem muitos exemplos https://www.google.com.br/search?source=hp&ei=-fbaW6yPLdOuwgTXubG4Bg&q=criar+campo+lookup+delphi&o que=criar+campo+lo&gs_l=psy-ab.1.0.0.1700.5012.0.7285.14.14.0.0.0.0.174.1627.0j13.13.0....0...1c.1.64.psy-ab..1.13.1623...0i131k1j0i3k1j0i22i30k1.0.ljS_G_mky4g abraço -
Problema com campo Lookup entre ClientDataSet e ADODataSet
pergunta respondeu ao danielrgoes de Jhonas em Delphi, Kylix
Use o componente DBLookupComboBox Propriedades: Configurar Tabela1 ListSource => coloque o DataSource da Tabela1 que voce quer pesquisar ListField => coloque o nome do campo de pesquisa KeyField => coloque o nome do campo chave Configurar Tabela2 DataField => coloque o nome do campo da Tabela2 que vai receber o resultado da Tabela1 DataSource => coloque o DataSource da Tabela2 abraço -
(Resolvido) Navegar com o cursor entre os botões em uma Toolbar
pergunta respondeu ao Reginaldo Rodrigues de Jhonas em Delphi, Kylix
Se o componente ToolBar, tivesse um evento OnKeyPress daria para fazer isso abraço -
zerar contador da impressora samsung 4070
pergunta respondeu ao Jhonatan Oliveira de Jhonas em Tutoriais e Artigos
veja nesses links https://www.google.com.br/search?source=hp&ei=w3HOW77CFcHBwATXnZ3gBQ&q=reset+impressora+samsung+4070&o que=reset+impressora+sansung&gs_l=psy-ab.1.4.0i13k1l10.1087.7004.0.10229.24.16.0.8.8.0.140.1599.2j12.14.0....0...1c.1.64.psy-ab..2.22.1699...0j0i131k1j33i21k1.0.eQ4lyxlZfrs abraço -
exemplo: se voce estiver usando um componente TQuery coloque na SQL essa sentença select * from tabela where codigo = 1 onde tabela é o nome da sua tabela isso vai trazer para o dbgrid todos os registros com o código 1 abraço
-
(Resolvido) imagens usadas como cartas, para serem sorteadas
uma questão respondeu Jhonas em Delphi, Kylix
neste link voce vai encontrar o codigo fonte completo de um jogo de cartas tipo 21 que tem as rotinas que voce esta querendo usar. http://www.planetadelphi.com.br/downloading/4567 abraço