checkbox в DBGrid
От: PSVlab  
Дата: 27.06.07 10:27
Оценка: -1
Как показывать checkbox в DBGrid. Все что в интернете нашел основывается на том что поле таблицы boolean, а у меня char? для которого 0-false, а 1-екгу. Поле типа boolean не может быть, т.к. использую InterBase/ Как быть?
Re: checkbox в DBGrid
От: Alex.Che  
Дата: 27.06.07 10:35
Оценка:
Привет, PSVlab!
Вы пишешь 27 июня 2007:

P> Как показывать checkbox в DBGrid. Все что в интернете нашел

P> основывается на том что поле таблицы boolean, а у меня char?
P> для которого 0-false, а 1-екгу.
P> Поле типа boolean не может быть, т.к. использую InterBase

У InterBase уже давно есть нативный boolean,
равно как и его поддержка в Delphi.

--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 2.1 beta
Re: checkbox в DBGrid
От: Danchik Украина  
Дата: 27.06.07 10:42
Оценка:
Здравствуйте, PSVlab, Вы писали:

PSV>Как показывать checkbox в DBGrid. Все что в интернете нашел основывается на том что поле таблицы boolean, а у меня char? для которого 0-false, а 1-екгу. Поле типа boolean не может быть, т.к. использую InterBase/ Как быть?


Стрелятся, больше ничего.
А еще попробуй открутится от boolean. БЛИН КАКАЯ РАЗНИЦА.
Стырять алгоритм можеш, а разобраться как он работает руки не доходят?

Включай думалку или спрашивай более конкретно с кусками кода.
Re[2]: checkbox в DBGrid
От: PSVlab  
Дата: 27.06.07 10:46
Оценка:
AC>У InterBase уже давно есть нативный boolean,
AC>равно как и его поддержка в Delphi.

и как создать его?
alter table Project1 ADD BoolField ???

что в ??? написать?
Re[2]: checkbox в DBGrid
От: PSVlab  
Дата: 27.06.07 10:50
Оценка:
D>А еще попробуй открутится от boolean. БЛИН КАКАЯ РАЗНИЦА.
мне надо чекбоксы вsdtcnb в гриде, а на тип полей забить. Без чекбоксов нельзя никак.


D>Включай думалку или спрашивай более конкретно с кусками кода.

Вот такой код нашел, но он не работает

procedure TForm1.FormCreate(Sender: TObject);
begin
DBCheckBox1.DataSource := DataSource1;
DBCheckBox1.DataField := 'Winner';
DBCheckBox1.Visible := False;
DBCheckBox1.Color := DBGrid1.Color;
DBCheckBox1.Caption := '';

//explained later in the article
DBCheckBox1.ValueChecked := 'Yes a Winner!';
DBCheckBox1.ValueUnChecked := 'Not this time.';
end;

procedure TForm1.DBGrid1DrawColumnCell(
Sender: TObject; const Rect: TRect; DataCol:
Integer; Column: TColumn; State: TGridDrawState);

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);

DrawState := ISChecked[Column.Field.AsBoolean];

DBGrid1.Canvas.FillRect(Rect);
DrawFrameControl(DBGrid1.Canvas.Handle, DrawRect,
DFC_BUTTON, DrawState);
end;
end;
end;


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;
Re[3]: checkbox в DBGrid
От: Alex.Che  
Дата: 27.06.07 10:52
Оценка:
Привет, PSVlab!
Вы пишешь 27 июня 2007:

AC>> У InterBase уже давно есть нативный boolean,

AC>> равно как и его поддержка в Delphi.

P> и как создать его?

P> alter table Project1 ADD BoolField ???

P> что в ??? написать?


Boolean, вестимо.

--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: checkbox в DBGrid
От: Danchik Украина  
Дата: 27.06.07 10:57
Оценка:
Здравствуйте, PSVlab, Вы писали:

[Skip]
PSV>Вот такой код нашел, но он не работает

[Skip] — научись делать форматирование. Внизу кнопочки такие

А че не работает то?
У DBCheckBox поставь нормальные ValueChecked и ValueUnChecked
Re[4]: checkbox в DBGrid
От: PSVlab  
Дата: 27.06.07 11:22
Оценка: -1
AC>Boolean, вестимо.

Пишу alter table Project1 add BoolField boolean;
говорит неправильная команда

Dynamic SQL Error
SQL error code = -607
Invalid command
Specified domain or source column does not exist
Statement: alter table Project1 add BoolField boolean
Re: checkbox в DBGrid
От: vvu07  
Дата: 27.06.07 11:24
Оценка:
Здравствуйте, PSVlab, Вы писали:

PSV>Как показывать checkbox в DBGrid. Все что в интернете нашел основывается на том что поле таблицы boolean, а у меня char? для которого 0-false, а 1-екгу. Поле типа boolean не может быть, т.к. использую InterBase/ Как быть?


Используй EhDBGrid. Он сам чекбоксы вставляет, если поле char(y/n) или int(1/0)
Re[5]: checkbox в DBGrid
От: LuciferArh Россия  
Дата: 27.06.07 11:56
Оценка:
Здравствуйте, PSVlab, Вы писали:

AC>>Boolean, вестимо.


PSV>Пишу alter table Project1 add BoolField boolean;

PSV>говорит неправильная команда

PSV>Dynamic SQL Error

PSV>SQL error code = -607
PSV>Invalid command
PSV>Specified domain or source column does not exist
PSV>Statement: alter table Project1 add BoolField boolean

И правильно пишет... Ты хоть документацию по серверу читал? Про поддерживаемые типы данных читал? А если б читал, то не задавал бы таких вопросов.
-- Сначала делаем так:
CREATE DOMAIN BOOLEAN AS INTEGER DEFAULT 0 CHECK (VALUE IN (0,1));

-- а уже потом 
alter table mytable add boolean_field boolean;


И будет тебе счастье.
... << RSDN@Home 1.2.0 alpha rev. 679>>
Re[6]: checkbox в DBGrid
От: Alex.Che  
Дата: 27.06.07 13:25
Оценка:
Привет, LuciferArh!
Вы пишешь 27 июня 2007:

[Sorry, skipped]
L> -- Сначала делаем так:
L> CREATE DOMAIN BOOLEAN AS INTEGER
L> DEFAULT 0 CHECK (VALUE IN (0,1));

Для IB7.Х сие не нужно.

--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 2.1 beta
Re[7]: checkbox в DBGrid
От: LuciferArh Россия  
Дата: 27.06.07 13:40
Оценка:
Здравствуйте, Alex.Che, Вы писали:


AC>Для IB7.Х сие не нужно.


Да я в курсе. Просто топикстартер, как всегда, не токмо не читает документацию к используему инструменту, а еще и правила игнорирует, не указывая версию сервера. ну я и написал наиболее универсальное решение.
... << RSDN@Home 1.2.0 alpha rev. 679>>
Re: checkbox в DBGrid
От: Ramsay  
Дата: 29.06.07 13:53
Оценка:
Здравствуйте, PSVlab, Вы писали:

PSV>Как показывать checkbox в DBGrid. Все что в интернете нашел основывается на том что поле таблицы boolean, а у меня char? для которого 0-false, а 1-екгу. Поле типа boolean не может быть, т.к. использую InterBase/ Как быть?


У меня возникла такая же проблема. В DBGrid не знаю, я использую DBGridEh. Там решается элементарно — задать для поля свойство Checkboxes — true и свойство KeyList — первая строка — '1', вторая — '0'.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.