当前位置:主页>仓库管理软件> 列表

谁有支持overwrite的edit控件? (200) 找管家婆软件下载

财务软件版1楼: 即可重写(改写)的 edit?

2楼: 你的改写是什么概念
autoselect属性,不可以吗? 如用友财务软件u8

3楼: 谢过 SiWeiLiuLang,
改写是什么概念? 是象在word中一样,新录入的一个字符 覆盖原光标右边的一个英文或汉字字符。如果录入的是词组,则顺次覆盖相应个数的字符。

4楼: 我没有使用控件,楼主觉得有必要,可以从TCustomEdit重新继承一个,以下测试代码给你了,楼主也可以从以下地址下载:
地址: ftp.mlfjnp.com
帐户和密码均为:dfw

unit frmMain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
OverriteBtn: TButton;
procedure FormCreate(Sender: TObject);
procedure OverriteBtnClick(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
OverriteFlag:boolean;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
OverriteFlag:=False;
end;

procedure TForm1.OverriteBtnClick(Sender: TObject);
begin
OverriteFlag:=not OverriteFlag;
if OverriteFlag then OverriteBtn.Caption:=''改写''
else OverriteBtn.Caption:=''插入'';

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var tt:TPoint;
begin
if Key in [''0''..''9'',''a''..''z'',''A''..''Z''] then //在此可以加入一些判断,感觉输入汉字时,会有一点问题
if OverriteFlag then
begin
keybd_event(VK_DELETE, MapVirtualkey(VK_DELETE, 0),
KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_DELETE, MapVirtualkey(VK_DELETE, 0),
KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
end;

GetCaretPos(tt);
Label1.Caption:=''x=''+IntToStr(tt.X)+'',y=''+IntToStr(tt.y);

end;

end.

5楼: 多谢 chnplzh。

你的示例除汉字未做处理外,对于用 shift 配合 录入的字符(如按shift进行大小转换)也不能接收,你试一下

6楼: 有趣, 没有想到 TEdit 没有这个功能, 我写一个给你

财务软件版7楼: xuxiaohan 大侠:
太感谢了!急切期待着你的大作。

8楼: TvcEdit = class(TEdit)
private
FvAlign: TvAlign;
FhAlign: TAlignment;
FWordWrap: boolean;
FWantReturn: boolean;
FTextOffset: integer;
procedure SetvAlign(const Value: TvAlign);
procedure vAlignChange;
procedure SethAlign(const Value: TAlignment);
procedure SetWordWrap(const Value: boolean);
procedure SetWantReturn(const Value: boolean);
procedure SetTextOffset(const Value: integer);
[blue]procedure wmImeChar(var msg: Tmessage); message WM_IME_CHAR;
procedure wmChar(var msg: Tmessage); message wm_Char;[/blue]
protected
procedure KeyPress(var Key: Char); override;
procedure CreateParams(var Params: TCreateParams); override;
public
constructor Create(AOwner: TComponent); override;
published
property vAlign: TvAlign read FvAlign write SetvAlign;
property hAlign: TAlignment read FhAlign write SethAlign;
property WordWrap: boolean read FWordWrap write SetWordWrap;
property WantReturn: boolean read FWantReturn write SetWantReturn;
property TextOffset: integer read FTextOffset write SetTextOffset;

end;


procedure TvcEdit.wmImeChar(var msg: Tmessage);
begin
inherited;
keybd_event(VK_DELETE, MapVirtualkey(VK_DELETE, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_DELETE, MapVirtualkey(VK_DELETE, 0), KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
BEEP;
end;

procedure TvcEdit.wmChar(var msg: Tmessage);
begin
inherited;
keybd_event(VK_DELETE, MapVirtualkey(VK_DELETE, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_DELETE, MapVirtualkey(VK_DELETE, 0), KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
BEEP;

end;

上面是在我的控件上面加上的。 测试通过。

9楼: 可以把你的 完整版本发到我的邮箱吗?


vga126@126.com
在改写方式下,光标能否变成一方块?罩住要被改写的第一个字符或汉字?

10楼: 因为我的这个控件是在一个很大的单元里面的,单元里面有很多其他的控件,又uses 到许多单元, 所以我很难 emial 给你

光标能否变成一方块?罩住要被改写的第一个字符或汉字? 没有试过, 我看看有没有办法

11楼: 学习下

12楼: 帮你顶 如管家婆软件下载

13楼: 要OVERWRITE还不容易呀,在Edit的OnEnter事件中设置键盘的Insert为FALSE,OnExit事件重新设置键盘的Insert状态为True

财务软件版14楼: 我感觉好象是就像把INSERT键是否按下效果。

15楼: 楼主说得我早晕了,就是Insert+光标定位到最后嘛

16楼: 楼上两位说的没错,我就是要这个效果,刻 EDIT 对Insert键按下奇偶数次以后,没有产生预期效果,不知两位是否测试过,要是管用的话我就不发贴了.

17楼: 晕倒,你究竟有没有测试过我的代码?完全没有问题的!!!!

18楼: 改写就是overwrite吧

19楼: 帮顶!

http://www.source520.com

站长开发推广同盟 站长朋友的终极驿站
同时拥有海量源码电子经典书籍下载

http://www.source520.com/search/search.asp

"编程.站长"论坛搜索引擎-----为中国站长注入动力!

20楼: 将光标变成 方块, 我现在无能为力, 如果你有结果,请告诉我。
overwrite 按照我的方法可以实现的。

财务软件版21楼: 接受答案了.