就象DELPHI中的CODE IN SIGHT一样?或者更进一步,当输入字符时,不光匹配
前面部分,而将Item中所有包含此字串的都先列出来,随着用户继续输入而不断筛选?

解决方案 »

  1.   

    // 定义变量LastKeyPressed: Word; procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word; 
    Shift: TShiftState); 
    begin 
    LastKeyPressed := Key; // 保存上一个你按的键
    end; procedure TForm1.ComboBox1Change(Sender: TObject); 
    Var 
    ComboText : String; 
    NewComboText : String; 
    matchindex : integer; 
    begin 
    ComboText := ComboBox1.Text; 
    // 使用户能删除文本; 
    if (LastKeyPressed = VK_DELETE) OR (LastKeyPressed = 8 ) then begin 
    LastKeyPressed := 0; 
    end 
    else begin 
    if ComboBox1.SelStart <> length (ComboText) then // 确定用户此时刚开始打字
    // 不做任何事,因为这可以让用户在文本中间任意打字
    else begin 
    // 寻找匹配 
    matchindex := sendmessage ( ComboBox1.Handle, CB_FINDSTRING , -1, 
    LPARAM(ComboText) ) 
    if matchindex >= 0 then begin 
    ComboBox1.ItemIndex := matchindex 
    NewComboText := ComboBox1.Text; 
    // 选择文本的其余部分: 
    sendmessage ( ComboBox1.Handle, CB_SETEDITSEL , 0, 
    MAKELPARAM(length(ComboText) , word(-1) )); 
    end; 
    end; 
    end;