⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 这是一个简单Delphi应用开发实例
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  begin
    MessageDlg('请选择要删除的选目!',mtinformation,[mbok],0);
    Exit;
  end;
  if (ADOQuery5.RecordCount > 0) and (Treeview1.Selected <> Nil) then//判断数据记录是否为空,并且在通讯目录中选择的项目不为空
  begin
    if MessageDlg('确定要删除此条记录吗?',mtconfirmation,[mbyes,mbno],0) = mryes then
    begin
      With ADOQuery1 do //删除数据
      begin
        Close;
        SQL.Clear;
        SQL.Add('Delete From msn where 姓名=:a');//a为参数
        Parameters.ParamByName('a').Value := TreeView1.Selected.Text;//将a参数的值设置为当前所选择的项目名称
        ExecSQL;
        TreeView1.Items.Delete(Treeview1.Selected);//删除所选择的项目
      end;
    end;
    With ADOQuery1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * From msn');//重新选择 msn 数据表
      Open;
    end;
  end;
  treeview1.Items.BeginUpdate;
  treeview1.Items.Clear;
  main.OnShow(self);
  treeview1.Items.GetFirstNode.Expand(true);
  TreeView1.Refresh;//刷新通讯目录中的项目
  treeview1.Items.EndUpdate;
end;

procedure TMain.FormShow(Sender: TObject);
begin
  imagepath:=ExtractFilePath(application.ExeName);
  with ADOQuery4 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('Select distinct 类型 From msn'); //在表中选择不重复的类型
    Open;
  end;
  While Not ADOQuery4.Eof do
  begin
    Combobox2.Items.Add(Main.ADOQuery4.Fields[0].value);//将不重复的数据加入到Combobox2(类型)中
    ADOQuery4.Next;
  end;
  TreeViewReFresh;//调用过程TreeViewReFresh动态创建节点,将类型相同的数据加入到子节点中
  TreeView1.AutoExpand := True;//当显示时将所有的子节点展开显示。
  BeComeEnable(false);//调用过程BeComeEnable,当窗体显示时,将文本组件设置为不可用状态
end;

procedure TMain.TreeviewReFresh;//用于动态创建节点
begin
  Node1 := Treeview1.Items.Add(nil,'通讯目录');
  ADOQuery3.Close;
  ADOQuery3.SQL.Text:='Select Distinct 类型 From msn';//从数据库中读取不重复的类型
  ADOQuery3.Open;
  if ADOQuery3.RecordCount>0 then
  begin
    while not ADOQuery3.Eof do
    begin
      Node2:=TreeView1.Items.AddChild(Node1,ADOQuery3.Fields[0].asstring);//将类型名称加入到动态节点中
      TreeView1.Items.AddChild(Node2,'');
      ADOQuery3.Next;
    end;
  end;
end;

procedure TMain.ToolButton3Click(Sender: TObject);//修改
begin
  if (Treeview1.Selected <> nil) and (Edit1.Text <> '') then
  begin
    BeComeEnable(True);//调用自定义过程BeComeEnable,使所有文本组件变为可用状态
  end;
  
end;

procedure TMain.ToolButton10Click(Sender: TObject);//保存
begin
  With ADOQuery1 Do//修改数据信息,设置字段的值为参数的值
  begin
    Close;
    SQL.Clear;
    SQL.Add('Update msn Set 编号=:a,姓名=:b,性别=:c,出生日期=:d,民族=:e,家庭电话=:f,手机号码=:g,QQ号码=:h,E_mail=:i,备注=:j,类型=:k,照片=:L');
    SQL.Add('where 姓名='+quotedstr(Treeview1.Selected.Text));//注意!在用Update修改数据时,一定要在语句后面加上“Where”条件,否则将会修改所有的数据
    Parameters.ParamByName('a').Value := Trim(Edit1.Text);//将Edit1(编号)中的内容赋值给参数a
    Parameters.ParamByName('b').Value := Trim(Edit2.text);//将Edit2(姓名)中的内容赋值给参数b,以次类推
    Parameters.ParamByName('c').Value := Combobox1.text;
    Parameters.ParamByName('d').Value := DatetoStr(DatetimePicker1.Date);
    Parameters.ParamByName('e').Value := Trim(Edit3.text);
    Parameters.ParamByName('f').Value := Trim(Edit4.text);
    Parameters.ParamByName('g').Value := Trim(Edit5.text);
    Parameters.ParamByName('h').Value := Trim(Edit6.text);
    Parameters.ParamByName('i').Value := Trim(Edit7.text);
    Parameters.ParamByName('k').Value := Combobox2.Text;
    Parameters.ParamByName('j').Value := Memo1.Lines.Text;
    Parameters.ParamByName('L').Value := Trim(Edit9.Text);
    ExecSQL;//执行修改操作,提示修改成功信息
    MessageDlg('修改成功!',mtwarning,[mbyes],0);
  end;
  with Main.ADOQuery1 do
  begin
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('Select * from msn'); //使ADOQuery1重新选择 msn 数据表
    ADOQuery1.Open;
    with ADOQuery3 do
    begin
      ADOQuery3.Close;
      ADOQuery3.SQL.Clear;
      ADOQuery3.SQL.Add('Select * From msn');//使ADOQuery3重新选择 msn 数据表
      ADOQuery3.Open;
      TreeView1.Items.Clear;//清空TreeView组件中的所有项目
      TreeView1.Refresh;//刷新TreeView组件中的内容
      TreeviewReFresh;  //调用TreeViewReFresh过程,重新加载项目内容
    end;
    BeComeEnable(False);//调用自定义过程BeComeFalse,使所有文本组件变为不可用状态
  end;
  treeview1.Items.BeginUpdate;
  treeview1.Items.Clear;
  main.OnShow(self);
  treeview1.Items.GetFirstNode.Expand(true);
  TreeView1.Refresh;//刷新通讯目录中的项目
  treeview1.Items.EndUpdate;
