怎样循环给定窗体所有控件
给所有控件(包括第三方控件)的IMENAME赋值。
但使用Components只能修改delphi自带的控件对第三方控件无效。
高手赐教!

解决方案 »

  1.   

    代码:
      j := self.ComponentCount;
      for i:=0 to j -1 do
      begin
        Tedit(self.Components[i]).ImeName := '中文 (简体) - 智能 ABC';
      end;
    ///////////////////////
    上面代码将窗体上的EDIT,MEMO,COMBOBOX等的IMENAME都改了,但就是改不了第三方控件的,比如说cxTextEdit;
    且看:
      TcxTextEdit = class(TcxCustomTextEdit)
      published
        property Anchors;
        property AutoSize;
        property BeepOnEnter;
        property Constraints;
        property DragMode;
        property Enabled;
        property ParentColor;
        property ParentFont;
        property ParentShowHint;
        property PopupMenu;
        property Properties;
        property ShowHint;
        property Style;
        property StyleDisabled;
        property StyleFocused;
        property StyleHot;
        property TabOrder;
        property TabStop;
        property Text;
        property Visible;
    {$IFDEF VCL}
        property DragCursor;
        property DragKind;
        property ImeMode;
        property ImeName; ////////////////////////////////////////////////
    {$ENDIF}
        property OnClick;
    {$IFDEF DELPHI5}
        property OnContextPopup;
    {$ENDIF}
        property OnDblClick;
        property OnDragDrop;
        property OnDragOver;
        property OnEditing;
        property OnEndDrag;
        property OnEnter;
        property OnExit;
        property OnKeyDown;
        property OnKeyPress;
        property OnKeyUp;
        property OnMouseDown;
        property OnMouseEnter;
        property OnMouseLeave;
        property OnMouseMove;
        property OnMouseUp;
        property OnStartDrag;
    {$IFDEF VCL}
        property OnEndDock;
        property OnStartDock;
    {$ENDIF}
      end;为什么我上面的循环该不了这个控件的IMENAME?
      

  2.   

    USES typinfo;  {Add this to your USES statement.}var
      i: integer;
    begin
      for i := componentCount - 1 downto 0 do
        with components[i] do
        begin
          if GetPropInfo(ClassInfo, 'ImeName') <> nil  then
            ImeName := '中文 (简体) - 智能 ABC';
        end;
    end;