![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CheckBox
Washington © (2007-03-10 21:12:00)Как сделать, чтобы CheckBox нельзя было отмечать вручную. А заодно то же самое для CheckListBox, пожалуйста подскажите
_Knight_ (2007-03-26 13:27:00) [1]> Washington (10.03.07 21:12)
Готовой решение... "Налетай не скупись, покупай живопИсь" © (Операция Ы)
_Knight_ (2007-03-26 13:24:00) [2]Ну да.. спасибо.
RASkov (2007-03-26 13:19:00) [3]> [41] _Knight_ (26.03.07 10:43)
Не много подправлю:
procedure TCheckListBoxWithRO.KeyPress(var Key: Char);
begin
if not FReadOnly then inherited else
if Assigned(OnKeyPress) then OnKeyPress(self, Key);
end;
procedure TCheckListBoxWithRO.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if not FReadOnly then inherited else
if Assigned(OnMouseDown) then OnMouseDown(self, Button, Shift, X, Y);
end;
Не хотелось бы полность лишать таких событий....
_Knight_ (2007-03-26 10:43:00) [4]Молчанье знак согласия... наверно правильно.
_Knight_ (2007-03-26 00:02:00) [5]ToggleClickCheck отказался приватным, поэтому пришлось перекрыть клаву и мышь.
_Knight_ (2007-03-26 00:02:00) [6]ToggleClickCheck отказался приватным, поэтому пришлось перекрыть клаву и мышь.
_Knight_ (2007-03-25 23:36:00) [7]Поправьте если что не так
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-25 23:12:00) [8]Элементарно создай свой компонент с со свойством ReadOnly и добавь его проверку в процедуре ToggleClickCheck;
RASkov (2007-03-24 21:39:00) [9]> [35] Washington (24.03.07 15:03)
У CheckListBox'а есть свойство Items у которого каждый элемент содержит строковое значение и TObject и есть событие OnClickCheck.
Осталось совместить код из [32] с CheckListBox'ом.... Подсказка: TObject Itema использовать вместо CheckBox1.Tag
Washington (2007-03-24 15:03:00) [10]Извиняюсь, что опять тему поднимаю со дна - насчёт CheckListBox'а то никто ничо не подсказал. Причём Enabled:=false нельзя, так как должно выполняться OnDblClick.
RASkov (2007-03-12 21:27:00) [11]> только ещё моргание убрать...
Ну это не из-за моего шаманства моргает.. :) А чем оно мешает? это стандартное моргание чеков.
Knight (2007-03-12 21:24:00) [12]Маладца... только ещё моргание убрать... при клике :)
RASkov (2007-03-12 21:21:00) [13]> [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;
RASkov (2007-03-12 21:18:00) [14]> [30] Knight © (12.03.07 21:18)
Сейчас придумаем ...:)
Knight (2007-03-12 21:18:00) [15]Да.. как будь-то он ReadOnly...
RASkov (2007-03-12 21:17:00) [16]> [25] Knight © (12.03.07 21:10)
Походу догадался... Нужно чтобы вручную нельзя было переключать состояние чеков, так что ли?
:) Ужос.
Knight (2007-03-12 21:17:00) [17]И чем он отличается от предыдущего? %)
RASkov (2007-03-12 21:15:00) [18]> [25] Knight © (12.03.07 21:10)
Я вообще не пойму, в чем прикол :(
> Как сделать, чтобы CheckBox нельзя было отмечать вручную.
Неужели мои способы этого не решают????
RASkov (2007-03-12 21:14:00) [19]> [25] Knight © (12.03.07 21:10)
Ну вот еще вариант :)
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if GetAsyncKeyState(VK_CONTROL)=0 then CheckBox1.Checked:=False;
end;
Knight (2007-03-12 21:10:00) [20]А потом клик на чексе... %)))))))))))