** 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
|
поспешил
Отредактировано AVC — 13/08/2004, 09:27 |
|
Shura |
Отправлено: 13.08.2004, 09:25 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 45
|
ну тут, видимо необходимо перекрывать доступ к выпадающему списку не навсегда, а просто в какие-то моменты работы программы. Например чтобы пользователь не изменил какой-то параметр в процессе вычислений и т.д. |
|
AVC |
Отправлено: 13.08.2004, 09:47 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
2Shura я действительно поспешил , конено сталкивался. Просто по моему мнению "серый" control хорошо подчеркивает чего данному пользователю на данной форме можно делать. А то он будет биться об, якобы, активный control как рыба об лед и не понимать что происходит. |
|