Главная страница
    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.043 c
1-1162471693
Elen
2006-11-02 15:48
2006.12.17
Приклеить ToolBar к другому окну


2-1165001960
Defort
2006-12-01 22:39
2006.12.17
Компиляция


2-1164625210
Krants
2006-11-27 14:00
2006.12.17
Назначить событие всем компонентам


3-1160502902
Lexa11_2002
2006-10-10 21:55
2006.12.17
Помогите написать запрос


15-1164372798
grisme
2006-11-24 15:53
2006.12.17
легкий по весу GUI





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский