A outra dúvida que tinha sobrado (espero que seja a última) era como setar uma propriedade para nil. É assim:
if IsPublishedProp(Components[i], 'DataSource') then SetObjectProp(Components[i], 'DataSource', nil); Assunto encerrado (eu acho) --- Em delphi-br@yahoogrupos.com.br, "Carlos Eduardo L. de Souza" <[EMAIL PROTECTED]> escreveu > 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