30. 11.

如何给新建控件取名字
就如下,当然下面的效率不高也不好看。
      FNewButton.Name:=FNewButton.ClassName+IntToStr(TMyPageControl(Component).PageCount+1);

自己写的控件取名字?

mark

如果是自定义控件的话,系统会自动取名字;
如果是动态创建控件的话,没必要取名字.

如果你使用CreateComponent的话,系统会自动起名字的。

呵呵,我还没自定义过控件过,学习了!

取个名还要好看?

自定义孔件的话
系统会自动起名的

Study

一般都是控件的缩写再加上功能名,比如要为一个Button命名,就可以这样btnOK


30. 11.

我在窗体上做一个查询程序,放置一个Edit控件,通过两个按钮来选择查询的两个字段,一个是代号dh(数值型),另一个是姓名缩写PY(字符型),按代号查询通过,按缩写查询时提示错误,是不是数据类型不对,请问应怎么做?

我没用ADOQuery,一种方法是用Adotable的filter属性过滤,今天看了其他资料想改用findkey试一试。

如果用ADOQuery连接access数据库总是出现数据库登陆窗口,我还不知道怎么取消掉,挺烦的。

引用 2 楼 zxj366 的回复:
我没用ADOQuery,一种方法是用Adotable的filter属性过滤,今天看了其他资料想改用findkey试一试。

filter:= 'py = ' + QuotedStr(Edit1.Text);

引用 3 楼 zxj366 的回复:
如果用ADOQuery连接access数据库总是出现数据库登陆窗口,我还不知道怎么取消掉,挺烦的。

是不是用adoconnection了?那就把 ADOConnection1.LoginPrompt:= False;


30. 11.

就像QQ的系统消息一样
在窗体的右下角出现提示,最好出现5分钟后自动消失
嘿嘿,

其实可以有两种方式来实现
一种是被动式,即由QQ的服务端通过网络广播消息到客户端,客户端收到广播就显示.
另一种是被动方式,由客户端定时查询服务端的消息标志,有新信息就提取显示.

上面说错了是

一种是被动式,即由QQ的服务端通过网络广播消息到客户端,客户端收到广播就显示.
另一种是动方式,由客户端定时查询服务端的消息标志,有新信息就提取显示.


30. 11.

以前曾经将窗体上的内容整体拷贝下来,存在delphi中,当需要的时候可将其粘贴到其他窗体上,现在忘了怎么弄了。

平常那样复制,然后粘贴在代码框就行
需要用到其他窗体,把代码复制,直接粘贴在其他窗体

把它存为一个模板!
在file–>new–>other中找到它不就可以

ctrl+A

和平时复制其他东西一样。

全选,复制就可以了

CTRL+A

可以,另存为模板啊。


29. 11.

定义ExcelApp,MyWorkBook,EWorksheet:Variant;来操作excel
在保存时,现在用的是:MyWorkBook.saveas('c:a.xls')
但用excel2007时.想保存成2003的格式就不行了.
导出的文件名是a.xls,但实际的格式还是2007的.我从网上查了半天,只查到这么一句:
MyWorkBook.SaveAs(SavePath,xlNormal,'','',False,False);
但我编译的时候报错:workbook类的saveas方法无效.
请问保存格式的参数应该如何加?

2003没问题,没试过2007,帮顶

建议保存为低版本的吧,你的这种方法取决于本机excel的版本,老控件又没提供转2007的接口,所以建议你使用第三方的控件去把数据存为excel吧,比如dxdbgrid,cell,formulaone

我就是想存为低版本的啊.只是不知道怎么存.
没人理了.还是改代码吧.唉….

顶3楼的

感谢各位,郁闷了我两天,终于搞定了.
把excel2007的默认保存格式设置为*.xls,用savecopyas('c:a.xls')就可以了.


29. 11.

有谁知道delphi中如何形成曲线图并导出到execl中?急需!

