Форум: "Начинающим";
Текущий архив: 2007.04.15;
Скачать: [xml.tar.bz2];
Вниз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]Элементарно… создай свой компонент с со свойством ReadOnly и добавь его проверку в процедуре ToggleClickCheck;
← →
_Knight_ (2007-03-25 23:36) [38]Поправьте если что не так…
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;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.032 c