可以用鼠标钩子,也可以注册hotkey,还可以在form的onkeypress里面处理,判断 begin if (byte(edit1.text[1])>byte('a')) and (byte(edit1.text[1])<byte('A')) then begin ........................ end; end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var str:string; i:integer; temp:string; begin temp:=''; if key=115 then begin str:=edit1.Text; for i:=0 to length(edit1.Text) do begin if i mod 2=1 then temp:=temp+edit1.Text[i]; end; edit1.Text:=uppercase(temp); end else if key=118 then
form1的keypreview:=true;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var i:integer; s:string; begin if key=115 then //F4 begin s:=''; for i:=1 to length(Edit1.Text) do if (i mod 2)=1 then s:=s+Edit1.Text[i]; Edit1.Text:=UpperCase(s); end else if key=118 then //F7 begin 类似,不写了 end; end;
============================
如何接收法?通过文本框(TEdit)接收么?----------------------------
...按F4键则输出其奇数位字符的大写,按F7则输出偶数位字符的小写...
============================
在哪按F4键?又在哪输出?
难点可以是全局的 在任何地方 只要按键
就获取,那么这要写个键盘钩子
简单的话就是在程序的FORM里指定的地方输入
同样快捷键也是这样,在FORM里简单
begin
if (byte(edit1.text[1])>byte('a')) and (byte(edit1.text[1])<byte('A')) then
begin
........................
end;
end;
Shift: TShiftState);
var str:string;
i:integer;
temp:string;
begin
temp:='';
if key=115 then
begin
str:=edit1.Text;
for i:=0 to length(edit1.Text) do
begin
if i mod 2=1 then
temp:=temp+edit1.Text[i];
end;
edit1.Text:=uppercase(temp);
end else if key=118 then
Shift: TShiftState);
var i:integer; s:string;
begin
if key=115 then //F4
begin
s:='';
for i:=1 to length(Edit1.Text) do
if (i mod 2)=1 then s:=s+Edit1.Text[i];
Edit1.Text:=UpperCase(s);
end
else if key=118 then //F7
begin
类似,不写了
end;
end;
得到答案就此结贴。