Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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]

Элементарно&#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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.032 c
1-1172039173
samum
2007-02-21 09:26
2007.04.15
Передача строк между потоками приложения


15-1173985485
tesseract
2007-03-15 22:04
2007.04.15
херай - японские басни. очень понравились


2-1174495513
p1115
2007-03-21 19:45
2007.04.15
shl / shr


15-1174275673
Slider007
2007-03-19 06:41
2007.04.15
С днем рождения ! 18 марта


4-1164319174
Goric
2006-11-24 00:59
2007.04.15
CreateService





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский