Screen.DataModuleCount não funciona

Delphi

24/07/2009

Pessoal

begin
showmessage(´Count ´+IntToStr(Screen.DataModuleCount));
for t := 0 to Screen.DataModuleCount - 1 do
FillSourcesForm(Screen.DataModules[t],AItems,AClassName);
for t := 0 to FormCount - 1 do
FillSourcesForm(Forms[t], AItems,AClassName);
end;

fiz isso em um componente meu... pois preciso ver se acho alguns tipo de componente em qq tela aberto, tanto Form qto DataModule
Eu tenho isso feito em outro componente em casa e funciona normal

Estava implementando isso aqui em serviço tbm e o DataModuleCount esta vindo sempre 0

Estou deixando os datamodules aberto no projeto antes de chamar esta função que esta em um Editor de Componente que fiz.

Alguem tem algum ideia?
Pois o FormCount esta funcionando certinho (infelizmente o que eu quero nesse caso específico esta nos DataModules)


Osocram

Osocram

Curtidas 0

Respostas

Osocram

Osocram

24/07/2009

Pelo visto no Delphi 7 ele se comporta diferente.
No serviço estou usando D7 e em casa D2007. E em casa funciona...

Estava debugando os forms que aparecem ja q os datamodules não estavam aparecendo.
Percebi que estava vindo uns forms com os nomes DataModuleForm, DataModuleForm_1 e talz.
Mandei listar os componetes deles... e por minha surpresa apareceu os meu DataModules.
Então tive que fazer um FOR dentro do outro para conseguir acessar os DataModules.
Ficando assim
var
  t,x: Integer;
begin
  AItems.Clear;
  with Screen do begin
    for t := 0 to Screen.DataModuleCount - 1 do
      FillSourcesForm(Screen.DataModules[t],AItems,AClassName);
    for t := 0 to FormCount - 1 do
[b]      //essa mudança so para o delphi 7 pois ele não esta reconhecendo o Screen.DataModule
      if Forms[t].ClassName = ´TDataModuleForm´ then
        for x:=0 to Forms[t].ComponentCount - 1 do
          FillSourcesForm(Forms[t].Components[x], AItems,AClassName)
      else
[/b]        FillSourcesForm(Forms[t], AItems,AClassName);
  end;


Bom isso resolveu o Problema.
Estou postando aqui a solução caso alguem um dia precise esta registrado.
Mas ainda estou na duvida, se isso realmente esta diferente no D7 e D2007.

Flw.


GOSTEI 0
POSTAR