Форум: "Базы";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];
ВнизПомогите программеры!!!!!!! Найти похожие ветки
← →
Сергей Иванов (2002-02-19 14:21) [6]Ну тогда будем считать, что комбо ты уже заполнил.
Далее - добавление новых / выбор значений из айтемов.
Основная идея - то что у комбо можно менять стиль - например csSimple или csDropDown. Приведу пример, как это делал я.
Навешиваешь на комбо события:OnKeyDown
procedure TGroup.ItemsComboKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case key of
VK_RETURN : begin
if ItemsCombo.Style = csSimple then begin
ItemsCombo.Items.Add(ItemsCombo.Text);
Items.ItemsCombo.Items.Add(ItemsCombo.Text);
{это добавление
в базу} Items.WriteToTable(ItemsCombo.Text, "КГ");
end; {csSimple}
ItemsCombo.Style := csDropDown;
ItemsCombo.Visible := false; {скрываем его}
end;
VK_ESCAPE : begin
if ItemsCombo.Style<>csDropDown then begin
ItemsCombo.Style := csDropDown;
ItemsCombo.Text := "";
end;
ItemsCombo.Visible := false; {скрываем его}
end;
end;
end;
Навешиваешь на комбо события:OnKeyPress
Это немногомодифицированная процедура из хелпа
procedure ComboKeyPress(Sender: TObject; var Key: Char);
var
Found: boolean;
i, SelSt: Integer;
TmpStr, NewItem: string;
Rect :TRect;
Edit :TEdit;
begin
if key in ["а".."я"] then Dec(Key,32);
with (Sender as TComboBox) do begin
SelSt := SelStart;
if (Key = Chr(vk_Back)) and (SelLength <> 0) then
TmpStr := Copy(Text,1,SelStart)+Copy(Text,SelLength+SelStart+1,255)
else if Key = Chr(vk_Back) then {SelLength = 0}
TmpStr := Copy(Text,1,SelStart-1)+Copy(Text,SelStart+1,255)
else {Key in ["A".."Z", etc]}
TmpStr := Copy(Text,1,SelStart)+Key+Copy(Text,SelLength+SelStart+1,255);
if TmpStr = "" then Exit;
if (Key = Chr(vk_Back)) and (SelSt > 0) then Dec(SelSt)
else if Key <> Chr(vk_Back) then Inc(SelSt);
Key := #0; { indicate that key was handled }
if SelSt = 0 then
begin
Text:= "";
Exit;
end;
Found := False;
for i := 1 to Items.Count do
if Copy(Items[i-1],1,Length(TmpStr)) = TmpStr then
begin
Text := Items[i-1]; { update to the match that was found }
ItemIndex := i-1;
Found := True;
Break;
end;
if Found then { select the untyped end of the string }
begin
SelStart := SelSt;
SelLength := Length(Text)-SelSt;
end
else begin
Style := csSimple;
Text := TmpStr;
SelStart := SelSt;
end;
end;
end;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c