关于几分之几的数字输入。(150分)

  • 主题发起人 主题发起人 isaac
  • 开始时间 开始时间
I

isaac

Unregistered / Unconfirmed
GUEST, unregistred user!
3个问题
1,打算在edit框中输入几分之几之类的数字到数据库中,
2。在dbgrid中输入数据时,如何实现数据输完后回车直接跳到下一个输入框。
3。我在菜单上在打开一个From后,该菜单项显灰,只有在该From关闭后,该菜单endable才有true.
我现在在关闭from后用
该菜单。endable:=true;
一直提示错误,说该菜单没定义。为什么。谢谢。
第一个80分,第二和第三个70分。
 
1. 自己做个简单的解释器, 分析edit.text, 计算出结果添入数据库.
简单的例子: 比如输入: 1 2/3 表示1又3分之2.
edit1.onexit或者edit1.onkeydown(判断是否return键)中判断是否往数据库中写:
var
i: Integer;
n, n1:do
uble;
s: string;
begin
s := trim(edit1.text);
if s = '' then

// 出错;
i := 1;

n1 := 0;
while (i <= length(s)) and (s in ['0','1','2','3','4','5','6','7','8','9'])do
inc(i);
if i > 1 then
n := strtoint(copy(s, 1, i-1))
else
// 出错
delete(s, 1, i - 1);
s := trim(s);
if s[1] <> '/' then
begin
n1 := n;
i := 1;
while (i<=length(s)) and (s in ['0','1','2','3','4','5','6','7','8','9'])do
inc(i);
if i > 1 then
n := strtoint(copy(s, 1, i-1))
else

出错;
delete(s, 1, i-1);
end;
if (s <> '') and (s[1] = '/') then
n := n / strtointdef(copy(s, 2, length(s)), 1)
else
if (s <> '') then
//出错
table.edit;
table.fieldbyname('xxxx').asfloat := n+n1;
table.post;
end;

2. dbgrid1.onkeydown中写如下代码:
if (key = VK_RETURN) and dbgrid1.editormode then
begin
key := 0;
if dbgrid1.selectedindex < dbgrid1.fieldcount - 1 then
dbgrid1.selectedindex := dbgrid1.selectedindex + 1;
end;

3. 看不懂
 
3.你在From单元的
implementation下加入
uses MainForm;//MainForm是主Form的单元。
在OnClose中加入
MainFm.MenuIt.Enabled:=True;//MainFm为主Form,MenuIt为你要打开的菜单项。
 
第一个问题:用Another_eYes的方法吧。
第二个问题:
procedure TForm1.DBEdit1KeyPress(Sender: TObject;
var Key: Char);
begin
if Key = #13 then
begin
SendMessage(GetParentForm(Self).Handle, WM_NEXTDLGCTL, 0, 0);
Key := #0;
end;
end;
第三个问题:
你的form是不是free了?你应该在form的onclosequery中 菜单.enabled:=true;
 
1,2.Another_eyes
3.我觉得还是www的方法切中了题意
 
多人接受答案了。
 
其实hexi的方法我也用过,但不知为什么一直出错,因我是刚学的,因此就怀疑
自己的方法有错。谢谢hexi
another_eyes:谢谢。但我还是没法让它正常显示出几分之几。也许有谁有好主意。
谢谢各位的帮助。
 
后退
顶部