Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2014, 13:52   #1
palevg
Пользователь
 
Аватар для palevg
 
Регистрация: 03.10.2010
Сообщений: 77
Вопрос Изменение списка в ComboBox, позиция курсора

На форме есть ComboBox.
ComboBox.Items формируется SQL-запросом каждый раз, по событию ComboBox.onChange
Но перед тем, как загнать список из нового SQL, надо его очистить в самом ComboBox, т.е. команда ComboBoxName.Items.Clear
Вот после этой команды курсор прыгает в начало текста комбобокса.
Код:
procedure ComboBoxNameChange(Sender: TObject);
begin
  ComboBoxName.Items.Clear;
  Query1.SQL.Add('select Name from peoples where Name like '"+ComboBoxName.Text+'%"');
  Query1.SQL.Add('order by Name');
  Query1.Open;
  if Query1.RecordCount>0 then begin
    Query1.First;
    while not Query1.Eof do begin
      ComboBoxName.Items.Append(Query1.FieldByName('Name').AsString);
      Query1.Next
    end;
  end;
end;
Вопросы:
1) как сделать очистку списка ComboBoxName, чтоб курсор остался на своём месте, а именно - после последнего символа в поле ComboBox?
2) есть ли более простой (ну или быстрый) способ внесения списка из SQL в ComboBox.Items, не используя перебор (While, Repeat и т.п.) ?
По соотношению цена-качество, халявное пиво не имеет конкурентов.
palevg вне форума Ответить с цитированием
Старый 31.07.2014, 09:07   #2
ilich7
Пользователь
 
Регистрация: 25.09.2008
Сообщений: 24
По умолчанию

тоже с этим плясал вчера, сегодня нашёл решение в конец своих манипуляций поставь строку:
cb.SelStart := length(cb.Text);

каждый раз будет ставить курсор в конец.

раз уж здесь зашло про комбобох, после решения с курсором столкнулся с проблемой:
Например в списке присутствуют среди прочих строчки сначала "Кипр" , а потом далее "Китай"
при вводе "к" сразу пишется в комбобоксе строка которая более первая "Кипр", а мне например надо "Китай" и выбор осуществляется только мышью. Непонятно почему подставляется строка если на "к" есть ещё строка.

Последний раз редактировалось ilich7; 31.07.2014 в 09:12.
ilich7 вне форума Ответить с цитированием
Старый 05.08.2014, 10:41   #3
palevg
Пользователь
 
Аватар для palevg
 
Регистрация: 03.10.2010
Сообщений: 77
По умолчанию

ilich7, спасибо, попробую как оно на практике происходит.
По соотношению цена-качество, халявное пиво не имеет конкурентов.
palevg вне форума Ответить с цитированием
Старый 05.08.2014, 11:26   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
при вводе "к" сразу пишется в комбобоксе строка которая более первая "Кипр", а мне например надо "Китай" и выбор осуществляется только мышью. Непонятно почему подставляется строка если на "к" есть ещё строка.
Безусловно было бы лучше, если бы в таком случае ничего не подставлялось или наоборот, не первая, а последняя А на практике для такого поиска делают дополнительный Edit и в его OnChange ищут нужную строку в комбобоксе, начинающуюся с символов в эдите
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 05.08.2014 в 11:33.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Позиция курсора Avalon_Albio Помощь студентам 1 21.03.2012 11:31
Позиция курсора в EmbeddedWB mosq Компоненты Delphi 0 12.02.2010 02:21
Позиция курсора Arkuz Общие вопросы Delphi 2 11.10.2008 01:39
Позиция курсора Манжосов Денис :) Помощь студентам 3 25.04.2008 16:56
Позиция курсора в TMemo Air Общие вопросы Delphi 6 19.02.2008 10:28