Форум: "Начинающим";
Текущий архив: 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 к своей программе.
страница 404function 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;
стр.410function 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;
стр.411procedure 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