Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];

Вниз

ComboBox   Найти похожие ветки 

 
Стрельников ©   (2006-11-28 21:33) [0]

Народ! Подскажите как сделать быстрый поиск по базе данных, какой-то колонки. Например: В Explorer в окне "адрес" начинаем вводить сайт, а там в низу предлагает сайты которые у него есть в базе данных! Спасибо!


 
Desdechado ©   (2006-11-28 21:53) [1]

1. считать в комбо список поиска
2. установить ему Sorted:=True
3. призвать пользователя вводить


 
Mike Kouzmine ©   (2006-11-28 23:02) [2]

на изменение строки поиска делаешь setrange


 
Max Zyuzin ©   (2006-11-29 11:22) [3]

>Стрельников ©   (28.11.06 21:33)  
Как вариант воспользоваться библиотекой EhLib. Там реализован быстрый поиск приямо в DBGridEh


 
Цитатник ©   (2006-11-29 16:32) [4]

Прошу прощения, если мой код будет не в тему.
Фрагменты кодов из книги "Delphi6 и COM" (точное название не помню).
Описывают метод прикручивания списка от Explorer к своей программе.
страница 404
function TEnumString.Next(celt: ULONG; rgelt: PPWideChar;
 pceltFetched: PLongWord): HRESULT;
var
 I: Cardinal;
 Len: Integer;
 S: String;
begin
 Result := S_OK;
 I := 0;
 with FHistory do begin
   while (FEnumPosition < Count) and (I < celt) do begin
     S := FHistory[FEnumPosition];
     Len := MultiByteToWideChar(CP_ACP, 0,
       PChar(S), -1,  rgelt^,
       0) * SizeOf(WideChar);
     rgelt^ := CoTaskMemAlloc(Len);
     MultiByteToWideChar(CP_ACP, 0, PChar(S),
        -1, rgelt^, Len);
     Inc(rgelt);
     Inc(I);
     Inc(FEnumPosition);
   end;
 end;
 if I <> celt then
   Result := S_FALSE;
 if Assigned(pceltFetched) then
   pceltFetched^ := I;
end;


стр.406

type
 TOnAcCreateEnumerator = procedure (
  var Enumerator: IEnumString)  of object;

TCustomAcEdit = class(TCustomEdit)
private
 FACOptions: DWORD;
 FAcFailed: Boolean;
 FAutoComplete: IAutoComplete2;
 FAcEnabled: Boolean;
 FOnAcCreateEnumerator: TOnAcCreateEnumerator;
 FAcLimit: Integer;
 FAcHistory: TStrings;
 FAcSource: TAutoCompleteSource;
 procedure SetAcEnabled(const Value: Boolean);
 function GetAcOptions: TAutoCompleteOptions;
 procedure SetAcHistory(const Value: TStrings);
 procedure SetAcLimit(const Value: Integer);
 procedure SetAcOptions(const Value:
   TAutoCompleteOptions);
 procedure CheckAcLimit;
 procedure InitAutoComplete;
 procedure DoneAutoComplete;
 procedure SetAcSource(const Value: TAutoCompleteSource);
protected
 procedure CreateWnd; override;
 procedure DestroyWnd; override;
 function AcCreateEnumerator: IEnumString; virtual;
 property AcOptions: TAutoCompleteOptions
   read GetAcOptions write SetAcOptions;
 property AcLimit: Integer
   read FAcLimit write SetAcLimit;
 property AcHistory: TStrings
   read FAcHistory write SetAcHistory;
 property AcEnabled: Boolean
   read FAcEnabled write SetAcEnabled;
 property AcSource: TAutoCompleteSource
   read FAcSource  write SetAcSource;
 property OnAcCreateEnumerator:
   TOnAcCreateEnumerator read OnAcCreateEnumerator
   write FOnAcCreateEnumerator;
public
 procedure AcAddToHistory(const S: String);
 procedure AcRemoveFromHistory(const S: String);
 constructor Create(AOwner: TComponent); override;
 destructor Destroy; override;
end;


стр.410
function TCustomAcEdit.AcCreateEnumerator: IEnumString;
begin
 Result := nil;
 case FAcSource of
 acsAcHistory:
   Result := TEnumString.Create(FAcHistory)
   as IEnumString;
 acsShellNamespace:
   Result := CreateComObject(CLSID_ACListISF)
   as IEnumString;
 acsMRU:
   Result := CreateComObject(CLSID_ACLMRU)
   as IEnumString;
 acsIEHistory:
   Result := CreateComObject(CLSID_ACLHistory)
   as IEnumString;
 acsCustom: ;
 end;
 if Assigned(FOnAcCreateEnumerator) then
   OnAcCreateEnumerator(Result);
end;


стр.411
procedure TForm1.AcEdit1AcCreateEnumerator(
  var Enumerator: IEnumString);
var
 Malloc: IMalloc;
 PIDL: PItemIDList;
begin
 if AcEdit1.AcSource = acsShellNamespace then begin
   if Assigned(Enumerator) then begin
     PIDL := nil;
     OleCheck(SHGetMalloc(MAlloc));
     try
       OleCheck(SHGetSpecialFolderLocation(Handle,
       CSIDL_PERSONAL, PIDL));
       OleCheck((Enumerator
     as PersistFolder).Initialize(PIDL));
     finally
       Malloc.Free(PIDL);
       Malloc := nil;
     end;
   end;
 end;
end;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.042 c
2-1164736539
Krab1234
2006-11-28 20:55
2006.12.17
Службы


2-1164646397
Алик
2006-11-27 19:53
2006.12.17
Мигание TPaintBox при перерисовке Canvas


2-1164910514
kirillrepin
2006-11-30 21:15
2006.12.17
сортировка в ListView в режиме Report по SubItems


15-1164395898
$Pl@Sh
2006-11-24 22:18
2006.12.17
Куда пропал Ketmar?


15-1164344912
Rentgen
2006-11-24 08:08
2006.12.17
Фильмы с грустными "концами"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский