来自:littlefat, 时间:2004-5-11 10:34:00, ID:2603829
不好意思,可以问你一些你程序上的技巧的问题吗?
我下载了你的demo看了一下,感觉很不错!PF中。。。
在新建销售订单的时候,选择客户和选择业务员肯定是用的同一窗体,点击下拉箭头即会出现选择该窗体。我的问题是,你是如何控制选择窗体的显示位置正好位于下拉选择框的下方的(并且,我故意将主窗体拖动到屏幕边缘,发现选择窗体仍能完整显示)?能否给出一点示例代码和说明吗?
来自:delphilai, 时间:2004-5-11 10:50:32, ID:2603887
呵呵,看来你还是比较的仔细,我有写代码控制的,请原谅我的自私,现在系统还没找到买主,还不好公开,因为我想转让版权,如果找到买主了,到时候版权是买主的,要问他是否可以公开。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TO: delphilai
很同情你的遭遇,前面也帮你测出一个Bug(销售开单--->选客户--->新增),但对你的保守态度很难接受。人家这么客气的问你,且这个问题又不涉及你的系统核心,解答一下是可以的。另外,如上面有人所说,现在源码是真的不值钱了。。。祝你好运[8D]
TO: littlefat
其实要实现delphilai程序中的那个效果真的非常简单。可以自己从TCustomComboBox派生一个控件,再实现自己的接口(用于显示不同种类的窗体);也可以不派生控件,直接使用下面代码就可以了:
///////单元一(仅十六行自己写的代码)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
procedure ComboBox1DropDown(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
Unit2;
{$R *.dfm}
procedure TForm1.ComboBox1DropDown(Sender: TObject);
var
pt: TPoint;
begin
with ComboBox1do
begin
pt.X := Left;
pt.Y := Top + Height + 2;
pt := Self.ClientToScreen(pt);
end;
if (Screen.WorkAreaWidth - pt.X) < Form2.Width then
pt.X := Screen.WorkAreaWidth - Form2.Width
else
if pt.X < 0 then
pt.X := 0;
if (Screen.WorkAreaHeight - pt.Y) < Form2.Height then
pt.Y := Screen.WorkAreaHeight - Form2.Height;
SetWindowPos(Form2.Handle, HWND_TOP, pt.X, pt.Y, 0, 0, SWP_NOSIZE);
Form2.Show;
end;
end.
/////单元二(仅一行自己写的代码)
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm2 = class(TForm)
procedure FormDeactivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormDeactivate(Sender: TObject);
begin
Close;
end;
end.