Эвакуатор. Купить сигареты импортного производства.
C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как в TComboBox запретить изменения
** pasha
Отправлено: 12.08.2004, 17:12


Не зарегистрирован







Как в компоненте ComboBox просто запретить редактирование
и изменение строк ?

Типа как ReadOnly в компонентах TEdit

Если поставить стиль csDropDownList то user может
изменить находящееся в нем текущее значение, на другую строку.
если поставить Enabled = false, то все Ок, за исключением
того что текст становиться серым и плохо читаемым.

Можно разместить ComboBox например на Panel
и ее сделать недоступной, но и этот вариант не подходит,
на форме их много и вперемешку те, что можно изменять
и те, что нельзя.

Ваши советы ???
olegenty
Отправлено: 13.08.2004, 09:04


Ветеран

Группа: Модератор
Сообщений: 2412



этот вопрос уже задавался в форуме. цитирую ответ.

CODE

void __fastcall TForm1::ComboBox1KeyDown(TObject *Sender, WORD &Key,
    TShiftState Shift)
{
  if (Key == 86 && Shift.Contains(ssCtrl))
  {
      SendMessage(GetWindow(ComboBox1->Handle, GW_CHILD), EM_SETREADONLY, (WPARAM)TRUE, 0);
  }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ComboBox1KeyUp(TObject *Sender, WORD &Key,
    TShiftState Shift)
{
  SendMessage(GetWindow(ComboBox1->Handle, GW_CHILD), EM_SETREADONLY, (WPARAM)FALSE, 0);
}
AVC
Отправлено: 13.08.2004, 09:22


Ветеран

Группа: Модератор
Сообщений: 1583



поспешил smile.gif

Отредактировано AVC — 13/08/2004, 09:27
Shura
Отправлено: 13.08.2004, 09:25


Дежурный стрелочник

Группа: Участник
Сообщений: 45



ну тут, видимо необходимо перекрывать доступ к выпадающему списку не навсегда, а просто в какие-то моменты работы программы. Например чтобы пользователь не изменил какой-то параметр в процессе вычислений и т.д.
AVC
Отправлено: 13.08.2004, 09:47


Ветеран

Группа: Модератор
Сообщений: 1583



2Shura я действительно поспешил smile.gif , конено сталкивался. Просто по моему мнению "серый" control хорошо подчеркивает чего данному пользователю на данной форме можно делать. А то он будет биться об, якобы, активный control как рыба об лед и не понимать что происходит.

Вернуться в Вопросы программирования в C++Builder