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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2010, 10:34   #1
Katunya
Новичок
Джуниор
 
Регистрация: 28.01.2010
Сообщений: 9
Вопрос Ограничение вводимых значений для combobox

Доброго времени суток!
Извините если такой вопрос был уже задан, тогда просьба указать ссылочку где это возможно прочитать.

Вопрос такой - надо ограничить вводимые пользователем значения для combobox'а только теми, что имеются в нем. Т. е. пользователь не должен иметь возможность ввести собственное значение. при этом изменение style не годится. Значения в ComboBoox заносятся из файла txt. Спасибо за помощь
Katunya вне форума Ответить с цитированием
Старый 28.01.2010, 10:37   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
при этом изменение style не годится
Это еще почему???

Впрочим ты всегда можешь описать его событие OnKeyPress:
Код:
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
 Key:=#0;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2010, 11:13   #3
Katunya
Новичок
Джуниор
 
Регистрация: 28.01.2010
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это еще почему???
потому как список у меня примерно следущий
А00
А00.1
А00.2
...
и если я выставляю значение csDropDownList то при вводе А - автоматически у меня выбирается А00 и с этим я больше ничего поделать не могу (реализован автоподбор еще в Combo), а мне к примеру не А00 надо а А00.1

Последний раз редактировалось Katunya; 28.01.2010 в 11:15.
Katunya вне форума Ответить с цитированием
Старый 28.01.2010, 11:54   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а мне к примеру не А00 надо а А00.1
Каприз какой-то...
Ну введи ты A00. и получишь А00.1
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2010, 11:58   #5
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Сделай с Edit'ом.
Кидаешь Edit поверх Сombo (так что бы кнопка открытия списка от Combo торчала) и ставишь его свойствах ReadOnly=true; и BorderStyle=bsNone;
Потом по onChange (для Combo)
Код:
  Edit1.Text := ComboBox1.Text;
А индексы от Combo останутся теме же.

Ну или как предложил Stilet
Цитата:
Код:
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
 Key:=#0;
end;
Изображения
Тип файла: png combo+edit.PNG (8.9 Кб, 166 просмотров)

Последний раз редактировалось psycho-coder; 28.01.2010 в 12:07.
psycho-coder вне форума Ответить с цитированием
Старый 28.01.2010, 12:33   #6
Katunya
Новичок
Джуниор
 
Регистрация: 28.01.2010
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну введи ты A00. и получишь А00.1
в том и проблема что при свойстве Style - csDropDownList, на точку значение почему то не реагирует..всмысле не подбирает дальше значение...(может у меня уже просто мозг закипает =) )

а при значении csDropDown - все нормально, но это значение использовать не могу, потому как надо только из списка
Katunya вне форума Ответить с цитированием
Старый 28.01.2010, 12:48   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Катя, предлагаю тебе описать событие OnChange которое будет заставлять комбик искать именно так как ты вводишь:
Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
var i:integer;
begin
 i:=SendMessage(ComboBox1.Handle,CB_FINDSTRING,0,integer(pchar(ComboBox1.Text)));
 ComboBox1.ItemIndex:=i;
end;
Думаю это тебе подойдет.
Проверил - работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.01.2010, 13:13   #8
Katunya
Новичок
Джуниор
 
Регистрация: 28.01.2010
Сообщений: 9
По умолчанию

Да спасибо! действитеьлно все работает!

Последний раз редактировалось Katunya; 28.01.2010 в 13:18.
Katunya вне форума Ответить с цитированием
Старый 28.01.2010, 13:34   #9
Katunya
Новичок
Джуниор
 
Регистрация: 28.01.2010
Сообщений: 9
По умолчанию

Oops
видимо я поторопилась с выводами..)
/я надеюсь вы меня совсем не убьете за мою невъезжаемость) /

работает со всеми буквами, кроме A/латиница, используются только латинские буквы/..и еще проблема в том что сразу имеется возможность ввести символы и цифры, чего не должно быть
Katunya вне форума Ответить с цитированием
Старый 28.01.2010, 14:00   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... Знаешь я обычно такие задачи решаю двумя путями
1) Разрешаю редактирование, но когда пользователь ввел что хотел (допустим сигнал к этому нажатие клавиши Энтер, или смена фокуса) проверяю, есть ли такой пункт в списке. Если нет, то прошу его еще раз выбрать, и так пока он не введет верное значение

2) Компоненты сторонних производителей, таких как Alvas, LMD и прочие, в которых Комбобоксы навороченные.

А вот так сразу на лету проверять... это нужно этот компонент доукомплектовывать своими проверками...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверка вводимых значений nik1905 Microsoft Office Excel 7 26.08.2009 17:06
проверка вводимых значений не производится при удалении Air_kplp Microsoft Office Excel 7 29.05.2009 09:01
Присвоение значений в ComboBox maxi_mum Помощь студентам 6 09.04.2009 12:48
Задача переменным значений для разных Item-ов Combobox-а Stalker209 Общие вопросы C/C++ 0 24.03.2009 12:22
Задачка для ComboBox Comer_Jus Компоненты Delphi 9 13.08.2008 09:50