Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

CheckBox


Страницы:   1 2 3

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]

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


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо