EDIT控件 (50分)

A

allen72

Unregistered / Unconfirmed
GUEST, unregistred user!
1.我是个初学者; 对多个edit编辑框,输入一项后,怎么样可用ENTER 键到下一个edit窗口,或用上箭头回到上个焦点?

2.对多个edit编辑框, 变动字体,我用一个button 和一个Fontdialog,但用mouse 点button,焦点变化,怎样定位随意的edit??.font ??

3.打印窗口中的文字,怎么样比较方便的定位行列,我只在书中找到用点来定???
 
L

liuge

Unregistered / Unconfirmed
GUEST, unregistred user!
1.在edit的onKeyup事件里判断按键,然后执行:EditX.setfocus;
2.在button的click事件调用fontdialog后,再执行:EditX.setfocus
3.我只在书中找到用点来定???????????????????????
 
L

Liu JZX

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=Vk_Return then
Edit2.SetFocus
end;
 
L

Liu JZX

Unregistered / Unconfirmed
GUEST, unregistred user!
1、
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=Vk_Return then
Edit2.SetFocus;
if key=vk_down then
Edit2.SetFocus;

end

3、
procedure TForm1.Edit1Change(Sender: TObject);
var
row,col,first:integer;
begin
With edit1 do
begin
Row:=SendMessage(Handle,EM_LINEFROMCHAR,SelStart,0);
first:=SendMessage(Handle,EM_LINEINDEX,Row,0);
col:=selStart-first;
end;
statusbar1.SimpleText:=inttostr(row)+' '+inttostr(col);;
end;
 
A

allen72

Unregistered / Unconfirmed
GUEST, unregistred user!
回JZX ; 我现在不能指定是edit1 还是 edit2 , 因为有很多的edit
 
L

Liu JZX

Unregistered / Unconfirmed
GUEST, unregistred user!
下面程序可供参考
将eidt1、edit2的click指定为myclick

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure MyClick(Sender: TObject);
private
{ Private declarations }
public
end;



var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.MyClick(Sender: TObject);
begin
case TEdit(Sender).tag of
0:showmessage(TEdit(sender).text);
1:showmessage(TEdit(sender).text);
end
end;


end.
 
C

cAkk

Unregistered / Unconfirmed
GUEST, unregistred user!
2.用findcomponent函数.
 
G

g622

Unregistered / Unconfirmed
GUEST, unregistred user!
同意Liu JZX:用sender判断是哪个edit,
让所有edit用同一个事件处理函数。
 
S

saintor

Unregistered / Unconfirmed
GUEST, unregistred user!
对第一个问题:
在OnKeyDown中执行:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Case Key Of
VK_RETURN: TWinControl(Sender).SelectNext(TWinControl(Sender),
True, True);
VK_UP: TWinControl(Sender).SelectNext(TWinControl(Sender),
False, True);
......
end;
end;
用SelectNext可以按照确定的Tab顺序移动焦点。而且这个过程可以是完全通用的。
 
B

Boat

Unregistered / Unconfirmed
GUEST, unregistred user!
预先确定好 TEdit 的顺序然后采取 saintor 的方法!
 
A

allen72

Unregistered / Unconfirmed
GUEST, unregistred user!
thank you !!!!
 
L

liwei

Unregistered / Unconfirmed
GUEST, unregistred user!
1.在edit的onKeyup事件里判断按键,然后执行:EditX.setfocus;
===应该在FORM的ONKEYDOWN里判断, 象下面这样
(具体函数名称可能有点错, 您自己查一下HELP吧).
IF (ACTIVECONTROL IS TEDIT) AND (KEY=VK_RETURN) THEN
WHILE (SELECTNEXTCOLTROL(ACTIVECONTROL) IS TEDIT) DO;
2.在button的click事件调用fontdialog后,再执行:EditX.setfocus
===设一个全局变量来记录最后一个离开的TEDIT. 再在BUTTON的CLICK中调用
它的SETFOCUS.

3.我只在书中找到用点来定???????????????????????
===不太明白. 要打印不如用QR. 打点小东西它还是行的.
 
顶部