在edit中怎样把第一字符大写并且要把空格之后的第一个字母也大写??
比如在一个TEDIT中输入数据时,当输入空格以后,把其之后的第一个字母大写。
谢谢各位大师指教!!

解决方案 »

  1.   

    处理Onchange事件!!!首先设置一个标志变量(全局的)为True
    当用户键入时,如果标志为True,取Edit中的最后一个字符,将其变成大写,设置标志为False。
    如果用户键入的空格,则将标志设置为True,如此操作即可达到你的要求!!!以上的方法处理的操作及较多,你也可以考虑在Edit失去焦点时一次按照你的要求处理Edit中的字符串!!!
      

  2.   

    组合COPY()和POS()方法,试试看。
      

  3.   

    我給你做了第一個,
    如果要實現所有空格後面的字母都大寫,代碼會很複雜。procedure TfrmMain.edtTestKeyPress(Sender: TObject; var Key: Char);
    const
      nMax: Integer = 1000;
    var
      stUpper, stFront, stFollow: string;
    begin
      if (Pos(' ', edtTest.Text) > 0) then
      begin
        stFront := Copy(edtTest.Text, 1, (Pos(' ', edtTest.Text)));
        stUpper := Copy(edtTest.Text, (Pos(' ', edtTest.Text) + 1), 1);
        stFollow := Copy(edtTest.Text, (Pos(' ', edtTest.Text) + 2), nMax);
        edtTest.Text := stFront + AnsiUpperCase(stUpper) + stFollow;
        edtTest.SelStart := nMax;
      end;
    end;
      

  4.   

    对,用copy (delete)和pos结合。
      

  5.   

    procedure TForm1.Edit1Change(Sender: TObject);
    var
      i,j:integer;
      s,s1:string;
    begin
      i:=length(form1.Edit1.Text);
    //  showmessage(inttostr(i));
      if i=1 then
      begin
        s1:=uppercase(form1.Edit1.Text);
        form1.Edit1.Text:=s1;
        form1.Edit1.SelStart:=1;
      end
      else
      begin
        if i>1 then
        begin
          s:=form1.Edit1.Text;
          if s[i-1]=' ' then
          begin
            form1.Edit1.SelStart:=0;
            form1.Edit1.SelLength:=i-1;
            s1:=form1.Edit1.SelText+uppercase(s[i]);
            form1.Edit1.Text:=s1;
            form1.Edit1.SelStart:=length(s1);
          end;
        end;
      end;
    end;