Fórum como capturar o caption do componente TMenuItem?? #373471

13/08/2009

0

estou usando delphi 6 e quero automatizar o titulo do relatorio.

Como que eu capturo o caption do componente TMenuItem e jogo numa variavel que sera o titulo do relatorio?


Fausto.malheiros

Fausto.malheiros

Responder

Posts

13/08/2009

Osocram

Olha so... como vc faria isso em tempo de projeto?
vc iria o objeto TMenuItem > Caption e pegaria o texto certo?

em Tempo de execução vc pode pegar isso no Onclick.. pois estará passando o sender
TMenuItem(sender).caption;


estou usando delphi 6 e quero automatizar o titulo do relatorio. Como que eu capturo o caption do componente TMenuItem e jogo numa variavel que sera o titulo do relatorio?



Responder

Gostei + 0

13/08/2009

Fausto.malheiros

Do jeito que vc colocou da erro...então coloquei assim:

[u:889c6ad84c]FrmPrincipal.MainMenu1.Items.Caption[/u:889c6ad84c] / não da erro de compilação, mas tbem não traz nada.

meu codigo esta assim:

//primeiro pego o caption do item do menu e jogo no caption do //formulario apenas para garantir o mesmo nome(AQUI TA O ERRO)
FrmMntCritica.Caption := FrmPrincipal.MainMenu1.Items.Caption;

//e dentro do relatorio, report builder, o componente variable ja esta pegando automaticamente o caption do formulario e jogando no titulo
ppReport1.PrinterSetup.DocumentName:= Caption;

ppReport1.Print;


Responder

Gostei + 0

13/08/2009

Osocram

Olha eu uso daqui maneira e não da erro...

o problema pode ser a maneira que vc usou ae....

posta o metodo onde vc esta chamando isso... Para ver se é no click do menu item ou aonde é q vc esta chamando.

Do jeito que vc colocou da erro...então coloquei assim: [u:52ab7aeded]FrmPrincipal.MainMenu1.Items.Caption[/u:52ab7aeded] / não da erro de compilação, mas tbem não traz nada. meu codigo esta assim: //primeiro pego o caption do item do menu e jogo no caption do //formulario apenas para garantir o mesmo nome(AQUI TA O ERRO) FrmMntCritica.Caption := FrmPrincipal.MainMenu1.Items.Caption; //e dentro do relatorio, report builder, o componente variable ja esta pegando automaticamente o caption do formulario e jogando no titulo ppReport1.PrinterSetup.DocumentName:= Caption; ppReport1.Print;



Responder

Gostei + 0

13/08/2009

Fausto.malheiros

No evento on click do item de menu o comando funciona...

ele da erro é la no formulario de relatorio. Dou o comando antes de chamar o report builder...bem ali que ele da erro.


Responder

Gostei + 0

13/08/2009

Osocram

Por isso q eu disse no outro post
em Tempo de execução vc pode pegar isso no Onclick.. pois estará passando o sender TMenuItem(sender).caption;


pq No OnClick do menu q o sender vai ser o menuItem... se outro lugar o sender vai ser outro.


Responder

Gostei + 0

13/08/2009

Fausto.malheiros

Então..mas o lance da primeira letra ficar sublinhada(atalho) atrapalhou. nao tem nada a ver a primeira letra sublinhada no titulo do relatorio....mas vlw pela força. Obrigado.

Mas só uma coisa..fiquei curioso :D O Sender no onclick do menu funciona...mas como fazer ele chegar até o form do relatorio. Variavel pública?


Responder

Gostei + 0

14/08/2009

Osocram

para tirar o ´&´ é simples
1
2
palavra := TMEnuItem(sender).caption;
palavra := stringReplace(palavra,´&´,´´,[])


se vc fazer isso aqui p chamar o o seu form de relatorio
1
2
3
4
5
6
7
FormRel := TformRel.Create(nil);
try
  FormRel.Titulo := palavra;
finally
  formRel.release;
  formRel := nil;
end;


é so declarar uma variavel no formRel, na parte Public.
dae la vc pode usar a variável do jeito que quiser ou jogar direto p o caption deste form tbm.

