c++ builder comboBox 输入补全的功能



void __fastcall TMainForm::ComboBoxTitleKeyPress(TObject *Sender, wchar_t &Key)
{


m_bTitlSearchFlag = true;


int i, iInputLength, iSelStartRestore, iSelLengthRestore;
AnsiString strInput;
TStringList *TempList;


strInput= ComboBoxTitle->Text;




if (Key == VK_ESCAPE)
{
Key = 0x0; // No more beeping after pressing Escape.
}


if (Key == VK_RETURN)
{
Key = 0x0;
    }
if (ComboBoxTitle->Items->IndexOf(strInput) == -1)
{
ComboBoxTitle->Items->Add(strInput);
ComboBoxTitle->DroppedDown = false;


ComboBoxTitle->SelStart = ComboBoxTitle->Text.Length();


}
else
{
iSelStartRestore = ComboBoxTitle->SelStart;
iSelLengthRestore = ComboBoxTitle->SelLength;
if (Key == VK_BACK)
{
// Handle backspace:
if ((ComboBoxTitle->SelLength == 0) && (ComboBoxTitle->SelStart > 0))
{
ComboBoxTitle->SelStart = ComboBoxTitle->SelStart - 1;
ComboBoxTitle->SelLength = ComboBoxTitle->SelLength + 1;
}
}
strInput.Delete(ComboBoxTitle->SelStart + 1, ComboBoxTitle->SelLength);


if (Key != VK_BACK)
{
strInput.Insert(Key, ComboBoxTitle->SelStart + 1);
}
iInputLength = strInput.Length();
ComboBoxTitle->Items->Clear();
if (iInputLength > 0)
{


TempList = new TStringList;
try
{
for ( i= 0; i<m_pTitleDropDownTStrList->Count - 1;i++)
{
if ((m_pTitleDropDownTStrList->Strings[i].SubString(1, iInputLength)).UpperCase() ==
strInput.UpperCase())
TempList->Add(m_pTitleDropDownTStrList->Strings[i]);


}
if (TempList->Count > 0)
{
ComboBoxTitle->Items->Clear();
for (i = 0 ;i<7;i++)
{
ComboBoxTitle->Items->Add("AAA");
}
//ComboBoxTitle->DropDownCount = 8;
ComboBoxTitle->DroppedDown = true;
//ComboBoxTitle->Items->Clear();
ComboBoxTitle->Items = TempList;
}
else ComboBoxTitle->DroppedDown = false;
}


__finally
{
TempList->Free();
}
}
else
{


ComboBoxTitle->DroppedDown = false;
}


//ComboBoxTitle->Re




// Restore the position of the carrot and the selected text:
ComboBoxTitle->SelStart = iSelStartRestore;
ComboBoxTitle->SelLength= iSelLengthRestore;
}






m_bTitlSearchFlag = false;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wumingqilin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值