曲线也要导出吗?
还是在Excel里面画曲线!
delphi里面可以用TeeChart或者其它控件

谢谢byteh,是在excel里面画曲线,请各位务必帮忙。

留下你的QQ或者mail,发给你个东西,需要你自己研究了!

抓紧时间,马上要走了!

zhouqing347056@163.com,谢谢!

这个例程不是画曲线的,但是肯定能画!
你自己参考一下其它的资料!

已经发送


29. 11.

请大家赐教下,一个cxGrid如何同时显示两个表的内容?

结构一样?
可以用 TdxMemData,手动的把数据Append进去。

结构不一样,那cxGrid创建不同的View,连接不同的表。

cxgrid下有demo的
你可以建立两个view来实现

路过

可以用view来实现这个功能,cxgrid的功能十分强大。

我想在cxGrid的同一个VIEW中显示两个表的内容

引用 6 楼 biscuit2 的回复:
我想在cxGrid的同一个VIEW中显示两个表的内容

结构一样么?

用TdxMemData。

引用 6 楼 biscuit2 的回复:
我想在cxGrid的同一个VIEW中显示两个表的内容

如果結束一樣,可以用SQL關聯起來顯示.

选中Grid,RootLevelOptions中DetailTabsPosition设置为dtpTop
右下角Grid,右击选中Add Level,让Grid下有两个Level,选中Level,设置它的Caption
Level上右击,Create View,选DB Table View,每个Level都创建一个DB Table View
选中View,DataControler-DataSource设置好,打开绑定的数据集,在View上右击Create All Columns

这样cxGrid就同时显示两个表了,可以用顶部的Tab进行切换。

  如果两个表有关系,两个表关联以后,在同一个CXGRID 中显示。

我自己找到答案了,就是ADOQUERY调用SQL语句,同时从多个表中提取数据,组成一个临时表,这样就可以在cxGrid上显示了.

只能说我高估楼主了。。。

不知道你说的是主子表的两个信息,还是建立多个TReeView?

引用 12 楼 lake_cx 的回复:
只能说我高估楼主了。。。

同意。。。


29. 11.

delphi中,设置断点后,如何查看断点的内容?其中每个栏的意义是什么?

不好意思,我分不够了,先欠着,我水平高了连本带利都还你!!

引用 1 楼 cloudlyanhart 的回复:
运行程序后,到段点会自动跳出的,把鼠标放上去就会自动显示变量当前的值
–2:鼠标点击内容+CTRL键

…肯定会被扣分的~

在那个端点的圆点上点右键,选择
breakpoint properties…

断点属性:

condition:  满足条件时中断,默认是空值,即只要执行的这个断点就中断。
pass count:  跳过次数,默认为0,即从第0次开始,每次经过该断点就中断。
Group: 没用过

你们用的是哪个版本的DELPHI?

编译后的程序运行时?  还是程序编译时?

编译后就可以设置断点,编译后的程序运行时可以通过断点调试阿

也可以用ctrl+f7试试

不明LZ在说什么

好像没那么简单,呵呵.


28. 11.

输入两个日期,把这两个日期之间的所有日期取出来 
  如果是:2008-11-01至2008-11-30(同为一个月) 
  则为:2008-11-01,2008-11-02,2008-11-03。。。2008-11-30 
  —- 
  如果是:2008-12-10至2009-01-02(不同的月,有31号的月份) 
  则为:2008-12-10,2008-12-30,2008-12-31,2009-01-01,2009-01-02 
  —-
之间的日期一定要正确

  谢谢!

为什么提示:undeclared identifier incDay啊

这种情况用delphi帮助
Unit

DateUtils

引用 3 楼 cnzzlp 的回复:
这种情况用delphi帮助
Unit

DateUtils

呵呵,忘记交代了

我对于pascal的语法,dephi的应用还不熟悉,只是因为工作才刚接触了两天,所以希望各位尽量帮忙,最好能给个可执行的例子,不胜感激

汗,上面不是给代码了吗?

