Hel*_*ode -2 sql delphi object
我正在努力在我的TComoBox中获取我的一个Item的ItemIndex ...通常这对我来说似乎不是一件难事......但不知怎的,当我尝试施放我的String(我从一个SQL select)到TObject.这似乎不起作用.我尝试通过手动将String写入Object来调试我的代码,如下所示:
TObject('U');
Run Code Online (Sandbox Code Playgroud)
那不知何故确实有效,我无法解释......
我填写ComoBox的方式:
for i := Low(_VerkaufTypenBez) to High(_VerkaufTypenBez) do
begin
CBBelegart.AddItem(VerkaufTypenBez(i), Tobject(VerkaufTypenShort[i]));
end;
Run Code Online (Sandbox Code Playgroud)
我尝试设置索引的方式:
CB.ItemIndex := CB.Items.IndexOfObject(TObject(SetIndexWithSQL('select top 1 * from KOMSAconfig_Allgemein', 'Belegart'))); //index = -1
helper := 'U';
CB.ItemIndex := CB.Items.IndexOfObject(TObject(helper)); //index = -1
CB.ItemIndex := CB.Items.IndexOfObject(TObject('U')); //index = 1
Run Code Online (Sandbox Code Playgroud)
有什么建议?
当您尝试使用可视控件时,就会发生这种情况,就好像它是一个通用容器一样.视觉控件仅用于显示和用户交互.不要试图弯曲它做更多.
在您的方案中,尝试将第二个字符串添加到组合框中是没有意义的.别那样做.更改填充的循环,如下所示:
for i := Low(_VerkaufTypenBez) to High(_VerkaufTypenBez) do
begin
CBBelegart.Items.Add(VerkaufTypenBez(i));
end;
Run Code Online (Sandbox Code Playgroud)
另一个字符串保存在类似结构的数组中,看起来可以这样访问:VerkaufTypenShort[i].因此,如果要查找特定值的索引,可以这样做:
function GetIndexFromShortString(const Value: string): Integer;
begin
for Result := Low(_VerkaufTypenBez) to High(_VerkaufTypenBez) do
if VerkaufTypenShort[Result]=Value then
exit;
Result := -1;
end;
Run Code Online (Sandbox Code Playgroud)
请注意,此功能完全独立于可视控件.您应该尽量使用可视化控件,并在不参考任何可视控件的情况下编写业务逻辑.