在搜索框里面只要输入每个字的头一个字母,则搜索出符合条件的记录,我觉得这个非常实用的功能.我也知道这个需要做一个相当于字典的东东,但是不知道从何下手.有没有高手愿意给出例程参考分享一下?拜谢!!!!

解决方案 »

  1.   

    function GetPYIndexChar(hzchar: string): char;//得到汉字的拼音首字
    begin
      case WORD(hzchar[1]) shl 8 + WORD(hzchar[2]) of
        $B0A1..$B0C4: result := 'A';
        $B0C5..$B2C0: result := 'B';
        $B2C1..$B4ED: result := 'C';
        $B4EE..$B6E9: result := 'D';
        $B6EA..$B7A1: result := 'E';
        $B7A2..$B8C0: result := 'F';
        $B8C1..$B9FD: result := 'G';
        $B9FE..$BBF6: result := 'H';
        $BBF7..$BFA5: result := 'J';
        $BFA6..$C0AB: result := 'K';
        $C0AC..$C2E7: result := 'L';
        $C2E8..$C4C2: result := 'M';
        $C4C3..$C5B5: result := 'N';
        $C5B6..$C5BD: result := 'O';
        $C5BE..$C6D9: result := 'P';
        $C6DA..$C8BA: result := 'Q';
        $C8BB..$C8F5: result := 'R';
        $C8F6..$CBF9: result := 'S';
        $CBFA..$CDD9: result := 'T';
        $CDDA..$CEF3: result := 'W';
        $CEF4..$D188: result := 'X';
        $D1B9..$D4D0: result := 'Y';
        $D4D1..$D7F9: result := 'Z';
      else
        result := char(32);
      end;
    end;
    function GetPY(const s: string; count: integer): string;
    var
      str, r: string;
      j: integer;
    begin
      j := 1;
      while j <= length(s) do
      begin
        str := s[j];
        if not IsASCII(s[j]) then
        begin
          inc(j);
          str := str + s[j];
          r := r + GetPYIndexChar(str);
        end
        else
          r := r + s[j];
        inc(j);
        if length(r) = count then
          break;
      end;
      result := UpperCase(r);
    end;
    ---------
    调用GetPY('人民')= 'RM'