procedure TFrmGer.MHoisaKeyPress(Sender: TObject; var Key: Char);
var
i:byte;
j:byte;
M_count:string[5];
m_hoisa:string[24];
begin
If Key = #13 then // Enter를 치면
If ChSin.Checked=False then
begin
key:=#0;
if Mhoisa.Text = ' ' then // 이름에 입력하지 않고 enter를 쳤을 경우
begin
MSajang.setFocus;
exit;
end;
with Query1 do
begin // 이름을 완벽하게 입력하였을 경우 SQL
Close;
Sql.clear;
Sql.add('select * ');
Sql.add('from ger');
Sql.add('where hoisa like :hoisa order by hoisa ');
ParamByName('hoisa').AsString := Mhoisa.Text + '%';
Open;
if RecordCount = 0 then // 찾아온 자료가 없으면 신규이다.
begin
If IDYES = Application.MessageBox('신규등록하시겠습니까?','신규확인',
mb_YESNO + mb_ICONQUESTION) then //저장전 확인박스
begin
chsin.Checked:=true;
lasin.Visible:=true;
Msajang.SetFocus;
end else
begin
screenclear;
end;
end
else if RecordCount >0 then
begin
Key := #0;
LBgName.Items.BeginUpdate;
LBgName.Items.Clear; //이름 리스트박스 초기화
while not EOF do // 이름 검색 리스트박스에 데이터 넣기
begin
M_hoisa:=FieldByName('hoisa').AsString;
for i := 0 to 23 - Length(m_hoisa) do
m_hoisa := m_hoisa+' ' ; //나머지는 공백으로 처리
M_count:=FieldByName('hoico').AsString;
for j:= 24 to 29 - Length(m_count) do
M_count := M_count+' ';
next;
LBgName.Items.Add(M_hoisa+' '+m_count +' ');
end;
LBgName.Items.EndUpdate;
LBgName.ItemIndex := 0;
if LBgName.Items.Count = 1 then // 찾아온 자료가 하나 존재한다면 DBSHOW수행
begin
SendMessage(LBgName.Handle, WM_CHAR, 13, 0);
end else
begin
LbgName.Height := 145;
LbgName.BringToFront;
LbgName.Visible := True;
LbgName.SetFocus;
LbgNameClick(Sender);
end;
end;
end;
end else
begin
Msajang.SetFocus;
end;
end;
editbox에서 검색한 자료중 특정필드만 listbox로 뽑아낸후
up,down 키를 이용해 다시 editbox로 뿌려주는 작업을 하고 있는데
현재 화면에 뿌려진 데이타에서 up,down 키를 사용하면
빨리 움직여지는데 아래위 가려진 데이타로 갈수록
느려지는군요.
edit로 뿌려지는것도 느리고요.
query를 사용했습니다.
Lbgname:특정필드를 뿌려주는 listbox
Mhoisa:검색하는 editbox
hoisa:리스트박스로 뿌려지는 특정필드
좀 설명하기 까다로운것 같은데 부족한게 있으면
말씀해주세요!
|