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

Вниз

CheckBox   Найти похожие ветки 

 
Washington   (2007-03-10 21:12) [0]

Как сделать, чтобы CheckBox нельзя было отмечать вручную. А заодно то же самое для CheckListBox, пожалуйста подскажите


 
Loginov Dmitry ©   (2007-03-10 21:23) [1]

Enabled := False;


 
RASkov   (2007-03-11 04:06) [2]

> [0] Washington   (10.03.07 21:12)

procedure CheckBoxClick();
begin
CheckBox.Checked:=False;
end;


 
Washington   (2007-03-12 20:00) [3]

Enabled:=false не совсем мне подходит, CheckBox.Checked:=false ваще цикл какой-то происходит и ошибка прёт


 
Washington   (2007-03-12 20:03) [4]

Enabled:=false не подходит т.к. он становится серым, а CheckBox:=false нельзя т.к. цикл и вследствие - ошибка


 
Knight ©   (2007-03-12 20:04) [5]

Прёт где-то в другом месте...


 
Джо ©   (2007-03-12 20:06) [6]

> CheckBox:=false нельзя т.к. цикл и вследствие - ошибка

Что там «прет»? Ну, сделай так, чтобы не «перло» или, если на то пошло, опиши по-человечески, что там у тебя происходит.


 
Knight ©   (2007-03-12 20:07) [7]

Бросаешь его на панел и делаешь нот енэйвлед её :)


 
Knight ©   (2007-03-12 20:09) [8]

И не сереет и ничё никуда не прёт %)


 
Knight ©   (2007-03-12 20:17) [9]

И убери

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 CheckBox1.Checked:=not CheckBox1.Checked;
end;


 
Knight ©   (2007-03-12 20:18) [10]

Если таковое присутствует... а он таки присутствует.. или мне мой телепататор абгрейдить надо %)))))))


 
Washington   (2007-03-12 20:31) [11]

ёлки-брёвна, прямо взрыв эмоций
Во-первых когда CheckBox1.Enabled = false он серого цвета!!!!
Во-вторых когда
>procedure TForm5.CheckBox1Click(Sender: TObject);
>begin
>if CheckBox1.Checked=true then CheckBox1.Checked:=true else
>CheckBox1.Checked:=false;
>end;
ничего не происходит, а если
>procedure TForm5.CheckBox1Click(Sender: TObject);
>begin
>if CheckBox1.Checked=true then CheckBox1.Checked:=false else
>CheckBox1.Checked:=true;
>end;
ошибка - Stack Overflow.

Был предложен такой вариант:
procedure TForm1.CheckBox1Click(Sender: TObject);
var
  old: TNotifyEvent;
begin
if b then
 with (Sender as TCheckBox) do
 begin
  old := OnClick;
  OnClick := nil;
  Checked:=not Checked;
  OnClick := old;
 end;
end;

b - гдлобальная перемена boolean

но этот вариант тоже чтото не пропёр


 
Knight ©   (2007-03-12 20:32) [12]

Телепортатор оставляю на месте.. работает ещё.. :)))))))))


 
Knight ©   (2007-03-12 20:32) [13]

.. т.е. телепатор...


 
Knight ©   (2007-03-12 20:34) [14]

Зачем тыт циклишь прогу если статус меняется автоматом (при клике) или устанавливается тобой где-то ещё?


 
Knight ©   (2007-03-12 20:35) [15]

А про серость... пробовал на панель закинуть и сделать Enabled=False не у бокса а у панели?


 
Джо ©   (2007-03-12 20:36) [16]

> но этот вариант тоже чтото не пропёр

Предлагаю завязывать со сленгом.


 
Knight ©   (2007-03-12 20:36) [17]

Если чексов несколько и они как-то логически связаны, то можно запользовать GroupBox результат то же.


 
Washington   (2007-03-12 20:39) [18]

Чекс только один


 
Knight ©   (2007-03-12 20:43) [19]

Ну и брось его на панель без выпухлостей и вогнутостей.. поставь панели Енэйблед=Фолс, убери обработку смену статуса чекса в онКлике и будет те счастье ;)


 
Washington   (2007-03-12 20:45) [20]

Парились долго...
Сделал через панель - всё путём. Спасибо

зы А чем сленг не угодил?


 
Knight ©   (2007-03-12 20:49) [21]

Щас только посмотрел, что тема от 10-го числа... ужас... :)))


 
RASkov   (2007-03-12 20:56) [22]

Странно..., а у меня вот так все работает
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 CheckBox1.Checked:=False;
end;

Т.е. при клике по чекбоксу он просто не выделяется(не ставиться галочка) и все...
D7 - на всякий случай, но это по моему не важно.....


 
Knight ©   (2007-03-12 20:57) [23]

А ты поробуй его отметить.. хоть как-то.. во посмеёмся... проще удалить :)


 
RASkov   (2007-03-12 21:08) [24]

