![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Статус DBCheckBox [D2005, XP]
azl © (2007-12-23 23:32:00)Здравствуйте, уважаемые мастера.
Помогите разобраться.
На форме есть 2 DBCheckBox. Мне нужно, чтобы при нажатии на один DBCheckBox, если он отмечается птичкой, второй менял свой статус с true на false.
Делаю так:
Кликаю на DBCheckBox2, отмечаю его птичкой, затем кликаю на DBCheckBox1.
procedure TForm1.DBCheckBox1Click(Sender: TObject);
begin
if DBCheckBox1.Checked then
DBCheckBox2.Checked := false;
end;
procedure TForm1.Button1Сlick(Sender: TObject);
begin
Form1.Table1.Post;
end;
Все бы ничего, да только после того, как сохраняю запись в таблицу (Table1.Post), значение записывается, как True, хотя DBCheckBox2 не отмечен птичкой.
Почему не меняется статус на False?
Спасибо за ответ.
Германн (2007-12-24 03:25:00) [1]
> sniknik © (24.12.07 03:14) [10]
Булева переменная, Коль. Булева!
P.S.
Хм. Звучит почти как в первой части "операции "Ы"" звучало "Надо,Федя! Надо!
:)))
sniknik (2007-12-24 03:14:00) [2]> что такое isInHndlCng
буленовская переменная для сигнализации, что клик от юзеровсих действий (клавиши, мыш), а не при считывании значения из базы.
(имхо, очевидно из "как и где" она инициируется)
Германн (2007-12-24 03:10:00) [3]
> azl © (24.12.07 02:18) [8]
>
>
> В примере приведенном sniknik, я не понял, что такое isInHndlCng.
> Программа ругается, мол, нет такой переменной.
>
Это плохо, что не понял.
azl (2007-12-24 02:18:00) [4]
> Германн © (24.12.07 01:59) [7]
Полностью согласен.
Я заменил в своей программе DBCheckBox на CheckBox.
В примере приведенном sniknik, я не понял, что такое isInHndlCng. Программа ругается, мол, нет такой переменной.
Германн (2007-12-24 01:59:00) [5]
> azl © (24.12.07 01:48) [6]
>
>
И с теми и с другими. Но я имел в виду не TCheckBox компонент как таковой, а CheckBox'ы встроенные в другие компоненты.
azl (2007-12-24 01:48:00) [6]
> Германн © (24.12.07 01:43) [5]
С CheckBox'ами или DBCheckBox'ами?
Германн (2007-12-24 01:43:00) [7]
> Я не думал, что все так не просто.
Имхо с CheckBox'ами многое не просто. Где бы они ни были.
azl (2007-12-24 01:20:00) [8]
> sniknik © (24.12.07 00:23) [2]
Спасибо огромное за подсказку.
> Германн © (24.12.07 00:59) [3]
Да, наверное, так и сделаю. Меньше возьни будет, чем с DBCheckBox. Я не думал, что все так не просто.
Германн (2007-12-24 00:59:00) [9]Может вообще лучше обойтись простыми CheckBox'ами?
sniknik (2007-12-24 00:23:00) [10]... причем там еще нужно отслеживать произошло изменение пользователем или это из данных значение считалось при переходе между записями например...
(onClick это общее событие)
проще всего конечно и менять в данных, датасете на бефорепост например, но и так как у тебя можно, несколько коряво правда (может можно и лучше но...)
так, примерно...
procedure TForm1.DBCheckBox1Click(Sender: TObject);
begin
if isInHndlCng then
if DBCheckBox1.Checked then begin
Table1.Edit;
Table1.FieldByName('FldOnDBCheckBox2').asBoolean:= false;
end;
end;
procedure TForm1.DBCheckBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
isInHndlCng:= Key = 32;
end;
procedure TForm1.DBCheckBox1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
isInHndlCng:= false;
end;
procedure TForm1.DBCheckBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
isInHndlCng:= true;
end;
procedure TForm1.DBCheckBox1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
isInHndlCng:= false;
end;
sniknik (2007-12-24 00:14:00) [11]менять надо не в компоненте отображения а в данных...