end;

procedure TMain.SpeedButton1Click(Sender: TObject);
begin
  if (Combobox3.Text = '') and (Edit8.Text = '') then//如果数据字段和查询内容为空,将弹出信息框
  begin
    MessageDlg('查询出现错误,请重新输入!',mterror,[mbok],0);
    Exit;
  end;
  with ADOQuery1 do //模糊查询
  begin
    Close;
    SQL.Clear;
    SQL.Add('Select * From msn where ' + Combobox3.Text + ' like '+Quotedstr('%'+(Edit8.Text)+'%'));
    Open;
  end;
  if ADOQuery1.RecordCount = 0 then
  begin
    MessageDlg('在数据库中没有此信息!',mtwarning,[mbyes],0);
  end;
end;

procedure TMain.Timer1Timer(Sender: TObject);//状态栏中显示当前系统日期时间
begin
  StatusBar1.Panels.Items[1].Text := FormatDateTime('yyyy年mm月dd日 hh时nn分ss秒',now());
end;

procedure TMain.ComboBox3KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
  begin
    Edit8.SetFocus;
  end;
end;

procedure TMain.Edit8KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
  begin
    SpeedButton1Click(sender);
  end;
end;

procedure TMain.SpeedButton2Click(Sender: TObject);//打开对话框选择照片
begin
  OpenPictureDialog1.InitialDir:='.\图片\';
  if (OpenPictureDialog1.Execute) and (OpenPictureDialog1.FileName <> '') then
  begin
    if (imagepath+'图片\'+ExtractFileName(OpenPictureDialog1.FileName))=OpenPictureDialog1.FileName then
      Edit9.Text := '\图片\'+ExtractFileName(OpenPictureDialog1.FileName)
    else
      Edit9.Text := OpenPictureDialog1.FileName;//将所选择的照片路径加入到Edit9(照片位置)中
      Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);//将图像1设置为所选择的图像
  end
  else
    MessageDlg('没有选择图片',mtwarning,[mbok],0);
end;

procedure TMain.Image1DblClick(Sender: TObject);
begin
  if Edit9.Text='' then
  begin
    MessageDlg('没有为' + TreeView1.Selected.Text + '指定照片!',mtinformation,[mbok],0);
    exit;
  end;
  Picfrm.ShowModal;
end;

procedure TMain.BeComeEnable(Ena: Boolean);//自定义过程BeComeEnable,判断文本组件的当前状态
begin
  Edit1.Enabled := Ena;
  Edit2.Enabled := Ena;
  Edit3.Enabled := Ena;
  Edit4.Enabled := Ena;
  Edit5.Enabled := Ena;
  Edit6.Enabled := Ena;
  Edit7.Enabled := Ena;
  Memo1.Enabled := Ena;
  Combobox1.Enabled := Ena;
  Combobox2.Enabled := Ena;
  ToolButton10.Enabled := Ena;
  SpeedButton2.Enabled := Ena;
  DatetimePicker1.Enabled := Ena;
end;

procedure TMain.ComboBox2KeyPress(Sender: TObject; var Key: Char);
begin
  beep;
  MessageDlg('不能够输入其他类型',mtError,[mbok],0);
  key := #0;
end;

procedure TMain.TreeView1Expanding(Sender: TObject; Node: TTreeNode;//当节点展开时将对应的数据加入到节点中
  var AllowExpansion: Boolean);
begin
  if Node=Node1 then//如果当前展开的节点是通讯录,则不向后执行则不为通讯录加载数据
  exit;
  Node.DeleteChildren;//删除所有子节点
  ADOQuery3.Close;
  ADOQuery3.SQL.Text:='Select distinct 姓名 From msn Where 类型='+QuotedStr(Node.Text);
  ADOQuery3.Open;
  if ADOQuery3.RecordCount>0 then//如果数据记录不为空,则将重新添加子节点
  begin
    while not ADOQuery3.Eof do
    begin
      TreeView1.Items.AddChild(Node,ADOQuery3.Fields[0].asstring);
      ADOQuery3.Next;
    end;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -