Aee pessoal de plantão, to precisando usar Threads no Delphi...
o que tá acontecendo é o seguinte...

na aba Samples dp Delphi tem um componente que se chama ShellChangeNotifier, 
com ele é
possível monitorar alterações em arquivos do diretório configurado na 
propriedade Root do objeto.
Bom, eu tenho uma lista de diretórios que eu preciso monitorar(isso é um 
cadastro, intão a qtd de
diretórios pode variar), como essa quantidade de diretórios é variável eu 
preciso criar em run-time...
tipo assim, fazer um loop até o fim da tabela e ir criando vários 
ShellChangerNotifier pra cada registro.
até ai susu, eu consigo criar tranquilamente, crio tantos objetos 
ShellChangerNotifier quanto precisar.

o problema é que eu também preciso identificar em qual diretório houve a 
alteração do arquivo, pra isso
eu precisaria criar no evento 'onChange' de cada objeto um função que me 
retornasse em qual diretório
houve alteração.

ai eu pensei, bom, é so acessar o evento onChange de cada objeto que eu estiver 
criando em run-time 
e assossiar uma procedure ou function,maravilha acho que é por ai mesmo.
só que o feladaputa pede que a function retorne um tipo TThreadMethod, eu até 
criei uma function com
esse retorno(como vc´s podem ver no código abaixo só que ele só executa uma vez 
depois não faz mais nada)

segue o código abaixo...

unit ShellChangeNotify;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, ComCtrls, ImgList, ShellCtrls, Mask,
  DBCtrls, DB, ADODB, Func,ThreadShellChangeNotify,Buttons, Menus, ToolWin;


type TShell = class of TShellChangeNotifier;

function CreateControl(ControlClass: TShell;
  const Machine,PathRoot: string): TShellChangeNotifier;

  function PushTheButton(ControlClass: TShellChangeNotifier):TThreadMethod;

 {Private Declarations}

implementation
uses fEditor, fReadablesFiles, fUnreadablesFiles, DbConfigure,fDatabase;

function CreateControl(ControlClass: TShell;
  const Machine,PathRoot: string): TShellChangeNotifier;
begin
  Result := ControlClass.Create(Database);

  with Result do
  begin

    //nomeando objeto
    Name := 'Shell' + Machine;

    //Atribuindo caminho
    Root := PathRoot;

    //Ativação dos Filtros
    NotifyFilters:=[
      nfFileNameChange,
       nfDirNameChange,
     nfAttributeChange,
          nfSizeChange,
         nfWriteChange,
      nfSecurityChange
                   ];

      WatchSubTree:=false;

    //definindo ação padrão para todos os objetos criados
    Result.OnChange:=PushTheButton(Result);

  end;
end;

function PushTheButton(ControlClass: TShellChangeNotifier):TThreadMethod;
begin
  ShowMessage('Nome Controle :' + ControlClass.Name);
  ShowMessage('Alteração em :' + ControlClass.Root);
end;

end.

Anderson
Rio Claro-SP

[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a