关于DBEDIT焦点的问题 |
尚未結案
|
fangwy
中階會員 發表:99 回覆:139 積分:62 註冊:2003-09-10 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
fangwy
中階會員 發表:99 回覆:139 積分:62 註冊:2003-09-10 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
fangwy
中階會員 發表:99 回覆:139 積分:62 註冊:2003-09-10 發送簡訊給我 |
procedure TForm1.DBEdit1Exit(Sender: TObject);
begin
if Trim(DBEdit1.Text)='000' then
begin
ShowMessage('不能为000!');
DBEdit1.SetFoucs;
end;
end;
procedure TOperF.bbCancelClick(Sender: TObject);
begin
tbTAX_OPER.Cancel;
end;
procedure TOperF.bbExitClick(Sender: TObject);
begin
Close;
end;
上例中当DBEDIT1中输入错误值'000',不允许跳离DBEDIT1.去做其他数据的输入,但用户此时可能会想按bbCancel取消当前记录的修改或按bbExit关闭窗体.但因DBEDIT1中有无效的值,
所有焦点一离开就提示'不能为000!',必须先删除无效值.我希望实现的是如果此时按bbCancel,bbExit不触发这个提示信息.
其实目前我有一个方法,就是用TSpeedButton代替TButton来做bbCancel和bbExit.因为TSpeedButton不能聚焦,点击时不会使焦点跳离DBEDIT1,也就不会提示'不能为000!'.但又能取消当前记录的修改或关闭窗体.
但用TSpeedButton也有问题,因不能聚集,所有按TAB键就无法移到TSpeedButton上,不知两位版主有没有更好的方法. 發表人 - fangwy 於 2003/10/17 11:27:15
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
fangwy
中階會員 發表:99 回覆:139 積分:62 註冊:2003-09-10 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DBCtrls, DB, DBTables; type
TForm1 = class(TForm)
DBEdit1: TDBEdit;
Button1: TButton;
cancelButton: TButton;
Edit1: TEdit;
Table1: TTable;
DataSource1: TDataSource;
procedure DBEdit1Exit(Sender: TObject);
private
procedure checkcancel;
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm}
procedure Tform1.checkcancel;
var
Pt : TPoint;
WinCon : TWinControl;
WND : HWND;
begin
GetCursorPos(Pt);
WND :=Handle;
repeat
WinCon := FindControl(WND);
WND := ChildWindowFromPoint(WinCon.Handle,WinCon.ScreenToClient(Pt));
if WND = 0 then exit;
until (WND = WinCon.Handle) or (WinCon.ControlCount <= 0);
if WinCon is Tbutton then
if WinCon.Name='cancelButton' then
abort;
end;
procedure TForm1.DBEdit1Exit(Sender: TObject);
begin
checkcancel;
if dbedit1.Text='1111' then
dbedit1.SetFocus;
end; ...................
|
fangwy
中階會員 發表:99 回覆:139 積分:62 註冊:2003-09-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |