Как показывать checkbox в DBGrid. Все что в интернете нашел основывается на том что поле таблицы boolean, а у меня char? для которого 0-false, а 1-екгу. Поле типа boolean не может быть, т.к. использую InterBase/ Как быть?
Привет, PSVlab!
Вы пишешь 27 июня 2007:
P> Как показывать checkbox в DBGrid. Все что в интернете нашел P> основывается на том что поле таблицы boolean, а у меня char? P> для которого 0-false, а 1-екгу. P> Поле типа boolean не может быть, т.к. использую InterBase
У InterBase уже давно есть нативный boolean,
равно как и его поддержка в Delphi.
Здравствуйте, PSVlab, Вы писали:
PSV>Как показывать checkbox в DBGrid. Все что в интернете нашел основывается на том что поле таблицы boolean, а у меня char? для которого 0-false, а 1-екгу. Поле типа boolean не может быть, т.к. использую InterBase/ Как быть?
Стрелятся, больше ничего.
А еще попробуй открутится от boolean. БЛИН КАКАЯ РАЗНИЦА.
Стырять алгоритм можеш, а разобраться как он работает руки не доходят?
Включай думалку или спрашивай более конкретно с кусками кода.
const IsChecked : array[Boolean] of Integer =
(DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
var
DrawState: Integer;
DrawRect: TRect;
begin
if (gdFocused in State) then
begin
if (Column.Field.FieldName = DBCheckBox1.DataField) then
begin
DBCheckBox1.Left := Rect.Left + DBGrid1.Left + 2;
DBCheckBox1.Top := Rect.Top + DBGrid1.top + 2;
DBCheckBox1.Width := Rect.Right — Rect.Left;
DBCheckBox1.Height := Rect.Bottom — Rect.Top;
DBCheckBox1.Visible := True;
end
end
else
begin
if (Column.Field.FieldName = DBCheckBox1.DataField) then
begin
DrawRect:=Rect;
InflateRect(DrawRect,-1,-1);
procedure TForm1.DBGrid1ColExit(Sender: TObject);
begin
if DBGrid1.SelectedField.FieldName = DBCheckBox1.DataField then
DBCheckBox1.Visible := False
end;
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (key = Chr(9)) then Exit;
if (DBGrid1.SelectedField.FieldName = DBCheckBox1.DataField) then
begin
DBCheckBox1.SetFocus;
SendMessage(DBCheckBox1.Handle, WM_Char, word(Key), 0);
end;
end;
procedure TForm1.DBCheckBox1Click(Sender: TObject);
begin
if DBCheckBox1.Checked then
DBCheckBox1.Caption := DBCheckBox1.ValueChecked
else
DBCheckBox1.Caption := DBCheckBox1.ValueUnChecked;
end;
Привет, PSVlab!
Вы пишешь 27 июня 2007:
AC>> У InterBase уже давно есть нативный boolean, AC>> равно как и его поддержка в Delphi.
P> и как создать его? P> alter table Project1 ADD BoolField ???
P> что в ??? написать?
Здравствуйте, PSVlab, Вы писали:
PSV>Как показывать checkbox в DBGrid. Все что в интернете нашел основывается на том что поле таблицы boolean, а у меня char? для которого 0-false, а 1-екгу. Поле типа boolean не может быть, т.к. использую InterBase/ Как быть?
Используй EhDBGrid. Он сам чекбоксы вставляет, если поле char(y/n) или int(1/0)
Да я в курсе. Просто топикстартер, как всегда, не токмо не читает документацию к используему инструменту, а еще и правила игнорирует, не указывая версию сервера. ну я и написал наиболее универсальное решение.
Здравствуйте, PSVlab, Вы писали:
PSV>Как показывать checkbox в DBGrid. Все что в интернете нашел основывается на том что поле таблицы boolean, а у меня char? для которого 0-false, а 1-екгу. Поле типа boolean не может быть, т.к. использую InterBase/ Как быть?
У меня возникла такая же проблема. В DBGrid не знаю, я использую DBGridEh. Там решается элементарно — задать для поля свойство Checkboxes — true и свойство KeyList — первая строка — '1', вторая — '0'.