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
相关产品推荐
相关产品推荐