Então..mas o lance da primeira letra ficar sublinhada(atalho) atrapalhou. nao tem nada a ver a primeira letra sublinhada no titulo do relatorio....mas vlw pela força. Obrigado. Mas só uma coisa..fiquei curioso :D O Sender no onclick do menu funciona...mas como fazer ele chegar até o form do relatorio. Variavel pública?



Responder

Gostei + 0

14/08/2009

Fausto.malheiros

Agora sim! Otimizou bem mais os códigos.

Vlw osocram...Brigadão!

Abraços


Responder

Gostei + 0

21/08/2009

Fausto.malheiros

Declarei a variavel ´titulo´ no public do menu e no public do rel...mas o conteudo da variavel preenchida no menu, esta chegando vazia no rel. ?????


Responder

Gostei + 0

21/08/2009

Fausto.malheiros

Declarei a variavel ´titulo´ no public do menu e no public do rel...mas o conteudo da variavel preenchida no menu, esta chegando vazia no rel. ?????


Creio que o problema esta na forma que o menu chama os programas:

// Isola o nome do formuário NomeClasse := TMenuItem(Sender).Name; System.Delete(NomeClasse, 1, 4); // Monta o nome daclasse NomeClasse := ´T´ + NomeClasse; //esses são os parametros que preciso passar Titulo := TMenuItem(sender).Caption; Titulo := stringReplace(titulo,´&´,´´,[]); usuario := editusuario.text; try // como colocar os parametros no comando abaixo?????? Application.CreateForm(TComponentClass(FindClass(NomeClasse)), Formulario); Formulario.ShowModal; finally FreeAndNil(Formulario); end;


Eu não stou sabendo colocar os parametros nessa creatform onde é feito a pesquisa pela classe


Responder

Gostei + 0

21/08/2009

Osocram

Teria que ser algo +- assim.

[quote:3ead856712=´fausto.malheiros´]Declarei a variavel ´titulo´ no public do menu e no public do rel...mas o conteudo da variavel preenchida no menu, esta chegando vazia no rel. ?????


Creio que o problema esta na forma que o menu chama os programas:

// Isola o nome do formuário NomeClasse := TMenuItem(Sender).Name; System.Delete(NomeClasse, 1, 4); // Monta o nome daclasse NomeClasse := ´T´ + NomeClasse; //esses são os parametros que preciso passar Titulo := TMenuItem(sender).Caption; Titulo := stringReplace(titulo,´&´,´´,[]); usuario := editusuario.text; try // como colocar os parametros no comando abaixo?????? Application.CreateForm(TComponentClass(FindClass(NomeClasse)), Formulario); [b:3ead856712] TSeuForm(Formulario).Titulo := titulo;[/b:3ead856712] Formulario.ShowModal; finally FreeAndNil(Formulario); end;


Eu não stou sabendo colocar os parametros nessa creatform onde é feito a pesquisa pela classe[/quote:3ead856712]


Responder

Gostei + 0

21/08/2009

Fausto.malheiros

Heimmm! Hammmm! Cuma. Rs.....

Que jeito mesmo?


Responder

Gostei + 0

21/08/2009

Fausto.malheiros

Ha ta...ja vi no meio da citação.

Ok. Vou verificar


Responder

Gostei + 0

21/08/2009

Osocram

Aqui vc cria seu form
1
Application.CreateForm(TComponentClass(FindClass(NomeClasse)), Formulario);


E antes do
1
Formulario.ShowModal;


Quero dizer entre esses dois codigos vc tem q passar o valor p a variavel que vc criou nos formularios Rel.


--------------------
ou la no seu formRel no evento OnShow vc verifica se a variavel Titulo do form Principal for diferente de ´´ dae vc pega ele e joga no caption

Nesse caso lembre-se de sempre passar Titulo:=´´ depois de liberar o form, para não ficar lixo.
Heimmm! Hammmm! Cuma. Rs..... Que jeito mesmo?



Responder

Gostei + 0

21/08/2009

Fausto.malheiros

Ficou da seguinte forma:

Application.CreateForm(TComponentClass(FindClass(NomeClasse)), Formulario); TFrmPrincipal(Formulario).titulo := titulo; Formulario.ShowModal;


A variavel titulo esta declarada no public do menu e no public do relatorio, mas continua não passando o parametro.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar