You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi新手求助:如何在StatusBar显示姓名而非用户名

解决方案

要在StatusBar显示名字和姓氏而非用户名,你需要做以下两处关键修改:

1. 修改SQL查询语句,获取名字和姓氏数据

你的原SQL仅查询了用户名和密码,需要添加存储名字、姓氏的字段(假设你的operateri表中名字字段为ime,姓氏字段为prezime,如果实际字段名不同,请替换为对应名称):

sql.Text := 'SELECT korisnicko, lozinka, ime, prezime from operateri where korisnicko = ' + quotedstr(edtkorisnicko.Text) + ' and lozinka = ' + quotedstr(edtlozinka.Text);

2. 登录验证通过后,读取名字和姓氏并设置到StatusBar

原代码直接使用输入框的用户名,现在改成从数据集里读取名字和姓氏拼接后显示:

if Login.RecordCount <> 0 then
begin
  form1.Hide();
  form2.statusbar1.panels[0].text:= 'Korisnik: ' + Login.FieldByName('ime').AsString + ' ' + Login.FieldByName('prezime').AsString;
  form2.showmodal();
end

完整修改后的代码

procedure TForm1.Button1Click(Sender: TObject);
begin
  with Login do
  begin
    active := false;
    sql.Clear;
    // 新增名字和姓氏字段查询
    sql.Text := 'SELECT korisnicko, lozinka, ime, prezime from operateri where korisnicko = ' + quotedstr(edtkorisnicko.Text) + ' and lozinka = ' + quotedstr(edtlozinka.Text);
    active := true;

    if Login.RecordCount <> 0 then
    begin
      form1.Hide();
      // 替换为名字+姓氏的显示
      form2.statusbar1.panels[0].text:= 'Korisnik: ' + Login.FieldByName('ime').AsString + ' ' + Login.FieldByName('prezime').AsString;
      form2.showmodal();
    end
    else
    begin
      ShowMessage('Korisničko ime ili lozinka nisu validni!');
    end;
  end;
end;

注意事项

  • 如果你的operateri表中名字、姓氏的字段名不是ime和prezime,请将代码中的FieldByName('ime')和FieldByName('prezime')替换为实际字段名。
  • 额外提示:直接拼接字符串的SQL存在注入风险,后续可以学习使用参数化查询(比如ParamByName方法)来提升代码安全性。

内容的提问来源于stack exchange,提问作者Evellyn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 17:39:54