Achei: Tinha ficado pendente como setar o OnClick. É assim:
uses TypInfo var i: Integer; evento : TNotifyevent; begin for i:= 0 to ComponentCount - 1 do begin if IsPublishedProp(Components[i], 'OnClick') then begin evento := meuClickPersonalizado; SetMethodProp(Components[i], 'OnClick', TMethod(evento)); end; end; end; //Eduardo --- Em delphi-br@yahoogrupos.com.br, "Carlos Eduardo L. de Souza" <[EMAIL PROTECTED]> escreveu > Na verdade eu acabei usando outra função. É possível descobrir se a > propriedade ou evento existe e é possível setar um valor. (só não > consegui setar nil para as propriedades) > > for i:= 0 to ComponentCount - 1 do > begin > if IsPublishedProp(Components[i], 'ReadOnly') then > SetVariantProp(Components[i], 'ReadOnly', 'True'); > > > if IsPublishedProp(Components[i], 'OnClick') then > //aqui eu ainda não descobri como apontar para um onClick > personalizado SetVariantProp(Components[i], 'onClick', > 'myOnClick'); > > end; > > > obs: também funciona: SetFloatProp(), SetStrProp(), etc... > > Obrigado a todos, > Se alguém puder acrescentar algo ao que ficou pendente, agradeço. > Eduardo > > > > > > > --- Em delphi-br@yahoogrupos.com.br, "Carlos Eduardo L. de Souza" > <[EMAIL PROTECTED]> escreveu > > Eu descobri uma função que eu acho que é o que eu quero. Mas ainda > > estou tentando usar. Qualquer progresso eu aviso. > > A função é: > > > > IsItThere := IsPropertyInCategory('Localizable', TCustomEdit, 'Text'); > > outra opção: > > IsItThere := IsPropertyInCategory('Localizable', 'TCustomEdit', 'Text'); > > > > Obrigado. A gente chega lá! > > > > > > --- Em delphi-br@yahoogrupos.com.br, "Alisson Ricardo Viol Gazda" > > <[EMAIL PROTECTED]> escreveu > > > Eu não conheço nenhuma função ou procedimento que retorne esses > > dados. Mas você pode armazenar em uma TStringGrid as propriedades > > padrão de cada componente e fazer uma função boleana que retorne se > > para aquele componente existe ou não a propriedade na lista de > > propriedades. > > > > > > Grid > > > Classe | Prop1 | Prop2 |Prop3 > > > TButton | OnClick | OnMouseMove | Enabled > > > TEdit | OnChange | OnEnter | Enabled > > > > > > > > > function TForm1.hasProperty(Classe, Propriedade: String): Boolean; > > > var > > > Linha, Coluna: Integer; > > > begin > > > Result:=False; > > > For Linha:=1 to sg1.RowCount-1 do > > > begin > > > if sg1.Cells[0, Linha]=Classe then > > > begin > > > for Coluna:=1 to sg1.ColCount-1 do > > > begin > > > if sg1.Cells[Coluna, Linha]=Propriedade then > > > begin > > > Result:=True; > > > Break; > > > end; > > > end; > > > end; > > > end; > > > end; > > > > > > Aí para chamar: > > > > > > if hasProperty(Classe, Propriedade) then > > > messagedlg('A Propriedade '+Propriedade+' existe em > > '+Classe,mtinformation,[mbok],0) > > > else > > > messagedlg('A Propriedade '+Propriedade+' NÃO existe em > > '+Classe,mterror,[mbok],0) > > > > > > > > > > > > Não é eficiente mas ajuda um pouco já. > > > > > > > > > Alisson Ricardo VIol Gazda > > > > > > > > > ----- Original Message ----- > > > From: Carlos Eduardo L. de Souza > > > To: delphi-br@yahoogrupos.com.br > > > Sent: Thursday, August 25, 2005 2:41 PM > > > Subject: [delphi-br] componente tem propriedade? > > > > > > > > > Tarde! > > > Alguém sabe: > > > > > > Eu preciso descobrir se um determinado componente tem uma > propriedade > > > ou um método ou evento. > > > Mais ou menos assim: > > > for i:= 0 to ComponentCount - 1 do > > > begin > > > if Components[i].hasProperty('Enabled') then //isto não > > existe... > > > Components[i].Enabled := False; //essa linha também vai dar > > > erro sem um cast... > > > //preciso também saber: > > > if Components[i].hasEvent('OnClick') then > > > Components[i].OnClick := OnClickPersonalizado; > > > end > > > Qualquer idéia é bem vinda... > > > tks > > > Eduardo > > > > > > > > > > > > > > > -- > > > <<<<< 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] > > > > > > > > > > > > Yahoo! Grupos, um serviço oferecido por: > > > > > > > > > > > > > > > ------------------------------------------------------------------------------ > > > Links do Yahoo! Grupos > > > > > > a.. Para visitar o site do seu grupo na web, acesse: > > > http://br.groups.yahoo.com/group/delphi-br/ > > > > > > b.. Para sair deste grupo, envie um e-mail para: > > > [EMAIL PROTECTED] > > > > > > c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos > > do Serviço do Yahoo!. > > > > > > > > > > > > [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