写一句:
YourComponent.YourProperty := SomeValue;
然后Ctrl+F9,没错的话,就是可写的啦

解决方案 »

  1.   

    那就不清楚了,看看TypeInfo.pas那里有没有介绍
      

  2.   

    设属性类型为 TPropertyvar OldProperty,NewProperty: TProperty;begin
      OldProperty := YourComponent.Property;
      try
        YourComponent.Property :3D NewProperty;
      except
        YourComponent.Property :3D OldProperty;
      end;
    end;
    —————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    —————————————————————————————————
           
      

  3.   

    设属性类型为 TPropertyvar OldProperty,NewProperty: TProperty;begin
      OldProperty := YourComponent.Property;
      try
        YourComponent.Property :3D NewProperty;
      except
        YourComponent.Property :3D OldProperty;
      end;
    end;
    —————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    —————————————————————————————————
           
      

  4.   

    -->lxpbuaa: 我多嘴一句,请勿见怪。:=) 如果属性是只读的,编译都不能通过。我也不知道正确的解是什么,不过可以贡献一些思路:
    1、用TPropInfo.SetProc判断,可以简单判断是否为nil,也可以参考TypInfo.pas中的汇编语句,当然找到相应的说明资料更好:
            MOV     EDI,[ESI].TPropInfo.SetProc
            CMP     [ESI].TPropInfo.SetProc.Byte[3],$FE
            JA      @@isField
            JB      @@isStaticMethod        {       SetProc is a virtual method }
            MOVSX   EDI,DI
            ADD     EDI,[EAX]
            CALL    dword ptr [EDI]
            JMP     @@exit
    原谅我没有耐心去分析了。
    2、如果1失败,你可以用TypInfo.pas中的SetXXXProp或SetPropValue过程来设置值,并且加上try...except以判断或防止失败。