Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: -0.928 c
6-1223337489
Вэн
2008-10-07 03:58
2010.08.27
Рассылка сообщений в лок. сети


2-1268379582
timekiller
2010-03-12 10:39
2010.08.27
ProgreessBar, подвисание проги


2-1268982904
M@G30
2010-03-19 10:15
2010.08.27
Как хранить данные в TreeNode?


2-1273656185
Чапаев
2010-05-12 13:23
2010.08.27
Принудительная перерисовка формы


6-1219050457
Muh
2008-08-18 13:07
2010.08.27
Как определить программно залогинился ли я на каком либо сайте




   Наверх