Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Хинт у компонента со свойством Enabled=False   Найти похожие ветки 

 
Германн ©   (2010-05-26 01:38) [0]

Надо мне в тестовом ПО показать состояние битов двух байт получаемых с моего контроллера. Каждый бит из этих 16-ти имеет своё смысловое значение. Так что просто вывод в двоичном формате ну очень не подходит. Решил вывести их с помощью компонент TGroupBox и TCheckBox. Хорошо, но не совсем. Если компонентам TCheckBox поставить Enabled=True, то дурак обязательно на них кликнет. Если им поставить Enabled=False, то они "некрасиво" выглядят. Стиль Grayed сильно смущает пользователя (даже несмотря на то, что это ПО - ДСП).
Поместил всё на TPanel установив ей Enabled=False. Теперь всё отлично. И вид нормальный и кликнуть нельзя. Но вот одно меня мучает. Два бита из 16-ти напрашиваются на дополнительное объяснение, которое ну никак не влазит в CaptionTCheckBox"а.
Что делать? Может кто что посоветует?


 
antonn ©   (2010-05-26 01:51) [1]

нарисуй свой контрол


 
Германн ©   (2010-05-26 02:11) [2]


> antonn ©   (26.05.10 01:51) [1]
>
> нарисуй свой контрол
>

Не хочется. Это ведь займёт время (которого у меня нет).
Тем более, что я (в виду своей малограмотности даже не знаю куда копать?).
Где искать и где (что) менять чтобы показать хинт задизейбленного контролла.

С нуля делать контрол, который внешне похож на TCheckBox, но не допускает изменения "галочки" - тоже слишком сложно/долго для меня.

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


 
Омлет ©   (2010-05-26 07:11) [3]

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 if Reverse then exit;
 Reverse := true;
 with TCheckBox(Sender) do
   Checked := not Checked;
 Reverse := false;
end;


 
Омлет ©   (2010-05-26 07:40) [4]

Вариант с наследником (с тем же, как в [3], результатом):

 TMyCheckBox = class (TCheckBox)
 protected
   procedure WndProc(var Message: TMessage); override;
 end;

procedure TMyCheckBox.WndProc(var Message: TMessage);
begin
 if Message.Msg = CN_COMMAND then Message.Msg := 0;
 inherited WndProc(Message);
end;


 
Leonid Troyanovsky ©   (2010-05-26 07:59) [5]


> Германн ©   (26.05.10 02:11) [2]

> С нуля делать контрол, который внешне похож на TCheckBox,
>  но не допускает изменения "галочки" - тоже слишком сложно/долго
> для меня.

http://www.rsdn.ru/forum/delphi/689539.1.aspx

--
Regards, LVT.


 
12 ©   (2010-05-26 09:15) [6]

или
type TBC = class (TButtonControl);

   TBC(cbChiefEngener).ClicksDisabled := True;
   cbChiefEngener.Checked := not(cbChiefEngener.Checked);
   TBC(cbChiefEngener).ClicksDisabled := False;


 
GrayFace ©   (2010-05-26 10:56) [7]

TCheckListBox


 
Плохиш ©   (2010-05-26 12:44) [8]


> Два бита из 16-ти напрашиваются на дополнительное объяснение,
>  которое ну никак не влазит в CaptionTCheckBox"а.
> Что делать?

Добавить TLabel/TText, уж туда-то точно влезет :-)


 
Германн ©   (2010-05-26 14:07) [9]

Спасибо за варианты!


 
DVM ©   (2010-05-26 23:16) [10]


> С нуля делать контрол, который внешне похож на TCheckBox,
>  но не допускает изменения "галочки" - тоже слишком сложно/долго
> для меня.

15 минут. Серьезно.


 
Германн ©   (2010-05-27 00:48) [11]


> DVM ©   (26.05.10 23:16) [10]
>
>
> > С нуля делать контрол, который внешне похож на TCheckBox,
>
> >  но не допускает изменения "галочки" - тоже слишком сложно/долго
> > для меня.
>
> 15 минут. Серьезно.
>

Ты слишком высокого мнения обо мне. :(


 
Юрий Зотов ©   (2010-05-27 02:25) [12]

> Германн

DrawFrameControl (рисует неинтерактивный CheckBox) и обычный TLabel (показывает хинт). Действительно 15 минут, причем компонент можно и не делать.


 
Германн ©   (2010-05-27 02:41) [13]


> Юрий Зотов ©   (27.05.10 02:25) [12]
>
> > Германн
>
> DrawFrameControl (рисует неинтерактивный CheckBox) и обычный
> TLabel (показывает хинт). Действительно 15 минут, причем
> компонент можно и не делать.
>

Спасибо. Посмотрю по возможности.

Но и осмотр исходников Дельфи показал, что можно достаточно просто для такого новичка как я создать наследника TCheckBox, который будет невосприимчив  к кликам пользователя.
Но пока я занят основной работой над этим проектом.


 
Германн ©   (2010-05-27 03:03) [14]


> Юрий Зотов ©   (27.05.10 02:25) [12]
>
> > Германн
>
> DrawFrameControl (рисует неинтерактивный CheckBox) и обычный
> TLabel (показывает хинт)

Долго не мог понять, но всё таки понял! Ну глупый я, глупый. И очень необразованный!
Как вариант - подходит. Но не совсем. Если указатель на CheckBox, хинта естественно нет.



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.05 c
15-1267432925
boa_kaa
2010-03-01 11:42
2010.08.27
ПМП, а?


15-1271146921
Mystic
2010-04-13 12:22
2010.08.27
Тест на механическую интуицию (70 вопросов)


2-1270973363
@!!ex
2010-04-11 12:09
2010.08.27
Одновременная компиляции проекта в два exe.


15-1269807638
{Vanek}
2010-03-29 00:20
2010.08.27
Датчик


2-1267766469
lady
2010-03-05 08:21
2010.08.27
Как получить все вероятные значения Bin