Форум: "Начинающим";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];
Вниз
Статус DBCheckBox Найти похожие ветки
← →
azl © (2007-12-23 23:32) [0]Здравствуйте, уважаемые мастера.
Помогите разобраться.
На форме есть 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?
Спасибо за ответ.
← →
sniknik © (2007-12-24 00:14) [1]менять надо не в компоненте отображения а в данных...
← →
sniknik © (2007-12-24 00:23) [2]... причем там еще нужно отслеживать произошло изменение пользователем или это из данных значение считалось при переходе между записями например...
(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;
← →
Германн © (2007-12-24 00:59) [3]Может вообще лучше обойтись простыми CheckBox"ами?
← →
azl © (2007-12-24 01:20) [4]
> sniknik © (24.12.07 00:23) [2]
Спасибо огромное за подсказку.
> Германн © (24.12.07 00:59) [3]
Да, наверное, так и сделаю. Меньше возьни будет, чем с DBCheckBox. Я не думал, что все так не просто.
← →
Германн © (2007-12-24 01:43) [5]
> Я не думал, что все так не просто.
Имхо с CheckBox"ами многое не просто. Где бы они ни были.
← →
azl © (2007-12-24 01:48) [6]
> Германн © (24.12.07 01:43) [5]
С CheckBox"ами или DBCheckBox"ами?
← →
Германн © (2007-12-24 01:59) [7]
> azl © (24.12.07 01:48) [6]
>
>
И с теми и с другими. Но я имел в виду не TCheckBox компонент как таковой, а CheckBox"ы встроенные в другие компоненты.
← →
azl © (2007-12-24 02:18) [8]
> Германн © (24.12.07 01:59) [7]
Полностью согласен.
Я заменил в своей программе DBCheckBox на CheckBox.
В примере приведенном sniknik, я не понял, что такое isInHndlCng. Программа ругается, мол, нет такой переменной.
← →
Германн © (2007-12-24 03:10) [9]
> azl © (24.12.07 02:18) [8]
>
>
> В примере приведенном sniknik, я не понял, что такое isInHndlCng.
> Программа ругается, мол, нет такой переменной.
>
Это плохо, что не понял.
← →
sniknik © (2007-12-24 03:14) [10]> что такое isInHndlCng
буленовская переменная для сигнализации, что клик от юзеровсих действий (клавиши, мыш), а не при считывании значения из базы.
(имхо, очевидно из "как и где" она инициируется)
← →
Германн © (2007-12-24 03:25) [11]
> sniknik © (24.12.07 03:14) [10]
Булева переменная, Коль. Булева!
P.S.
Хм. Звучит почти как в первой части "операции "Ы"" звучало "Надо,Федя! Надо!
:)))
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.01.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c