Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Control.Enable := False Но, чтоб визуально не изменился. [D7, XP]


12 ©   (2011-01-13 09:15:00) 

Извините за тупой/странный вопрос.
Есть задача, все TEdit, TComboBox и т.п. делать недоступными, но: Чтоб цвет не менялся.
"..получено много нареканий на это. Очень неудобно читать.."
Как бы так сделать быстро и для всех контрлов?
с наскока не получилось докопаться

Быстро могу предложить
Control.Enable <=> Enable(Control)
а там что-то типа
procedure TForm1.Enable
Control.OnEnter := некий другой контрол . SetFocus;

т.е. просто не даем ему фокус и все


DiamondShark   (2011-01-14 11:25:00) [1]


> Я бы добавил хинты к кнопкам, что бы не читать на кнопках,
>  а надписи на кнопках заменил на пиктограммы.

Повбывал бы.


Дмитрий Белькевич   (2011-01-14 10:29:00) [2]


> Есть задача, все TEdit, TComboBox


Сорри, не о том речь :)


Дмитрий Белькевич   (2011-01-14 10:28:00) [3]


> Ты сам попробуй с таким извратом поработать, причем долго
> и насильственно.


Сама постановка задачи - изврат. А решение - [12] - то, что автору нужно. Я бы добавил хинты к кнопкам, что бы не читать на кнопках, а надписи на кнопках заменил на пиктограммы.


Игорь Шевченко   (2011-01-13 21:23:00) [4]


> Положить на панель, панели сделать Enable := False


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


_Юрий   (2011-01-13 20:15:00) [5]

Положить на панель, панели сделать Enable := False

ну и конечно [10]


QAZ   (2011-01-13 14:20:00) [6]

Удалено модератором


DiamondShark   (2011-01-13 11:44:00) [7]


> Есть задача, все TEdit, TComboBox и т.п. делать недоступными,
>  но: Чтоб цвет не менялся.

Плохая идея.
1. Визуальный фидбэк о возможностях контролов должен быть.
2. Даже нередактируемые контролы должны быть доступны, если они содержат интересную информацию, которую можно использовать. Например, нередактируемый текстбох должен допускать возможность ткнуть в него, выделить текст и скопировать в клипборд
3. Для нередактируемых полей нет смысла использовать сложные контролы. Все нередактируемые поля можно (нужно) заменить на простой текст (с учётом п.2).


12   (2011-01-13 11:05:00) [8]


> WM_UPDATEUISTATE
> ...
> UISF_ACTIVE

http://msdn.microsoft.com/en-us/library/ms646361%28v=vs.85%29.aspx
все варианты попробовал
// edt1.Enabled := False;// так тоже, предварительно
SendMessage(edt1.Handle, WM_UPDATEUISTATE, XXXX, 0);
не получается


han_malign   (2011-01-13 10:53:00) [9]

WM_UPDATEUISTATE
...
UISF_ACTIVE
   Windows XP: A control should be drawn in the style used for active controls.


12   (2011-01-13 10:42:00) [10]


> потом получиш много нареканий что ".. нажимаеш,а ничего
> не происходит..."

кстати, да..

но тогда просто переделать

procedure TForm1.Enable как
begin end;и все :)


QAZ   (2011-01-13 10:32:00) [11]

Удалено модератором


12   (2011-01-13 10:16:00) [12]


> убирай обработчик

запомнить, убрать, на закрытие вернуть?

в принципе, тоже самое
Control.Enable <=> Enable(Control)
потом если есть onEnter присвоить убрать фокус
иначе если есть onMouseDown (У меня там еще TLabel, с эффектом, как гиперссылка) присвоить убрать фокус

блин, нифига не вспомню потом зачем все это :)


Palladin   (2011-01-13 09:42:00) [13]

убирай обработчик


12   (2011-01-13 09:35:00) [14]


> ReadOnly := True; ?

не у всех есть


> положи все на форму и дизейбли ее.

они вперемешку, выборочно надо, от прав зависит


Ega23   (2011-01-13 09:24:00) [15]

ReadOnly := True;?


sniknik   (2011-01-13 09:22:00) [16]

положи все на форму и дизейбли ее.


Наверх

Титульная страница Поиск, карта сайта Написать письмо