delphi 模糊查询(输入字母后出现小窗体,并根据字母过滤),该如何处理
delphi 模糊查询(输入字母后出现小窗体,并根据字母过滤)
小弟新手,在自学中
如标题所示,应该怎么实现这种功能呢?需要用哪个组件,希望各位师兄多关注小弟,求详细解释。
感激不尽
下理想效果附图

------解决方案--------------------
关于那个根据拼音模糊查询的问题也不困难,输入的那些应该是基础信息吧,你可以在录入那些基础信息的时候直接获得到全拼和简拼,这样就可以了,3楼的方法也可以,但是效率应该会差一些
------解决方案--------------------
汉字转换成拼音
小弟新手,在自学中
如标题所示,应该怎么实现这种功能呢?需要用哪个组件,希望各位师兄多关注小弟,求详细解释。
感激不尽
下理想效果附图
------解决方案--------------------
关于那个根据拼音模糊查询的问题也不困难,输入的那些应该是基础信息吧,你可以在录入那些基础信息的时候直接获得到全拼和简拼,这样就可以了,3楼的方法也可以,但是效率应该会差一些
------解决方案--------------------
汉字转换成拼音
function GetHzPy(const AHzStr: string): string;
const
ChinaCode: array[0..25, 0..1] of Integer = ((1601, 1636), (1637, 1832), (1833, 2077),
(2078, 2273), (2274, 2301), (2302, 2432), (2433, 2593), (2594, 2786), (9999, 0000),
(2787, 3105), (3106, 3211), (3212, 3471), (3472, 3634), (3635, 3722), (3723, 3729),
(3730, 3857), (3858, 4026), (4027, 4085), (4086, 4389), (4390, 4557), (9999, 0000),
(9999, 0000), (4558, 4683), (4684, 4924), (4925, 5248), (5249, 5589));
var
i, j, HzOrd: integer;
begin
i:= 1;
while i <= Length(AHzStr) do
begin
if (AHzStr[i] >= #160) and (AHzStr[i + 1] >= #160) then
begin
HzOrd := (Ord(AHzStr[i]) - 160) * 100 + Ord(AHzStr[i + 1]) - 160;
for j := 0 to 25 do
begin
if (HzOrd >= ChinaCode[j][0]) and (HzOrd <= ChinaCode[j][1]) then
begin
Result := Result + char(byte( 'a') + j);
break;
end;
end;
Inc(i);
end else Result := Result + AHzStr[i];
Inc(i);
end;
end;