TDBGridEh,TroundRectShape,TMathparser,TdbDatetimeediteh,Tyyttreeview,TSuitbutton,Trectshape我是菜鸟,初次接触,需要改一个程序,打开缺很多东西,偶只知道这是些控件,在网上找不着啊,请帮帮忙吧。还有偶不知道他的程序是用delphi的哪个版本写的,怎么区分啊?是不是在delphi7上运行都不会有问题呢?
粘段代码上来,请帮忙看一下。unit LogUnit;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, TFlatPanelUnit, TFlatTitlebarUnit, TFlatButtonUnit,
StdCtrls, TFlatComboBoxUnit, TFlatColorComboBoxUnit, TFlatEditUnit, DB,
DBTables, TFlatMemoUnit, Buttons, ADODB, SUIButton, SUIForm, WinSkinData,
Shapes;
type TSetLayeredWindowAttributes = function(hwnd:HWND;crkey:integer;bAlpha:Byte;dwFlags:Integer):BOOL; StdCall;
EDLLLoadError = class(Exception);//同时分创建一个出错记录类 TLogForm = class(TForm)
Timer1: TTimer;
Writer: TLabel;
DateNow: TLabel;
TimeNow: TLabel;
EnterNameLabel: TLabel;
Label1: TLabel;
EnterPasswordLabel: TLabel;
Label2: TLabel;
EnterPasswordEdit: TFlatEdit;
EnterOKButton: TsuiButton;
ExitButton: TsuiButton;
RoundRectShape1: TRoundRectShape;
procedure ExitButtonClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure EnterButtonClick(Sender: TObject);
procedure EnterOKButtonClick(Sender: TObject);
procedure EnterNameComboBoxChange(Sender: TObject);
procedure EnterPasswordEditKeyPress(Sender: TObject; var Key: Char);
procedure LogAboutButtonClick(Sender: TObject);
procedure EnterPasswordEditChange(Sender: TObject);
procedure EnterNameComboBoxDblClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
LogForm: TLogForm;implementationuses
MainUnit,DMUnit,UserUnit;{$R *.dfm}procedure TLogForm.ExitButtonClick(Sender: TObject);
//关闭
begin
Application.Terminate;
end;procedure TLogForm.Timer1Timer(Sender: TObject);
//定时器
begin
DateNow.Caption:='日期:'+DateToStr(Date);
TimeNow.Caption:='时间:'+TimeToStr(Time);
end;procedure TLogForm.FormCreate(Sender: TObject);
//窗体初始化
var
ZAppName: array[0..127] of char;
Hold: String;
Found: HWND;
RecordCount,RecordTotal:integer; //用于存储记录总数及记录计数器中的值
begin
LogTF:=False;
DateNow.Caption:='日期:'+DateToStr(Date);
TimeNow.Caption:='时间:'+TimeToStr(Time);
// EnterWall.Visible:=True;
// AboutWall.Visible:=False;
//禁止程序重复运行
//---------------------------------
Hold := Application.Title;
Application.Title := 'OnlyOne'
+ IntToStr(HInstance); // 暂时修改窗口标题
StrPCopy(ZAppName, Hold); // 原窗口标题
Found := FindWindow(nil, ZAppName); // 查找窗口
Application.Title := Hold; // 恢复窗口标题
if Found<>0 then begin
// 若找到则激活已运行的程序并结束自身
MessageBeep(1);
//MessageDlg('程序已在运行!',mtConfirmation,[mbOK],0);
Application.MessageBox('程序已在运行!','提示',MB_OK+MB_ICONINFORMATION);
ShowWindow(Found, SW_RESTORE);
Application.Terminate;
end;
//-----------------------------------
//登录页面用户列表初始化
//-----------------------------------
dmmain:=tdmmain.Create(self);
with dmMain do
begin
adoqcs.Open;
Qyname:=adoqcs.Fieldbyname('企业名称').AsString;
label1.Caption:=qyname;
adoqBase.Close;
adoqBase.SQL.Clear;
adoqBase.SQL.Add('select * from XT_操作员 where not 删除标志');
adoqBase.Prepared;
adoqBase.Open;
RecordTotal:=adoqBase.RecordCount;//统计表中记录总数
if RecordTotal>0 then//若记录数大于0,则向用户列表中添加
begin
adoqBase.First;//指向数据库的第一条记录
for RecordCount:=1 to RecordTotal do
begin
//EnterNameComboBox.Items.Add(adoqBase.FieldByName('编码').AsString);
//向用户列表中添加用户名
adoqBase.Next;//移动游标到下一条记录
end;
//EnterNameComboBox.ItemIndex:=0;
//EnterNameComboBox.OnChange(self);
end;
end;
//-----------------------------------
end;procedure TLogForm.EnterButtonClick(Sender: TObject);
//登录页面有效
begin
// EnterWall.Visible:=True;
//AboutWall.Visible:=False;
EnterPasswordEdit.Clear;//清空早先有可能准确输入的密码,提高安全性
end;procedure TLogForm.EnterOKButtonClick(Sender: TObject);
//确认登录
begin
with dmMain do
begin
{if adoqBase.Locate('编码',
EnterNameComboBox.Items[EnterNameComboBox.ItemIndex],
[loCaseInsensitive]) then//若找到此用户,即此用户为已注册用户}
if EnterPasswordEdit.Text=adoqBase.FieldByName('密码').AsString then
//若密码输入准确,则允许登录
begin
UserName:=adoqBase.FieldValues['编码'];
LogTF:=True;
adoqBase.Close;
LogForm.Close;
end
else
if EnterPasswordEdit.Text='' then
Application.MessageBox('请输入密码!','提示',MB_OK+MB_ICONINFORMATION)
else
Application.MessageBox('密码错误,请重新输入!','提示',MB_OK+MB_ICONINFORMATION)
// else
// Application.MessageBox('请输入准确的用户名!','提示',MB_OK+MB_ICONINFORMATION);
end;
end;procedure TLogForm.EnterNameComboBoxChange(Sender: TObject);
//用户列表事件,将当前用户所属的组显示出来
begin
with dmMain do
begin
{if adoqBase.Locate('编码',
EnterNameComboBox.Items[EnterNameComboBox.ItemIndex],
[loCaseInsensitive]) then
EnterGroupLabel.Caption:=adoqBase.FieldByName('名称').AsString
else
EnterGroupLabel.Caption:='';
//输入用户名提示
if EnterNameComboBox.Items[EnterNameComboBox.ItemIndex]='' then
EnterNameComboBox.ShowHint:=True
else
EnterNameComboBox.ShowHint:=False;}
end;
end;procedure TLogForm.EnterPasswordEditKeyPress(Sender: TObject;
var Key: Char);
begin
if Key=#13 then
EnterOKButtonClick(Self);//提供快捷的登录方式(指向确认登录按钮的事件)
end;procedure TLogForm.LogAboutButtonClick(Sender: TObject);
//关于
begin
// AboutWall.Visible:=True;
// EnterWall.Visible:=False;
Application.Terminate;
end;procedure TLogForm.EnterPasswordEditChange(Sender: TObject);
begin
//输入密码提示
if EnterPasswordEdit.Text='' then
EnterPasswordEdit.ShowHint:=True
else
EnterPasswordEdit.ShowHint:=False;
end;procedure TLogForm.EnterNameComboBoxDblClick(Sender: TObject);
begin
{ with dmMain do
begin
{if EnterNameComboBox.ItemIndex+1=EnterNameComboBox.Items.Count then
EnterNameComboBox.ItemIndex:=0
else
EnterNameComboBox.ItemIndex:=EnterNameComboBox.ItemIndex+1;
//复制OnChange的事件
if adoqBase.Locate('编码',
{ EnterNameComboBox.Items[EnterNameComboBox.ItemIndex],
[loCaseInsensitive]) then
EnterGroupLabel.Caption:=adoqBase.FieldByName('名称').AsString
else
EnterGroupLabel.Caption:='';
//输入用户名提示
if EnterNameComboBox.Items[EnterNameComboBox.ItemIndex]='' then
EnterNameComboBox.ShowHint:=True
else
EnterNameComboBox.ShowHint:=False;
end;}
end; procedure TLogForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if not(LogTF) then
Application.Terminate;
end;procedure TLogForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
dmMain.adoqBase.Close;
end;end.
粘段代码上来,请帮忙看一下。unit LogUnit;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, TFlatPanelUnit, TFlatTitlebarUnit, TFlatButtonUnit,
StdCtrls, TFlatComboBoxUnit, TFlatColorComboBoxUnit, TFlatEditUnit, DB,
DBTables, TFlatMemoUnit, Buttons, ADODB, SUIButton, SUIForm, WinSkinData,
Shapes;
type TSetLayeredWindowAttributes = function(hwnd:HWND;crkey:integer;bAlpha:Byte;dwFlags:Integer):BOOL; StdCall;
EDLLLoadError = class(Exception);//同时分创建一个出错记录类 TLogForm = class(TForm)
Timer1: TTimer;
Writer: TLabel;
DateNow: TLabel;
TimeNow: TLabel;
EnterNameLabel: TLabel;
Label1: TLabel;
EnterPasswordLabel: TLabel;
Label2: TLabel;
EnterPasswordEdit: TFlatEdit;
EnterOKButton: TsuiButton;
ExitButton: TsuiButton;
RoundRectShape1: TRoundRectShape;
procedure ExitButtonClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure EnterButtonClick(Sender: TObject);
procedure EnterOKButtonClick(Sender: TObject);
procedure EnterNameComboBoxChange(Sender: TObject);
procedure EnterPasswordEditKeyPress(Sender: TObject; var Key: Char);
procedure LogAboutButtonClick(Sender: TObject);
procedure EnterPasswordEditChange(Sender: TObject);
procedure EnterNameComboBoxDblClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
LogForm: TLogForm;implementationuses
MainUnit,DMUnit,UserUnit;{$R *.dfm}procedure TLogForm.ExitButtonClick(Sender: TObject);
//关闭
begin
Application.Terminate;
end;procedure TLogForm.Timer1Timer(Sender: TObject);
//定时器
begin
DateNow.Caption:='日期:'+DateToStr(Date);
TimeNow.Caption:='时间:'+TimeToStr(Time);
end;procedure TLogForm.FormCreate(Sender: TObject);
//窗体初始化
var
ZAppName: array[0..127] of char;
Hold: String;
Found: HWND;
RecordCount,RecordTotal:integer; //用于存储记录总数及记录计数器中的值
begin
LogTF:=False;
DateNow.Caption:='日期:'+DateToStr(Date);
TimeNow.Caption:='时间:'+TimeToStr(Time);
// EnterWall.Visible:=True;
// AboutWall.Visible:=False;
//禁止程序重复运行
//---------------------------------
Hold := Application.Title;
Application.Title := 'OnlyOne'
+ IntToStr(HInstance); // 暂时修改窗口标题
StrPCopy(ZAppName, Hold); // 原窗口标题
Found := FindWindow(nil, ZAppName); // 查找窗口
Application.Title := Hold; // 恢复窗口标题
if Found<>0 then begin
// 若找到则激活已运行的程序并结束自身
MessageBeep(1);
//MessageDlg('程序已在运行!',mtConfirmation,[mbOK],0);
Application.MessageBox('程序已在运行!','提示',MB_OK+MB_ICONINFORMATION);
ShowWindow(Found, SW_RESTORE);
Application.Terminate;
end;
//-----------------------------------
//登录页面用户列表初始化
//-----------------------------------
dmmain:=tdmmain.Create(self);
with dmMain do
begin
adoqcs.Open;
Qyname:=adoqcs.Fieldbyname('企业名称').AsString;
label1.Caption:=qyname;
adoqBase.Close;
adoqBase.SQL.Clear;
adoqBase.SQL.Add('select * from XT_操作员 where not 删除标志');
adoqBase.Prepared;
adoqBase.Open;
RecordTotal:=adoqBase.RecordCount;//统计表中记录总数
if RecordTotal>0 then//若记录数大于0,则向用户列表中添加
begin
adoqBase.First;//指向数据库的第一条记录
for RecordCount:=1 to RecordTotal do
begin
//EnterNameComboBox.Items.Add(adoqBase.FieldByName('编码').AsString);
//向用户列表中添加用户名
adoqBase.Next;//移动游标到下一条记录
end;
//EnterNameComboBox.ItemIndex:=0;
//EnterNameComboBox.OnChange(self);
end;
end;
//-----------------------------------
end;procedure TLogForm.EnterButtonClick(Sender: TObject);
//登录页面有效
begin
// EnterWall.Visible:=True;
//AboutWall.Visible:=False;
EnterPasswordEdit.Clear;//清空早先有可能准确输入的密码,提高安全性
end;procedure TLogForm.EnterOKButtonClick(Sender: TObject);
//确认登录
begin
with dmMain do
begin
{if adoqBase.Locate('编码',
EnterNameComboBox.Items[EnterNameComboBox.ItemIndex],
[loCaseInsensitive]) then//若找到此用户,即此用户为已注册用户}
if EnterPasswordEdit.Text=adoqBase.FieldByName('密码').AsString then
//若密码输入准确,则允许登录
begin
UserName:=adoqBase.FieldValues['编码'];
LogTF:=True;
adoqBase.Close;
LogForm.Close;
end
else
if EnterPasswordEdit.Text='' then
Application.MessageBox('请输入密码!','提示',MB_OK+MB_ICONINFORMATION)
else
Application.MessageBox('密码错误,请重新输入!','提示',MB_OK+MB_ICONINFORMATION)
// else
// Application.MessageBox('请输入准确的用户名!','提示',MB_OK+MB_ICONINFORMATION);
end;
end;procedure TLogForm.EnterNameComboBoxChange(Sender: TObject);
//用户列表事件,将当前用户所属的组显示出来
begin
with dmMain do
begin
{if adoqBase.Locate('编码',
EnterNameComboBox.Items[EnterNameComboBox.ItemIndex],
[loCaseInsensitive]) then
EnterGroupLabel.Caption:=adoqBase.FieldByName('名称').AsString
else
EnterGroupLabel.Caption:='';
//输入用户名提示
if EnterNameComboBox.Items[EnterNameComboBox.ItemIndex]='' then
EnterNameComboBox.ShowHint:=True
else
EnterNameComboBox.ShowHint:=False;}
end;
end;procedure TLogForm.EnterPasswordEditKeyPress(Sender: TObject;
var Key: Char);
begin
if Key=#13 then
EnterOKButtonClick(Self);//提供快捷的登录方式(指向确认登录按钮的事件)
end;procedure TLogForm.LogAboutButtonClick(Sender: TObject);
//关于
begin
// AboutWall.Visible:=True;
// EnterWall.Visible:=False;
Application.Terminate;
end;procedure TLogForm.EnterPasswordEditChange(Sender: TObject);
begin
//输入密码提示
if EnterPasswordEdit.Text='' then
EnterPasswordEdit.ShowHint:=True
else
EnterPasswordEdit.ShowHint:=False;
end;procedure TLogForm.EnterNameComboBoxDblClick(Sender: TObject);
begin
{ with dmMain do
begin
{if EnterNameComboBox.ItemIndex+1=EnterNameComboBox.Items.Count then
EnterNameComboBox.ItemIndex:=0
else
EnterNameComboBox.ItemIndex:=EnterNameComboBox.ItemIndex+1;
//复制OnChange的事件
if adoqBase.Locate('编码',
{ EnterNameComboBox.Items[EnterNameComboBox.ItemIndex],
[loCaseInsensitive]) then
EnterGroupLabel.Caption:=adoqBase.FieldByName('名称').AsString
else
EnterGroupLabel.Caption:='';
//输入用户名提示
if EnterNameComboBox.Items[EnterNameComboBox.ItemIndex]='' then
EnterNameComboBox.ShowHint:=True
else
EnterNameComboBox.ShowHint:=False;
end;}
end; procedure TLogForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if not(LogTF) then
Application.Terminate;
end;procedure TLogForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
dmMain.adoqBase.Close;
end;end.
解决方案 »
- 请教delphi的IDE设计期的问题
- 怎样利用ShellExecute实现 在开始->运行窗口中打开字符串 cmd /c chdir /d I:\AA &cd.exe的功能??
- 大家来指点一下,我想开发一个c/s软件
- 怎样在DBGrid中显示MS Access中的memo数据?
- Help & Manual 以中文支持差到了极点,用过的兄弟你是如何用的?
- 通过流将图象写入数据库中,出现了这样的错误???
- 请问winamp的trackbar怎样做的?
- 我有一个报表,列数很多,想分页打印,像Excel那样,如何解决?
- 如何使DELPHI写的FORM在打开时在WINDOWS的任务栏显示?象IE一样?
- 如何自定义报表预览?
- 如何通过鼠标钩子来判断当前鼠标指针是否在另个程序的客户区中?
- 请教各位仁兄,如何在image内显示PSD图片而且还要显示出其透明效果?
SUIButton, SUIForm: SUIPack
WinSkinData: VCLSkin
Shapes: Visual Shapes
TFlatPanelUnit: FlatStyle自己去www.2ccc.com www.tomore.com等网站找找
也可以去这里 看看 www.delphifans.com
到www.baidu.com一搜索就OK 了。
http://www.ccrun.com/view.asp?id=129
Visual Shapes:
http://www.mzko.cn/down/20064/19673.htm