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

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

Статус 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]

менять надо не в компоненте отображения а в данных...


Наверх

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