Ir para conteúdo
Fórum Script Brasil

Douglas Soares

Veteranos
  • Total de itens

    864
  • Registro em

  • Última visita

Tudo que Douglas Soares postou

  1. Bom Dia Pessoal, estou tendo um dificuldade boba com gauge, pois não queria fazer uma gambiarra, quero fazer o metodo correto.... Tenho um thread de IdFtp, porem na thread não tem como eu colocar idftp on work, nem onworkbegin, nada disso da na thread, pelo menos eu acho!, então como eu faria por exemplo pra gauge ir andando conforme a thread é percorrida, não quero fazer na mao, Gauge1.addProgress(1);, assim não por favor! eheh!, então eu queria que tivesse tipo um while, while not minhathread.eof do begin, kkkkk, assim ficaria facil, eheeheh, então...... Alguma Ideia??? Abraços
  2. ae já consegui!, mandei pro listbox dai la eu dei sorted = true, ele organizou, dai eu peguei e fiz assim: if listbox1.items.count > 2 then idftp1.delete(listbox1.items.strings[0]); dai deu certinho, eheheh obrigado !
  3. ehehe!, creio que todo mundo quer isso, se até o Windows é crackeado, quem dera nossos humildes programas :blush: , rsrs, então você pode tentar alguns componentes ou programas para criptografar suas fontes, assim vai dificultar a "Engenharia Reversa" segue alguns links. http://www.istf.com.br/vb/desenvolvimento-...ia-reversa.html http://www.istf.com.br/vb/desenvolvimento-...ia-reversa.html http://www.oreans.com/themida.php Espero ter ajudado Abraços!
  4. Olá pessoal, tenho um programa que envia arquivos de backup para um ftp, e o nome deses arquivos são sempre a data do dia + backup.zip, então o limite de backups é 2 que podem estar no ftp, dai eu pretendo fazer o seguinte: Quando tiver 2 backups já eu vo carregar o terceiro, e dps eu mando pra um listbox todos os arquivos no diretorio fdp, em seguida eu queria saber qual desses 3 arquivos tem a menor data no nome do arquivo.... sabendo disse eu irei deletar do ftp e boa... ehehee, por favor me deem uma luz! Abraços
  5. :wacko: Nossa, depois de algumas compilações, num é que ficou certinho agora... uhuhu acho q é esse delphi maluco, huahuhaua, mas agora ta certinho cara, mt obrigado, agora na parte da MSG que aparece, "O Programa já está em execução nessa Maquina", quando eu uso o parametro -reiniciar, eu queria que reiniciasse direto, sem eu ter q apertar ok na MSG. abraços
  6. então como disse na msg anterior, ehehe só quando clico com o botão direito do mouse, dai dps clico no executavel.... dai ele restaura do tray..... Abraços...
  7. então, tentei dos dois métodos e não funcionou. Eu abro o Sistema, e coloco ele no tray, dai eu vou e tento abrir dinovo, ele só da a msg e não restaura... porem quando eu clico com o botao direito no icone do tray para ser exibido o popup menu, dai eu clico fora dele, e vou tentar abrir o sistema dinovo, e ele vai! ehehe! Abraços
  8. Clique no Componente StatusBar, vá nas propriedades ou aperet F11, clique na opção Font..., e coloque na cor desejada, eheh Abraços
  9. Churc, cara, eu te amo :wub: , huahuahua, você sabe tudo meoo, mt obrigado mesmo.......... "Churc" nossa esse cara deve ta querendo alguma coisa! é, eheheheh eu to mesmo, huahauhua, agora reinicia certinho!. O problema é outro, mas não tão importante. lembra das funções para reabrir se já ta aberto e tals, se tiver no tray ele volta e belezera?, entãoooo, quando ele ta minimizado e eu clico no executavel para tentar abrir denovo, dai o programa é puxado pra frente, até ai ta tudo lindo :blink: , porem quando eu levo o programa para o tray, e entro no executavel... ele não ta restaurando de la..., dai quando eu clico com o botão direito do mouse no trayicon do programa para abrir o popup menu e depois clico fora e vou abrir o executavel... dai bixo restaura do tray certinho :wacko: , uhuhuhuhuu, o q eu posso fazer Mestre? huahuhua Vlw pela ajuda q já foi dada :rolleyes:
  10. Ae Jhonas, eu uso o inno setup com o ISTool, eheheh, q é uma interface gráfica, você não teria o link no ISTool ou de um similar? eheh Muito obrigado pela atenção!
  11. Então, essa parte do ShowMessage eu vi mesmo, huahuahua, elas ficam meio doidas, nem quando num é pra eles entrarem elas vem doidonas e de tamanhos malucos, huahuahua, mas beleza, ta tudo OK Muito Obrigado!
  12. Amigão, mt obrigado consegui, o problema era o download mesmo, rsrs, então é que me falaram antes q no Execute não podia colocar nome de forms, então o download deixei lá e o resto fui adaptando, ehehe, olha o código ae: unit DownloadThread; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, jpeg, ExtCtrls, Gauges, ShellApi, WinSock, registry, Grids, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdFTP, WinInet, ComCtrls, IdFTPList, DB, DBClient, DBGrids; type TDownloadThread = class(TThread) private { Private declarations } protected procedure Execute; override; procedure EnumFiles(szPath, szAllowedExt: String; iAttributes: Integer; Buffer: TStrings; bClear, bIncludePath: Boolean); StdCall; procedure DownloadFTP(Host, Username, Password, RemoteDir, LocalDir: string); procedure ApagaPasta(pasta: string); procedure ClearMemos; procedure Principal; procedure Final; procedure ProcessoGeral; end; implementation uses cadClientes; { TDownloadThread } procedure TDownloadThread.ApagaPasta(pasta: string); var Arquivo: TSearchRec; begin if FindFirst(pasta+'*.*', 0, Arquivo) = 0 then begin repeat DeleteFile(pasta+Arquivo.Name); until FindNext(Arquivo) <> 0; FindClose(Arquivo); end; end; procedure TDownloadThread.EnumFiles(szPath, szAllowedExt: String; iAttributes: Integer; Buffer: TStrings; bClear, bIncludePath: Boolean); StdCall; var res: TSearchRec; szBuff: String; begin if (bClear) then Buffer.Clear; szPath := IncludeTrailingBackslash(szPath); if (FindFirst(szPath + szAllowedExt, iAttributes, res) = 0) then begin repeat szBuff := res.Name; if ((szBuff <> '.') and (szBuff <> '..')) then if (bIncludePath) then Buffer.Add(szPath + szBuff) else Buffer.Add(szBuff); until FindNext(res) <> 0; FindClose(res); end; end; procedure TDownloadThread.DownloadFTP(Host, Username, Password, RemoteDir, LocalDir: string); procedure DownloadDirectory(idFTP: TidFTP; Directory: string = ''); var i: integer; DirListing: TStringList; IdFTPListItems: TIdFTPListItems; begin // update the GUI Application.ProcessMessages(); // avoid trying to move to and copy current or parent dir if (Directory = '.') or (Directory = '..') then exit; if Directory <> '' then try // change to directory remotely idFTP.ChangeDir(Directory); // create and change to directory locally CreateDir(Directory); SetCurrentDir(Directory); Directory := IncludeTrailingPathDelimiter(Directory); except exit; end; DirListing := TStringList.Create(); IdFTPListItems := TIdFTPListItems.Create(); try idFTP.List(DirListing); IdFTPListItems.LoadList(DirListing); for i := 0 to IdFTPListItems.Count - 1 do begin case IdFTPListItems[i].ItemType of ditDirectory: begin DownloadDirectory(idFTP, IdFTPListItems[i].FileName); end; ditFile: begin idFTP.Get(IdFTPListItems[i].FileName, IdFTPListItems[i].FileName, true); end; end; end; if Directory <> '' then begin idFTP.ChangeDirUp(); SetCurrentDir('..'); end; finally DirListing.Free(); IdFTPListItems.Free(); end; end; var idFTP: TIdFTP; begin idFTP := TIdFTP.Create(nil); try idFTP.Host := Host; idFTP.Username := Username; idFTP.Password := Password; idFTP.Connect(); idFTP.ChangeDir(RemoteDir); ForceDirectories(LocalDir); SetCurrentDir(LocalDir); DownloadDirectory(idFTP); idFTP.Quit(); finally idFTP.Free(); end; end; procedure TDownloadThread.ClearMemos; var local : string; begin local := ExtractFilePath(Application.ExeName) + '\logs\'; ApagaPasta(local); frmCadClientes.ListBox1.Clear; end; procedure TDownloadThread.Principal; begin if frmCadClientes.cdsClientesOn.Active then while not frmCadClientes.cdsClientesOn.Eof do frmCadClientes.cdsClientesOn.Delete else frmCadClientes.cdsClientesOn.CreateDataSet; frmCadClientes.cdsClientesOn.Open; end; procedure TDownloadThread.Final; begin FrmCadClientes.lbltotalc.Caption := 'No Momento Existem ' + IntToStr(frmCadClientes.ListBox1.Items.Count) + ' Igrejas Utilizando nossos Sistemas'; if frmCadClientes.cdsClientesOn.IsEmpty then ShowMessage('No Momento ninguém está Utilizando Nossos Sistemas!'); end; procedure TDownloadThread.ProcessoGeral; var local : string; f:TextFile; linha:String; ii:integer; nomedolog : string; begin local := ExtractFilePath(Application.ExeName) + '\logs\'; frmCadClientes.ListBox1.ItemHeight := 0; for ii:=0 to FrmCadClientes.ListBox1.Items.Count-1 do begin try nomedolog := FrmCadClientes.ListBox1.Items.Strings[ii]; AssignFile(f,local + nomedolog); Reset(f); Readln(f,linha); linha := Trim(linha); if linha <> '' then begin frmCadClientes.cdsClientesOn.Append; frmCadClientes.cdsClientesOn.FieldByName('CODIGO').Value := StrToInt(linha); Readln(f,linha); frmCadClientes.cdsClientesOn.FieldByName('IGREJA').Text := linha; Readln(f,linha); frmCadClientes.cdsClientesOn.FieldByName('CIDADE').Text := linha; Readln(f,linha); frmCadClientes.cdsClientesOn.FieldByName('ESTADO').Text := linha; Readln(f,linha); frmCadClientes.cdsClientesOn.FieldByName('HORA').Text := linha; Readln(f,linha); frmCadClientes.cdsClientesOn.FieldByName('VERSAO').Text := linha; Readln(f,linha); frmCadClientes.cdsClientesOn.FieldByName('SISTEMA').Text := linha; Readln(f,linha); frmCadClientes.cdsClientesOn.FieldByName('DATA').Text := linha; frmCadClientes.cdsClientesOn.Post; end; finally Closefile(f); end; end; end; procedure TDownloadThread.Execute; var local : string; begin Synchronize(ClearMemos); local := ExtractFilePath(Application.ExeName) + '\logs\'; Synchronize(Principal); if not DirectoryExists(local) then ForceDirectories(local); DownloadFTP('ftp.meusite.com.br', 'usuario', 'minhasenha', 'pastaremota', pastalocal); EnumFiles(local, '*.log', faanyfile - faDirectory, FrmCadClientes.Listbox1.Items, False, False); Synchronize(ProcessoGeral); Synchronize(Final); end; end. Muuuuuito Obrigado!
  13. eheheh, coloquei mas não é esse ainda o ponto. eu quero que quando eu clique no botão, ele deixe eu continuar mechendo no programa, sem ter q esperar ele fazer o processo da thread... essa é a questão! Vlw
  14. E ae Pessoal, fiz uma thread no intuito de destravar o programa... rsrs... porem ela ta travando tudo.... não consigo mecher em mais nada quando uso ela... alguém pode me ajudar?, ta ai o código da bixona! unit DownloadThread; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, jpeg, ExtCtrls, Gauges, ShellApi, WinSock, registry, Grids, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdFTP, WinInet, ComCtrls, IdFTPList, DB, DBClient, DBGrids; type TDownloadThread = class(TThread) private { Private declarations } protected procedure Execute; override; procedure EnumFiles(szPath, szAllowedExt: String; iAttributes: Integer; Buffer: TStrings; bClear, bIncludePath: Boolean); StdCall; procedure DownloadFTP(Host, Username, Password, RemoteDir, LocalDir: string); procedure ApagaPasta(pasta: string); procedure ClearMemos; procedure Principal; end; implementation uses cadClientes; { TDownloadThread } procedure TDownloadThread.ApagaPasta(pasta: string); var Arquivo: TSearchRec; begin if FindFirst(pasta+'*.*', 0, Arquivo) = 0 then begin repeat DeleteFile(pasta+Arquivo.Name); until FindNext(Arquivo) <> 0; FindClose(Arquivo); end; end; procedure TDownloadThread.EnumFiles(szPath, szAllowedExt: String; iAttributes: Integer; Buffer: TStrings; bClear, bIncludePath: Boolean); StdCall; var res: TSearchRec; szBuff: String; begin if (bClear) then Buffer.Clear; szPath := IncludeTrailingBackslash(szPath); if (FindFirst(szPath + szAllowedExt, iAttributes, res) = 0) then begin repeat szBuff := res.Name; if ((szBuff <> '.') and (szBuff <> '..')) then if (bIncludePath) then Buffer.Add(szPath + szBuff) else Buffer.Add(szBuff); until FindNext(res) <> 0; FindClose(res); end; end; procedure TDownloadThread.DownloadFTP(Host, Username, Password, RemoteDir, LocalDir: string); procedure DownloadDirectory(idFTP: TidFTP; Directory: string = ''); var i: integer; DirListing: TStringList; IdFTPListItems: TIdFTPListItems; begin // update the GUI Application.ProcessMessages(); // avoid trying to move to and copy current or parent dir if (Directory = '.') or (Directory = '..') then exit; if Directory <> '' then try // change to directory remotely idFTP.ChangeDir(Directory); // create and change to directory locally CreateDir(Directory); SetCurrentDir(Directory); Directory := IncludeTrailingPathDelimiter(Directory); except exit; end; DirListing := TStringList.Create(); IdFTPListItems := TIdFTPListItems.Create(); try idFTP.List(DirListing); IdFTPListItems.LoadList(DirListing); for i := 0 to IdFTPListItems.Count - 1 do begin case IdFTPListItems[i].ItemType of ditDirectory: begin frmCadClientes.Memo1.Lines.Add('Processando Diretório ' + IdFTPListItems[i].FileName); DownloadDirectory(idFTP, IdFTPListItems[i].FileName); end; ditFile: begin frmCadClientes.Memo1.Lines.Add('Baixando Arquivo ' + IdFTPListItems[i].FileName); idFTP.Get(IdFTPListItems[i].FileName, IdFTPListItems[i].FileName, true); end; end; end; if Directory <> '' then begin idFTP.ChangeDirUp(); SetCurrentDir('..'); end; finally DirListing.Free(); IdFTPListItems.Free(); end; end; var idFTP: TIdFTP; begin frmCadClientes.Memo1.Clear(); idFTP := TIdFTP.Create(nil); try idFTP.Host := Host; idFTP.Username := Username; idFTP.Password := Password; idFTP.Connect(); idFTP.ChangeDir(RemoteDir); ForceDirectories(LocalDir); SetCurrentDir(LocalDir); DownloadDirectory(idFTP); frmCadClientes.Memo1.Lines.Add('Concluido'); idFTP.Quit(); finally idFTP.Free(); end; end; procedure TDownloadThread.ClearMemos; var local : string; begin local := ExtractFilePath(Application.ExeName) + '\logs\'; ApagaPasta(local); frmCadClientes.Memo1.Clear; frmCadClientes.ListBox1.Clear; end; procedure TDownloadThread.Principal; var local : string; f:TextFile; linha:String; ii:integer; nomedolog : string; begin local := ExtractFilePath(Application.ExeName) + '\logs\'; if frmCadClientes.cdsClientesOn.Active then while not frmCadClientes.cdsClientesOn.Eof do frmCadClientes.cdsClientesOn.Delete else frmCadClientes.cdsClientesOn.CreateDataSet; frmCadClientes.cdsClientesOn.Open; if not DirectoryExists(local) then ForceDirectories(local); DownloadFTP('ftp.meusite.com.br', 'usuario', 'senha123', 'pastaremota', local); EnumFiles(local, '*.log', faanyfile - faDirectory, FrmCadClientes.Listbox1.Items, False, False); frmCadClientes.ListBox1.ItemHeight := 0; for ii:=0 to FrmCadClientes.ListBox1.Items.Count-1 do begin try nomedolog := FrmCadClientes.ListBox1.Items.Strings[ii]; AssignFile(f,local + nomedolog); Reset(f); Readln(f,linha); linha := Trim(linha); if linha <> '' then begin frmCadClientes.cdsClientesOn.Append; frmCadClientes.cdsClientesOn.FieldByName('CODIGO').Value := StrToInt(linha); Readln(f,linha); frmCadClientes.cdsClientesOn.FieldByName('IGREJA').Text := linha; Readln(f,linha); frmCadClientes.cdsClientesOn.FieldByName('CIDADE').Text := linha; Readln(f,linha); frmCadClientes.cdsClientesOn.FieldByName('ESTADO').Text := linha; Readln(f,linha); frmCadClientes.cdsClientesOn.FieldByName('HORA').Text := linha; Readln(f,linha); frmCadClientes.cdsClientesOn.FieldByName('VERSAO').Text := linha; Readln(f,linha); frmCadClientes.cdsClientesOn.FieldByName('SISTEMA').Text := linha; Readln(f,linha); frmCadClientes.cdsClientesOn.FieldByName('DATA').Text := linha; frmCadClientes.cdsClientesOn.Post; end; finally Closefile(f); end; end; FrmCadClientes.lbltotalc.Caption := 'No Momento Existem ' + IntToStr(frmCadClientes.ListBox1.Items.Count) + ' Igrejas Utilizando nossos Sistemas'; if frmCadClientes.cdsClientesOn.IsEmpty then ShowMessage('No Momento ninguém está Utilizando Nossos Sistemas!'); end; procedure TDownloadThread.Execute; begin Synchronize(ClearMemos); Synchronize(Principal); end; end. Desde já Agradeço!
  15. num deu, coloquei esse código que você me passou, e o parametro em vez de backup chamei Reiniciar, mas não deu, o codigo q eu uso para reiniciar o programa é esse: var AppName : PChar; procedure AppRestart; begin AppName := PChar(Application.ExeName); ShellExecute(HANDLE_FLAG_INHERIT,'open', AppName, nil, nil, SW_SHOWNORMAL); Application.Terminate; end; e ai com seu código já no souce eu usei o meu código acima desse jeito: procedure AppRestart; begin AppName := PChar(Application.ExeName); WinExec(PChar(AppName + ' -reiniciar'), SW_SHOWNORMAL); Application.Terminate; end; ehehe, mas continua o problema, o q eu devo fazer? :blush: Vlw
  16. Olá Pessoal, muitos programas tem instaladores próprios, não com Inno Setup e outros compiladores comuns, tem o exemplo do MSN, o Skype... entre outros. No entanto, eu gostaria de saber como começar a fazer um desses, o sistema de arquivos... a descompactação, como transformar tudo num executavel... eita quanta coisa ehehe, e então, quem souber me da uma forcinha ae. Desde já agradeço.
  17. Olá, Infelizmente tive que reabrir esse tópico rsrs... A função funciona perfeitamente, só que agora percebi q uma outra função parou porcausa dessa... Quando eu restaurava um backup no programa, eu reiniciava ele... agora quando vai pra reiniciar fala que já está em execução e não abre o programa mais... por favor se puderem me ajudar
  18. E ae pessoal, mais uma vez estou aqui... vejam se vocês conseguem me ajudar... Tenho um programa muito complexo.. :angry: , que consiste em controlar senhas e clientes aqui da empresa, pelo amor de deus n me perguntem os componentes que tem nele, que eu ficaria uma semana aqui e ainda faltaria muitos.... mas prosseguindo.... eu precisava fazer tipo umas abas, que nem o firefox, que eu pudesse pesquisar meus clientes, fazer tudoo.... ehehe, como se tivesse aberto outro programa.... creio que já entenderam.... então, se alguém puder me ajudar, ficarei grato. Abraços... :wub:
  19. Bat com delphi.... huhuuh Coloque essa procedure no seu código: procedure Executa(Comando: string); var SI: TStartupInfo; PI: TProcessInformation; begin FillChar(SI, SizeOf(SI), 0); SI.cb := SizeOf(StartupInfo); SI.dwFlags := STARTF_USESHOWWINDOW; SI.wShowWindow := SW_HIDE; if CreateProcess(nil, PChar(Comando), nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, SI, PI) then WaitForSingleObject(PI.hProcess, INFINITE); end; Para usa-la é facil: Executa('QUALQUER-COMANDO-DE-DOS-AQUI'); Aêêêê, agora ficou facil, bota qualquer comando que tenha no arquivo bat, você bota ai, ficou facil, roda tudo que você precisa, eu creio , huahuahaa, testa ai Abraços!
  20. Então amigo, o que eu preciso é assim: eu ter um programa que veja quem está acessando o programa em tempo real, e se eu apertar no nome da maquina que está o usando, o programa se feche na maquina.... huhuhuh parece coisa de outro mundo hahaha... Vlw
  21. Amigo, se você estiver tentando baixar todos os arquivos que se encontram em uma pasta determinada no FTP é simples. Coloque essas procedures em seu código, não se esqueça de declarar a primeira procedure lá em Type... :blush: procedure frmDownloadFTP.DownloadFTP(Host, Username, Password, RemoteDir, LocalDir: string); procedure DownloadDirectory(idFTP: TidFTP; Directory: string = ''); var i: integer; DirListing: TStringList; IdFTPListItems: TIdFTPListItems; begin // update the GUI Application.ProcessMessages(); // avoid trying to move to and copy current or parent dir if (Directory = '.') or (Directory = '..') then exit; if Directory <> '' then try // change to directory remotely idFTP.ChangeDir(Directory); // create and change to directory locally CreateDir(Directory); SetCurrentDir(Directory); Directory := IncludeTrailingPathDelimiter(Directory); except exit; end; DirListing := TStringList.Create(); IdFTPListItems := TIdFTPListItems.Create(); try idFTP.List(DirListing); IdFTPListItems.LoadList(DirListing); for i := 0 to IdFTPListItems.Count - 1 do begin case IdFTPListItems[i].ItemType of ditDirectory: begin DownloadDirectory(idFTP, IdFTPListItems[i].FileName); end; ditFile: begin idFTP.Get(IdFTPListItems[i].FileName, IdFTPListItems[i].FileName, true); end; end; end; if Directory <> '' then begin idFTP.ChangeDirUp(); SetCurrentDir('..'); end; finally DirListing.Free(); IdFTPListItems.Free(); end; end; var idFTP: TIdFTP; begin idFTP := TIdFTP.Create(nil); try idFTP.Host := Host; idFTP.Username := Username; idFTP.Password := Password; idFTP.Connect(); idFTP.ChangeDir(RemoteDir); ForceDirectories(LocalDir); SetCurrentDir(LocalDir); DownloadDirectory(idFTP); idFTP.Quit(); finally idFTP.Free(); end; end; Certo, agora para baixar os arquivos, coloque esse código no botão. idFTP1.ChangeDir(PASTAREMOTA); DownloadFTP('ftp.meusite.com.br', 'usuarioftp', 'senhaftp', 'pastaremota', 'pastalocal'); Coloque seus dados no codigo acima. Observação: ali no idFTP1.ChangeDir(PASTAREMOTA), esse PASTAREMOTA, vou te dar um exemplo, se o seu servidor quando logado no ftp ele entra direto na pasta WWW, e os arquivos que você quer baixar está na pasta ARQUIVOS que fica em www, simplesmente você deve apagar a linha idFTP1.ChangeDir(PASTAREMOTA), caso os arquivos estejam em www\arquivos\arquivos2, você deve colocar idFTP1.ChangeDir(arquivos), assim você deve colocar para baixar a pasta arquivos2, ele baixará todos os arquivos da pasta desejada.... hasuuhsauhas que explicação meio sinistra.... Espero ter ajudado.... Abraços... :blink:
  22. Tem Algo que esqueci de completar..... como eu faço para saber se está aberto esse programa na rede?, tem jeito de ver os processos que estão aberto no outro computador?.... alguém me da uma luz.... Obrigado
  23. Olá Pessoal, resurgi das cinzas.... eehehe, gostaria de uma ajudinha :wacko: Estou tentando fazer um painel de controle na rede, para saber quem esta utilizando "(meu sistema :rolleyes: )" no entando, isso eu consigo fazer tranquilo......... o fato, é que quando eu clicar em alguém no DBGrid que vou ter, eu queria um botão, pra que quando eu mandasse parar, essa aplicação fosse fechada lá no computador da rede que mandei que fosse fechado... :blink: Alguma ideia? Abraços!
  24. Quando você compila o seu programa dá isso? No meu caso ocorreu a mesma coisa, tenta compilar e fechar, depois você pega e abre o programa direto na pasta, evita esses tipos de erro! Abraços...
  25. Na Propriedade OnTitleClick do DBGrid coloque isso: ShowMessage(Column.Title.Caption); Assim quando você clicar no titulo da coluna, vai exibir o nome pra você! Abraços...
×
×
  • Criar Novo...