新手提问。请帮忙 (请在帮帮忙) 快帮帮我呀。应经两天了 (100分)

  • 主题发起人 主题发起人 柳树林
  • 开始时间 开始时间

柳树林

Unregistered / Unconfirmed
GUEST, unregistred user!
1。我想让窗体启动后edit1获得焦点,出了下面的错
cannot focus a disabled or invisible window
源代码:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids, DB, ADODB;

type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
DBGrid1: TDBGrid;
Panel1: TPanel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
procedure Button1Click(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.SQL.Clear;
ADOquery1.SQL.Add('select * from ww_duty where du_id='+edit1.Text+' and du_come like '+''''+edit2.Text+'%''' );
showmessage('select * from ww_duty where du_id='+edit1.Text+' and du_come like '+''''+edit2.Text+'%''');
adoquery1.Open ;
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
key:=#0;
selectnext(activecontrol,true,true);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.SetFocus;
end;

end.


2。还有SQL中查询两个字段A1长度15(CHAR),A2(DATETIME)格式
如何通过A1的后四位,A2的前十位查询。用Tquery,Tadoquery都可以

3。在ini文件中有id1=...,id2=...,id3=... ...... 如何在程序初始时写入combobox列表里
4。我昨晚编译了一个程序,今天拿到公司,运行没有反应。。。。气死我了


不好意思。。。新来的,分不多
谢谢各位大侠!!!
 
1。问题出在这里:
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.SetFocus;
end;
不用FormCreate,请改用FormShow方法:
procedure TForm1.FormShow(Sender: TObject);
begin
edit1.SetFocus;
end;
搞定!

2.能不能再说详细一点?你可以用like查询啊~
A1的后4位好说,关键是DATATIME类型的查询,你可以用between指定时间的!

3。请说详细一点~
 
你可以在窗体属性中属性ActiveControl中选中Edit1,因为在Create事件中窗体还是
不可见的,当然你也可以在OnShow事件中用Edit1.setfocus;不过没有必要.
 
同意楼上的,form正在创建呢,它上面的控件此时是不能获取焦点的,只有等form创建完
成就可以了。
 
activecontrol
 
第一个问题已回答,
第二个问题:要把窗体的的KeyPreview属性设置为True,让窗体先得到键盘事件.
第三个问题:请参考Copy和Position两个函数.
 
补充一下查找日期的时候最好先把日期按指定的格式变成字符串,再用Copy和Position来实现.
 
to :笑傲江湖1976
第二个问题跟keypreview有什么关系呀?
我对sql的语法不太熟。最好给个例子
 
to :jrq
3。例如11.ini文件
[id]
id1=111
id2=222
id3=333
.......
如何在程序初始时写入combobox列表里,就是在combobox里看到111。222。333。。。。
 
搞错了,没有看清楚地二个问题.应该是这样的.用Right('dfasad',4)来截取后四个字符,用Convert函数
把日期函数转换成字符串后用Left('asdfa',10)这个是在MS SqlServer中的。
 
to:笑傲江湖1976
我想知道详细的语句,我对语法不太熟
还有用参数查询怎么做
谢谢
 
》例如11.ini文件
》 [id]
》 id1=111
》 id2=222
》 id3=333
》 .......
》 如何在程序初始时写入combobox列表里,就是在combobox里看到111。222。333。。。。

2种方法:1.静态的添加到Items中
2。初始化在formshow中:
for i:=1 to IDCount do
ComboBox1.Items.Add(ID); ID为string
 
to :jrq
什么方法你倒是说呀
 
to :jrq
我想知道是怎么循环出来的
例如总共有7个id
for i=1 to 7 do
begin
id_name:=111.readstring('id',...,idstr);
.......
end
....里如和写
 
你是要问如何读取 .INI 的文件吧?
这是对文件操作的问题啊~
 
是呀,我不知道id_name:=111.readstring('id',...,idstr);
里的(...) 如何用循环变量写
 
这是例程,我没有用过,你自己看一下吧:
procedure TForm1.FormActivate(Sender: TObject);

var
MyIniFile: TIniFile;
begin
MyIniFile := TIniFile.Create('myapp.ini');
with MyIniFile do
begin
if ReadBool('AutoLoad', 'FormProperties', False) = True then
begin
Visible := ReadBool('FormOptions', 'Visible', True);
Color := TColor(ReadInteger('FormOptions', 'Color', clWindow));
Caption := ReadString('FormOptions', 'Caption', 'Main');
end;
MyIniFile.Free;
end;
 
你这个跟我要求的不一样呀!!!
 
你能不能把你的文件情况详细描述一下?
 

Similar threads

I
回复
0
查看
763
import
I
I
回复
0
查看
778
import
I
I
回复
0
查看
502
import
I
后退
顶部