type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure ComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
key_ch : Word; // 입력한 키값을 저장
idx_URL : integer;
sv_URL : array [0..9] of string;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
key_ch := key;
if key = VK_RETURN then begin
// 입력URL로 이동하는 부분 구현
// HTML1.RequestDoc(ComboBox1.Text);
ComboBox1.Items.Add(ComboBox1.Text);
if (idx_URL <= 9) then begin
Inc(idx_URL);
// 현재 URL을 저장
sv_URL[idx_URL] := ComboBox1.Text;
end;
end;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var
index : integer;
pc : PChar;
begin
if ((key_ch <> VK_BACK) and (key_ch <> VK_DELETE)) then begin
pc := PChar(String(ComboBox1.Text));
// ComboBox에게 CB_FINDSTRING 메시지를 전달
// 전달한 lParam값은 검색할 문자열의 주소
index := SendMessage(ComboBox1.Handle, CB_FINDSTRING, -1, Integer(pc));
// 비슷한 문자열을 찾으면 다음을 수행
if index >= 0 then begin
ComboBox1.Text := ComboBox1.Items[index];
ComboBox1.SelStart := StrLen(pc);
ComboBox1.SelLength := StrLen(PChar(ComboBox1.Items[index]));
end;
end;
end;
차라리 이 방법은 어떨까요?
익스플러러 에서 주소칠때처럼 나오는 방법이요..
아래의 소스를 이용해서 만들어 보셔요..
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure ComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
key_ch : Word; // 입력한 키값을 저장
idx_URL : integer;
sv_URL : array [0..9] of string;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
key_ch := key;
if key = VK_RETURN then begin
// 입력URL로 이동하는 부분 구현
// HTML1.RequestDoc(ComboBox1.Text);
ComboBox1.Items.Add(ComboBox1.Text);
if (idx_URL <= 9) then begin
Inc(idx_URL);
// 현재 URL을 저장
sv_URL[idx_URL] := ComboBox1.Text;
end;
end;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var
index : integer;
pc : PChar;
begin
if ((key_ch <> VK_BACK) and (key_ch <> VK_DELETE)) then begin
pc := PChar(String(ComboBox1.Text));
// ComboBox에게 CB_FINDSTRING 메시지를 전달
// 전달한 lParam값은 검색할 문자열의 주소
index := SendMessage(ComboBox1.Handle, CB_FINDSTRING, -1, Integer(pc));
// 비슷한 문자열을 찾으면 다음을 수행
if index >= 0 then begin
ComboBox1.Text := ComboBox1.Items[index];
ComboBox1.SelStart := StrLen(pc);
ComboBox1.SelLength := StrLen(PChar(ComboBox1.Items[index]));
end;
end;
end;
end.