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