在edit中怎样把第一字符大写并且要把空格之后的第一个字母也大写??
比如在一个TEDIT中输入数据时,当输入空格以后,把其之后的第一个字母大写。
谢谢各位大师指教!!
比如在一个TEDIT中输入数据时,当输入空格以后,把其之后的第一个字母大写。
谢谢各位大师指教!!
解决方案 »
- delphi如何把DBGRID中的分数显示成小数
- 高手来 如何通过句柄来判断控件类型?
- SetWindowsHookEx的问题
- 有关BDE出错的问题:
- DXDBGRID :我想用代码,动态添加 DXDBGRID 的列,并指定列的类型?
- 能否将窗体包装在COM组件中供程序调用?
- 我找到了一个Gis控件(For Delphi,VB)
- 问一个好傻的题:为什么说聪明的人用Delphi呀何解呢?
- 如何控制动态创建的窗体上的控件的属性,万分火急
- 送分题:关于TIMER控件和线程的问题
- 如何用NMSMTP控件发送带附件的Email
- C#Build的下载地址ftp://ftpd.borland.com/download/csharpbuilder/csb1/csb1_per_noncommercial.exe
当用户键入时,如果标志为True,取Edit中的最后一个字符,将其变成大写,设置标志为False。
如果用户键入的空格,则将标志设置为True,如此操作即可达到你的要求!!!以上的方法处理的操作及较多,你也可以考虑在Edit失去焦点时一次按照你的要求处理Edit中的字符串!!!
如果要實現所有空格後面的字母都大寫,代碼會很複雜。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;
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;