就是在文本输入一个字 可以排列出XXX表中 name列里 所有名字首字是那个输的字的名字 哪位高手可以帮帮忙 最好 江的清楚点 用什么控件 属性要怎么改 都最好说下
当然代码 最好也写得清楚点 讲高深了听不懂 谢谢
当然代码 最好也写得清楚点 讲高深了听不懂 谢谢
解决方案 »
- 重新求助 fastreport 好像一直在产生无数页
- 多态按钮的实现
- 运行程序报错:ADOQUERY1:parameter 'p3 'not found
- 想做一个图书馆管理系统,那位高手可以提供指导或源代码
- 如何编写程序,使应用程序运行时可同时打开多个窗口?
- 请问谁有打印监控程序的例子啊,大家说说,在打印监控时怎么取得打印机所用颜色和打印纸张大小??
- 下载区下的TEXCELL怎么用?网上dephi编的勤工助学管理系统密码是什么?
- 为什么看不见我创建的按钮啊?
- lihk请进!欢迎你来CSDN送上三百分作为见面礼!(dingzhenhhy(快疯了))
- 请问高手ISAPI程序中怎么实现ASP的SESSION一样的功能
- 文件存放读取所遇到的问题,请大家帮忙
- 关于HOOK 函数,能勾住,但是就是无法替换原有函数。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
Memo1: TMemo;
Edit2: TEdit;
Memo2: TMemo;
Label1: TLabel;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses uAutoComplete;{$R *.dfm}procedure TForm1.FormShow(Sender: TObject);
begin
//引用自动完成功能用以下过程
//第二个参数是TStrings类型,用户可以自行取数,只要最终转化为TStrings类型即可
SetAutoCompleteControl(Edit1, Memo1.Lines);
SetAutoCompleteControl(Edit2, Memo2.Lines);
end;end.
unit uAutoComplete;interfaceuses
Windows, SysUtils, Controls, Classes, ActiveX, ComObj, ShlObj;const
IID_IAutoComplete: TGUID = '{00bb2762-6a77-11d0-a535-00c04fd7d062}';
IID_IAutoComplete2: TGUID = '{EAC04BC0-3791-11d2-BB95-0060977B464C}';
CLSID_IAutoComplete: TGUID = '{00BB2763-6A77-11D0-A535-00C04FD7D062}'; {Options for IAutoComplete2}
ACO_NONE = 0;
ACO_AUTOSUGGEST = $1;
ACO_AUTOAPPEND = $2;
ACO_SEARCH = $4;
ACO_FILTERPREFIXES = $8;
ACO_USETAB = $10;
ACO_UPDOWNKEYDROPSLIST = $20;
ACO_RTLREADING = $40; SHACF_DEFAULT = $00000000;
SHACF_FILESYSTEM = $00000001;
SHACF_URLHISTORY = $00000002;
SHACF_URLMRU = $00000004;
SHACF_URLALL = SHACF_URLHISTORY or SHACF_URLMRU;
SHACF_USETAB = $00000008;
SHACF_FILESYS_ONLY = $00000010;
SHACF_AUTOSUGGEST_FORCE_ON= $10000000;
SHACF_AUTOSUGGEST_FORCE_OFF = $20000000;
SHACF_AUTOAPPEND_FORCE_ON = $40000000;
SHACF_AUTOAPPEND_FORCE_OFF= $80000000;
type IAutoComplete = interface(IUnknown)
['{00bb2762-6a77-11d0-a535-00c04fd7d062}']
function Init(hwndEdit: HWND; const punkACL: IUnknown; pwszRegKeyPath,
pwszQuickComplete: POLESTR): HResult; stdcall;
function Enable(fEnable: BOOL): HResult; stdcall;
end; IAutoComplete2 = interface(IAutoComplete)
['{EAC04BC0-3791-11d2-BB95-0060977B464C}']
function SetOptions(dwFlag: DWORD): HResult; stdcall;
function GetOptions(out pdwFlag: DWORD): HResult; stdcall;
end; TEnumString = class(TInterfacedObject, IEnumString)
private
FStrings : TStrings;
FIndex : Integer;
protected
function Next(celt: Longint; out elt;
pceltFetched: PLongint): HResult; stdcall;
function Skip(celt: Longint): HResult; stdcall;
function Reset: HResult; stdcall;
function Clone(out enm: IEnumString): HResult; stdcall;
public
constructor Create(Strings: TStrings);
end;procedure SetAutoCompleteControl(
const AControl : TWinControl;
const AList : TStrings
);overload;
procedure SetAutoCompleteControl(
const AControlHandle : HWND;
const AList : TStrings
);overload;function SHAutoComplete(hWnd: HWND; dwFlags: DWORD): LRESULT; stdcall;implementationfunction SHAutoComplete; external 'shlwapi.dll' name 'SHAutoComplete';procedure SetAutoCompleteControl(
const AControl : TWinControl;
const AList : TStrings
);overload;
var
FAutoComplete : IAutoComplete2;
FStrings : TEnumString;
begin
FAutoComplete :=
CreateComObject(CLSID_IAutoComplete)as IAutoComplete2; FStrings := TEnumString.Create(AList); OleCheck(FAutoComplete.SetOptions(ACO_AUTOSUGGEST
or ACO_AUTOAPPEND or ACO_UPDOWNKEYDROPSLIST or ACO_USETAB));
OleCheck(FAutoComplete.Init(AControl.Handle, FStrings, nil, nil));
end;procedure SetAutoCompleteControl(
const AControlHandle : HWND;
const AList : TStrings
);overload;
var
FAutoComplete : IAutoComplete2;
FStrings : TEnumString;
begin
FAutoComplete :=
CreateComObject(CLSID_IAutoComplete)as IAutoComplete2; FStrings := TEnumString.Create(AList); OleCheck(FAutoComplete.SetOptions(ACO_AUTOSUGGEST
or ACO_AUTOAPPEND or ACO_UPDOWNKEYDROPSLIST or ACO_USETAB));
OleCheck(FAutoComplete.Init(AControlHandle, FStrings, nil, nil));
end;
{ IUnknownInt }function TEnumString.Clone(out enm: IEnumString): HResult;
begin
Result := E_NOTIMPL;
pointer(enm) := nil;
end;constructor TEnumString.Create(Strings: TStrings);
begin
inherited Create;
FStrings := Strings;
end;function TEnumString.Next(celt: Integer; out elt; pceltFetched: PLongint): HResult;
var
I: Integer;
wStr: WideString;
begin
I := 0;
while (I < celt) and (FIndex < FStrings.Count) do
begin
wStr := FStrings[FIndex];
TPointerList(elt)[I] := CoTaskMemAlloc(2 * (Length(wStr) + 1));
StringToWideChar(wStr, TPointerList(elt)[I], 2 * (Length(wStr) + 1));
Inc(I);
Inc(FIndex);
end;
if pceltFetched <> nil then
pceltFetched^ := I;
if I = celt then
Result := S_OK
else
Result := S_FALSE;
end; function TEnumString.Reset: HResult;
begin
FIndex := 0;
Result := S_OK;
end; function TEnumString.Skip(celt: Integer): HResult;
begin
if (FIndex + celt) <= FStrings.Count then
begin
Inc(FIndex, celt);
Result := S_OK;
end
else
begin
FIndex := FStrings.Count;
Result := S_FALSE;
end;
end; initialization
Oleinitialize(nil);finalization
OleUninitialize;end.