Delphi7问题求助,有关PageControl和TabSheet

qq_35278750 2016-10-16 08:37:54
我现在有两个Form,我想在在第一个Form里面加登录权限判断,控制另一个Form里pagecontrol里的tabsheet的显示~



代码如下:
引用
unit Login;

interface

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

type
TLoginForm = class(TForm)
Image1: TImage;
LoginBtn: TBitBtn;
ADOConnection1: TADOConnection;
LoginQuery: TADOQuery;
BuyApplyTable: TADOTable;
BuyCheckTable: TADOTable;
BuyTable: TADOTable;
DiscardTable: TADOTable;
EquipTable: TADOTable;
InTable: TADOTable;
LabTable: TADOTable;
LabManagerTable: TADOTable;
MaintainApplyTable: TADOTable;
MaintainCheckTable: TADOTable;
MaintainTable: TADOTable;
OutTable: TADOTable;
PropertyTable: TADOTable;
StoreTable: TADOTable;
StoreManagerTable: TADOTable;
UserTable: TADOTable;
BuyApplyDS: TDataSource;
BuyCheckDS: TDataSource;
BuyDS: TDataSource;
DiscardDS: TDataSource;
EquipDS: TDataSource;
InDS: TDataSource;
LabManagerDS: TDataSource;
LabDS: TDataSource;
MaintainApplyDS: TDataSource;
MaintainCheckDS: TDataSource;
MaintainDS: TDataSource;
OutDS: TDataSource;
PropertyDS: TDataSource;
StoreManagerDS: TDataSource;
StoreDS: TDataSource;
UserDS: TDataSource;
ComboBox1: TComboBox;
usernameEdit: TEdit;
passwordEdit: TEdit;
ResetBtn: TButton;
procedure LoginBtnClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
LoginForm: TLoginForm;

implementation

uses index;

{$R *.dfm}

procedure TLoginForm.LoginBtnClick(Sender: TObject);
var
position:string;
name:string;
password:string;
begin
position:=trim(ComboBox1.SelText);
name:=trim(usernameEdit.Text);
password:=trim(passwordEdit.Text);
LoginQuery.Close;
LoginQuery.SQL.Clear;
LoginQuery.SQL.Add('select * from UserInfo where uId='''+name+''' and uPasswd='''+password+''' and uPosition='''+position+'''');
LoginQuery.Open;
if(LoginQuery.RecordCount > 0)then
begin
if position='系统管理员' then
begin
LoginForm.Hide;
mainForm.Show;
mainForm.PageControl1.TabSheet2.TabVisible:=False;
mainForm.PageControl1.TabSheet3.TabVisible:=False;
mainForm.PageControl1.TabSheet4.TabVisible:=False;
mainForm.PageControl1.TabSheet5.TabVisible:=False;
mainForm.PageControl1.TabSheet6.TabVisible:=False;
mainForm.PageControl1.TabSheet7.TabVisible:=False;
end
else if position='仓库管理员' then
begin
LoginForm.Hide;
mainForm.Show;
mainForm.PageControl1.TabSheet1.TabVisible:=False;
mainForm.PageControl1.TabSheet5.PageControl2.TabSheet10.TabVisible:=False;
mainForm.PageControl1.TabSheet6.TabVisible:=False;
end
else if position='实验室管理员' then
begin
LoginForm.Hide;
mainForm.Show;
mainForm.PageControl1.TabSheet1.TabVisible:=False;
mainForm.PageControl1.TabSheet2.TabVisible:=False;
mainForm.PageControl1.TabSheet3.TabVisible:=False;
mainForm.PageControl1.TabSheet5.PageControl2.TabSheet9.TabVisible:=False;
mainForm.PageControl1.TabSheet6.TabVisible:=False;
end
else if position='购买登记员' then
begin
LoginForm.Hide;
mainForm.Show;
mainForm.PageControl1.TabSheet1.TabVisible:=False;
mainForm.PageControl1.TabSheet2.TabVisible:=False;
mainForm.PageControl1.TabSheet3.TabVisible:=False;
mainForm.PageControl1.TabSheet5.TabVisible:=False;
end
else
begin
LoginForm.Hide;
mainForm.Show;
mainForm.PageControl1.TabSheet1.TabVisible:=False;
mainForm.PageControl1.TabSheet2.TabVisible:=False;
mainForm.PageControl1.TabSheet3.TabVisible:=False;
mainForm.PageControl1.TabSheet4.TabVisible:=False;
mainForm.PageControl1.TabSheet5.TabVisible:=False;
mainForm.PageControl1.TabSheet7.TabVisible:=False;
end;
end
else
ShowMessage('登陆错误');
end;

end.
...全文
456 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35278750 2016-10-17
  • 打赏
  • 举报
回复
嗯嗯,谢谢大神,半路出家用了Delphi来做课设,现在这个问题解决了~
sazhufa 2016-10-16
  • 打赏
  • 举报
回复
Delphi VCL框架控件的容器包含关系并非跟显示的层次一致的。 比如TabSheet虽然是PageControl中创建(正确说应该是显示),但事实上它(TabSheet)的主容器是mainForm. 前者跟显示相关的,控件属性是Parent。 跟容器生命周期相关的,属性是Owner. 所以正确的做法是: mainForm.TabSheet1.TabVisible 的方式才对。 事实下,你看看mainForm前面的自动生成的代码就知道了。 类似的情况还在其它组件,比如TQuery的自定义字段,出现相同情况。 比如你明明是在TQuery中定义了一个字段,但事实上这个字段的对象并不在TQuery的属性中。 VCL框架要多用才能精通,这是学习Delphi的必经之路。
qq_35278750 2016-10-16
  • 打赏
  • 举报
回复
但是,编译出错,难道我这样的逻辑有错误吗?求大神帮助解决

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