那个提示有错误啊,主要是我现在dephi一窍不通,各位拜托了

引用 1 楼 hulihui 的回复:
Delphi(Pascal) codeprocedure TForm1.Button1Click(Sender: TObject);
var
  d1,d2: TDateTime;
  k: integer;
begin
  d1 := Now;
  d2 := IncDay(d1,2);
  k := 0;
  while(d1 < d2) do begin
    showmessage(DateToStr(d1));
    d1 := IncDay(d1, 1);
  end;
end;

代码不错,可惜k没用

需要加dateutils

谢了,1楼

引用 8 楼 zhangxiaommmm 的回复:
引用 1 楼 hulihui 的回复:
Delphi(Pascal) codeprocedure TForm1.Button1Click(Sender: TObject);
var
d1,d2: TDateTime;
k: integer;
begin
d1 := Now;
d2 := IncDay(d1,2);
k := 0;
while(d1  < d2) do begin
showmessage(DateToStr(d1));
d1 := IncDay(d1, 1);
end;
end;

代码不错,可惜k没用

看得仔细啊,当时想用循环,后来发现多余了。


28. 11.

如题:
用ShowWindow(Application.Handle,SW_HIDE);

SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
方法均失效了。

编译环境:XP+Delphi2007

以上方法对BorderStyle为bsNone的窗体无效,求解决方法。

{$ifdef   ver180}
    Application.MainFormOnTaskbar   :=   True;
    {$else}
    SetWindowLong(Application.Handle,   GWL_EXSTYLE,
            GetWindowLong(Application.Handle,   GWL_EXSTYLE)   or   WS_EX_TOOLWINDOW);
    {$endif}

测试了下,采用楼上两位的代码均未解决问题。
继续询问中……

你最好帖下代码,光凭你这2句谁判断的出问题啊

方法一(对Delphi2007有效)
procedure   TMain.FormShow(Sender:   TObject);
begin
  ShowWindow(Application.Handle,SW_HIDE);
end;

方法二(对Delphi2007无效)
procedure   TMain.FormCreate(Sender:   TObject);
begin
    //在任务条隐藏应用程序
    SetWindowLong(Application.Handle,GWL_EXSTYLE,
                                GetWindowLong(Application.Handle,GWL_EXSTYLE)   or   WS_EX_TOOLWINDOW   and   not   WS_EX_APPWINDOW);
end;

以上两种方法对Delphi2007的BorderStyle为bsNone的窗体无效!
注意关键词是:Delphi2007!
还望高手指点一下。最好在测试Delphi2007测试下。
谢谢。

procedure   TForm1.FormShow(Sender:   TObject);
begin
    SetWindowLong(Self.Handle,   GWL_EXSTYLE,   WS_EX_TOOLWINDOW);
end;
这样试试,看看是不是你要的~

SetWindowLong(Self.Handle,   GWL_EXSTYLE,   WS_EX_TOOLWINDOW);

    SetWindowLong(Application.Handle,GWL_EXSTYLE,
                                GetWindowLong(Application.Handle,GWL_EXSTYLE)   or   WS_EX_TOOLWINDOW   and   not   WS_EX_APPWINDOW);
肯定不行的。在Delphi2007下任务栏上普通窗口都隐藏不了。

继续咨询……

试试
begin
    Application.Initialize;
    SetWindowLong(Application.Handle,   GWL_EXSTYLE,   GetWindowLong(Application.Handle,   GWL_EXSTYLE)   or   WS_EX_TOOLWINDOW);
    Application.CreateForm(TForm1,   Form1);
    SetParent(Application.Handle,form1.Handle);
    Application.Run;
end.

问题自己解决了!

1.在dpr文件中设置
Application.MainFormOnTaskbar   :=   False;

2.在主窗口pas文件中设置
procedure   TMain.FormShow(Sender:   TObject);
begin
  ShowWindow(Application.Handle,SW_HIDE);
end;