我的系统:Windows Server 2003 English / Delphi6/7
当我在Control Panel --> 
Regional and Language Options --> 
Regional Options --> 
Standards and formats --> 
Select an item to match its prefences, or click Customize to choose your own formats: 
的下拉框中选择English (United States)时,在Delphi的文本编辑器中无法输入中文(我用紫光拼音输入法),而在属性编辑器中是可以输入中文的。
问题:怎么在不修改这个English(United States)选项的情况下,在Delphi的文本编辑器中正常输入中文呢?

解决方案 »

  1.   

    怎么没有人啊?嘿嘿附加:
    是不是感觉DBGrid中鼠标滚轮不爽?允许多选的时候Shift键无效?
    下面简单的代码提供了这些功能(欢迎指教,谢谢):
    unit MyDBGrid;interfaceuses
      Windows, Messages, SysUtils, Classes, Controls, Grids, DBGrids, DB;type
      TMyDBGrid = class(TDBGrid)
      private
        FFirstBookMark: TBook;
        FFirstRowNo: Integer;
        procedure CMMouseWheel(var Message: TCMMouseWheel); message CM_MOUSEWHEEL;
      protected
        procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
          X, Y: Integer); override;
        procedure KeyDown(var Key: Word; Shift: TShiftState); override;  
      public
        procedure SelectAll;
      end;procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('postren', [TMyDBGrid]);
    end;{ TMyDBGrid }procedure TMyDBGrid.CMMouseWheel(var Message: TCMMouseWheel);
    begin
      if Message.WheelDelta < 0 then
        SendMessage(Self.Handle, WM_VSCROLL, MakeLong(SB_LINEDOWN, 0), 0)
      else
        SendMessage(Self.Handle, WM_VSCROLL, MakeLong(SB_LINEUP, 0), 0);
    end;procedure TMyDBGrid.KeyDown(var Key: Word; Shift: TShiftState);
    begin
      inherited;
      if (Key in [Ord('a'), Ord('A')]) and ([ssCtrl] = Shift) then
        SelectAll;
    end;procedure TMyDBGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
      Y: Integer);
    var
      CurRowNo, I: Integer;
    begin
      inherited;
      if not (dgMultiSelect in Options) then Exit;
      if [ssLeft] = Shift then
      begin
        if FFirstBookMark <> nil then FreeMem(FFirstBookMark);
        if DataSource.DataSet.Active then
        begin
          FFirstBookMark := DataSource.DataSet.GetBook;
          FFirstRowNo := DataSource.DataSet.RecNo - 1;
          SelectedRows.CurrentRowSelected := True;
        end else
        begin
          if FFirstBookMark <> nil then FreeMem(FFirstBookMark);
          FFirstBookMark := nil;
        end;
      end else if [ssShift, ssLeft] = Shift then
      begin
        if DataSource.DataSet.Active then
        begin
          CurRowNo := DataSource.DataSet.RecNo - 1;
          if (FFirstBookMark = nil) then DataSource.DataSet.First
          else DataSource.DataSet.GotoBook(FFirstBookMark);
          if CurRowNo > FFirstRowNo then
          begin
            for I := FFirstRowNo to CurRowNo do
            begin
              SelectedRows.CurrentRowSelected := True;
              if I <> CurRowNo then DataSource.DataSet.Next;
            end;
          end else if CurRowNo < FFirstRowNo then
          begin
            for I := FFirstRowNo downto CurRowNo do
            begin
              SelectedRows.CurrentRowSelected := True;
              if I <> FFirstRowNo then DataSource.DataSet.Prior;
            end;
          end;
        end else
        begin
          if FFirstBookMark <> nil then FreeMem(FFirstBookMark);
          FFirstBookMark := nil;
        end;
      end;
    end;procedure TMyDBGrid.SelectAll;
    begin
      if not (dgMultiSelect in Options) then Exit;
      if not DataSource.DataSet.Active then Exit;
      DataSource.DataSet.First;
      while not DataSource.DataSet.Eof do
      begin
        SelectedRows.CurrentRowSelected := True;
        DataSource.DataSet.Next;
      end;
    end;end.
      

  2.   

    TO: reallychenchi(晨池) 
    当然是想用E文的了,嘿嘿
      

  3.   

    TO: myling(AD)
    怎么改?在Delphi IDE中输入汉字与控件的字符集有关吗?在Delphi-->Project-->Options-->Version Info中的Language已经选择了Chinese(PRC),没有用的,应该不是这里吧,还有哪里
      

  4.   

    现在才提出这个问题,我问过那么多次了。
    我以前就是遇到这样的中文问题,你可以粘贴(我是这样搞的^^),
    不过这样的话,你把系统考到别人机子上时中文就是乱码
    我当时重新安了delphi都不行
      

  5.   

    我靠今天来了公司以后才发现我的delphi也是如此……以前竟然没发现,难道是俺不写中文注释的原因-_-!看来这个问题具有普遍性postren(小虫) ,你给操作系统装上中文字库试试我记得我以前的同事就是装完了英文操作系统后装一大堆中文字库和语言包啥的他们好像就不犯这个毛病……
      

  6.   

    TO:myling(AD)
    除了Delphi IDE中的,别的地方中文输入都是正常的
      

  7.   

    TO:whbo(王红波(以后不能午休了,为找工作而忧心...)) 
    粘贴是可以的,复制到别的机器上也正常,中文并不乱码
      

  8.   

    回复人: postren(小虫) ( ) 信誉:112  2005-1-4 13:03:08  得分: 0  
     
     
       
    TO:myling(AD)
    除了Delphi IDE中的,别的地方中文输入都是正常的  
     
    我的也是如此!
    到网上看看有没有delphi的中文语言包啥的
      

  9.   


    Tooles--->Editor properties -->Editor Font 改為新細明體
      

  10.   

    TO: JonnySun(智者寡言) 
    好像不行吧,我把能调换的字体都调换了一遍,全部都无效
      

  11.   

    很好解决的,区域选项里,装好中文包,最重要的是,高级里面把 Language for non-Unicode Programs 的语言指到 Chinese (PRC) ,就好了我现在用的是 Windows Server 2003 EN, Delphi 7
      

  12.   

    TO: Hozaka(空虚的狼)
    你的方法无效,
    我的问题:怎么在不修改这个English(United States)选项的情况下,
    在Delphi的文本编辑器中正常输入中文呢?如果把这个选项修改成Chinese(PRC)是可以正常输入中文的,但并不是改你说的那个选项,高级页面的Language for non-Unicode Programs语言已经是Chinese(PRC)了,还是无效很是郁闷的啊
      

  13.   

    无效?不太可能吧,我现在系统是 Windows Server 2003 英文版,也用 D7 ,怎么没问题啊……我就区域选的是中国,Unicode 选的 Chinese (PRC) ,日期格式也是 Chinese ,没什么特别的地方呀。就是日期格式选的跟你不一样。
    照道理说,日期格式不应该跟中文输入有关系的,郁闷哦你的什么系统啊,这么奇怪,我用英文系统3年多了,都没碰到过你的问题……
      

  14.   

    TO:Hozaka(空虚的狼)
    你把日期格式选择为英文的试试
      

  15.   

    我试过了,日期格式选 Englist (United States) ,也装了紫光输入法,一切正常