PDA

View Full Version : مقاله: قابلیت جستجوی افزایشی ListView



samprp
شنبه 23 شهریور 1387, 22:23 عصر
با عرض سلام

این ListView دلفی مثه آیکنای تو پوشه ها یه قابلتی داره که اگر حرف اول رو بزنی اونی که با اون حرف شروع می شه رو انتخاب می کنه . حالا اگه به سرعت همین کار رو انجام بدی یعنی بقیه حروف رو هم تایپ کنی به ترتیب اون آیتمایی که با کلیدای تایپ شده جور هستند انتخاب می شن.

ولی چه طوری می شه این کار رو کنترل کرد و مثلا به یه ادیت باکس محدود کرد . مثلا تو ادیت اگه یه حرف تایپ کنی اولین موردی که باهاش مطابق باشه انتخاب بشه و ...

اصلا نام این قابلیت چی هست ؟
به این قابلیت اصطلاحا Incremental Search گفته می شه
در زیر نحوه انجام این عمل نشون داده شده :
همزمان که شما تو ادیت شروع به تایپ یک کلمه بکنید اولین موردی که با اون کلمه شروع بشه (از اندیس صفر) انتخاب می شه و به همین ترتیب . دو تا خطی هم که اون آخر کامنت شدن برا اینن که اگر یک مورد مشابه پیدا شد همونو انتخاب کنه و ListView رو فوکوس کنه .

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var
MyItem: TListItem;
begin

MyItem := ListView1.FindCaption(0, // StartIndex: Integer;
edit1.text, // Search string: string;
True, // Partial,
True, // Inclusive
False); // Wrap : boolean;
if MyItem <> nil then
begin
ListView1.Selected := MyItem;
MyItem.MakeVisible(True);
//ListView1.SetFocus;
//edit1.Text := MyItem.Caption;
end;
end;