> [23] Knight ©   (12.03.07 20:57)

Если это мне, то легко:

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 CheckBox1.Checked:=False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 CheckBox1.OnClick:=nil;
 CheckBox1.Checked:=True;
 CheckBox1.OnClick:=CheckBox1Click;
end;


 
Knight ©   (2007-03-12 21:10) [25]

А потом клик на чексе... %)))))))))))


 
RASkov   (2007-03-12 21:14) [26]

> [25] Knight ©   (12.03.07 21:10)

Ну вот еще вариант :)

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 if GetAsyncKeyState(VK_CONTROL)=0 then CheckBox1.Checked:=False;
end;


 
RASkov   (2007-03-12 21:15) [27]

> [25] Knight ©   (12.03.07 21:10)

Я вообще не пойму, в чем прикол :(

> Как сделать, чтобы CheckBox нельзя было отмечать вручную.

Неужели мои способы этого не решают????


 
Knight ©   (2007-03-12 21:17) [28]

И чем он отличается от предыдущего? %)


 
RASkov   (2007-03-12 21:17) [29]

> [25] Knight ©   (12.03.07 21:10)

Походу догадался... Нужно чтобы вручную нельзя было переключать состояние чеков, так что ли?
:) Ужос.


 
Knight ©   (2007-03-12 21:18) [30]

Да.. как будь-то он ReadOnly...


 
RASkov   (2007-03-12 21:18) [31]

> [30] Knight ©   (12.03.07 21:18)

Сейчас придумаем ...:)


 
RASkov   (2007-03-12 21:21) [32]

> [30] Knight ©   (12.03.07 21:18)

Тогда вот :)

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 CheckBox1.Checked:=CheckBox1.Tag=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if CheckBox1.Tag=0 then CheckBox1.Tag:=1 else CheckBox1.Tag:=0;
 CheckBox1Click(CheckBox1);
end;


 
Knight ©   (2007-03-12 21:24) [33]

Маладца... только ещё моргание убрать... при клике :)


 
RASkov   (2007-03-12 21:27) [34]

> только ещё моргание убрать...

Ну это не из-за моего шаманства моргает.. :) А чем оно мешает? это стандартное моргание чеков.


 
Washington   (2007-03-24 15:03) [35]

Извиняюсь, что опять тему поднимаю со дна - насчёт CheckListBox"а то никто ничо не подсказал. Причём Enabled:=false нельзя, так как должно выполняться OnDblClick.


 
RASkov   (2007-03-24 21:39) [36]

> [35] Washington   (24.03.07 15:03)

У CheckListBox"а есть свойство Items у которого каждый элемент содержит строковое значение и TObject и есть событие OnClickCheck.
Осталось совместить код из [32] с CheckListBox"ом.... Подсказка: TObject Itema использовать вместо CheckBox1.Tag


 
_Knight_   (2007-03-25 23:12) [37]

Элементарно&#133 создай свой компонент с со свойством ReadOnly и добавь его проверку в процедуре ToggleClickCheck;


 
_Knight_   (2007-03-25 23:36) [38]

Поправьте если что не так&#133

unit CheckListBoxWithRO;

interface

uses
 Windows, Messages, SysUtils, Classes, Controls, StdCtrls, CheckLst;

type
 TCheckListBoxWithRO = class(TCheckListBox)
 private
   { Private declarations }
   FReadOnly: Boolean;
 protected
   { Protected declarations }
   procedure KeyPress(var Key: Char); override;
   procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
     X, Y: Integer); override;
 public
   { Public declarations }
 published
   { Published declarations }
   property ReadOnly:Boolean read FReadOnly write FReadOnly;
 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents("Knight_DC", [TCheckListBoxWithRO]);
end;

{ TCheckListBoxWithRO }

procedure TCheckListBoxWithRO.KeyPress(var Key: Char);
begin
 if not FReadOnly then inherited;
end;

procedure TCheckListBoxWithRO.MouseDown(Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 if not FReadOnly then inherited;
end;

end.


 
_Knight_   (2007-03-26 00:02) [39]

ToggleClickCheck — отказался приватным, поэтому пришлось перекрыть клаву и мышь.


 
_Knight_   (2007-03-26 00:02) [40]

ToggleClickCheck — отказался приватным, поэтому пришлось перекрыть клаву и мышь.



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

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

Наверх




Память: 0.55 MB
Время: 0.071 c
2-1174909065
bagos
2007-03-26 15:37
2007.04.15
stringgrid


2-1174111732
Lines
2007-03-17 09:08
2007.04.15
Разработка приложений


6-1161733441
ph0sgen
2006-10-25 03:44
2007.04.15
POST + Delphi


10-1131109142
san7
2005-11-04 15:59
2007.04.15
Работа с Word


15-1174384301
Сало
2007-03-20 12:51
2007.04.15
Шева вернулся