Подсунуть Boolean-поле в TDBGrid
Модератор: kdv
Подсунуть Boolean-поле в TDBGrid
Привет.
Подскижите возможно ли, если да то как, обмануть TDBGrid- чтобы он поле integer отображал как boolean (checkbox-ом), нужно для:
SELECT * FROM PROCEDURE_NAME(:MAS_ID) - в процедуре беруться различные поля в том числе и boolean, но так как нельзя указывать домены, то использую INTEGER.
Подскижите возможно ли, если да то как, обмануть TDBGrid- чтобы он поле integer отображал как boolean (checkbox-ом), нужно для:
SELECT * FROM PROCEDURE_NAME(:MAS_ID) - в процедуре беруться различные поля в том числе и boolean, но так как нельзя указывать домены, то использую INTEGER.
Re: Подсунуть Boolean-поле в TDBGrid
А что мешает использовать BOOLEAN в качестве типа выходного параметра процедуры?PhAn писал(а):Привет.
Подскажите возможно ли, если да то как, обмануть TDBGrid- чтобы он поле integer отображал как boolean (checkbox-ом), нужно для:
SELECT * FROM PROCEDURE_NAME(:MAS_ID) - в процедуре беруться различные поля в том числе и boolean, но так как нельзя указывать домены, то использую INTEGER.
Он написал "в процедуре беруться различные поля в том числе и boolean" (я только не понял, зачем там упомянуты домены).kdv писал(а):boolean только в IB7.
и все таки, я так и не увидел аргументацию полезности boolean. Данный случай - не пример.
Насчет полезности... Ну нет у меня весомых аргументов.
Вообще жалко, что в IB нет однобайтовых типов данных. Дикость какая-то: передавать флаг из трех состояний в четырех байтах...
элементарно. Дикость это только если потрохов не знать.Дикость какая-то: передавать флаг из трех состояний в четырех байтах...
Во-первых, данные упаковываются. Если в integer хранится число 5, то оно и сохранится на диске с минимумом байт (по идее 1-2). Ключи - тем более упаковываются. Во-вторых, обработка чисел сейчас, на 32-разрядных процессорах, эффективна только как 32-битная. опять же integer. Даже smallint надо преобразовать к 4 байтам, вычислить, и вернуть в 2 байта обратно.
Отсюда следует - что ни в экономии никакого смысла нет, ибо итак все сэкономлено до упора, ни в скорости вычислений. 1-байтовые типы данных, возможно, были эффективны в ДОСе, на 16-разрядных процессорах...
Ну ежели с этой стороны подходить... Даже не знаю, что и сказать...kdv писал(а):элементарно. Дикость это только если потрохов не знать.Дикость какая-то: передавать флаг из трех состояний в четырех байтах...
Во-первых, данные упаковываются. Если в integer хранится число 5, то оно и сохранится на диске с минимумом байт (по идее 1-2). Ключи - тем более упаковываются. Во-вторых, обработка чисел сейчас, на 32-разрядных процессорах, эффективна только как 32-битная. опять же integer. Даже smallint надо преобразовать к 4 байтам, вычислить, и вернуть в 2 байта обратно.
Отсюда следует - что ни в экономии никакого смысла нет, ибо итак все сэкономлено до упора, ни в скорости вычислений. 1-байтовые типы данных, возможно, были эффективны в ДОСе, на 16-разрядных процессорах...
Хочется именно вернуть boolean-поле а домен подсунуть нельзя FB1.5.1December писал(а): (я только не понял, зачем там упомянуты домены).
С полезностью незнаю не в этом суть, хочется чтоб было удобнее - т.е. кликать на checkbox в табице, а не выбирать из да/нет или что еще хуже из true/false.kdv писал(а):boolean только в IB7.
и все таки, я так и не увидел аргументацию полезности boolean. Данный случай - не пример.
Проблемы визуализации продвинутые в Дао склонны решать на клиенте. Применительно к данному конкретному случаю, варианты, например:
1. Сделать себе MyCheckBox в котором завести проперти, указующие, при каком значении он должен принимать вид Checked, при каком UnChecked, при каком Grayed.
2. Если самому делать в падлу, найти такой готовый (а они есть).
3. Навесить на датасет калькулируемое boolean-поле и цеплять CheckBox к нему, прописав соответствующую обработку жмаканья.
1. Сделать себе MyCheckBox в котором завести проперти, указующие, при каком значении он должен принимать вид Checked, при каком UnChecked, при каком Grayed.
2. Если самому делать в падлу, найти такой готовый (а они есть).
3. Навесить на датасет калькулируемое boolean-поле и цеплять CheckBox к нему, прописав соответствующую обработку жмаканья.
Именно это и хочется, зря я замутил и про домены и про версию сервера, как говорил кто-то из умных - правильно сформулированный вопрос половина дела.Merlin писал(а):Проблемы визуализации продвинутые в Дао склонны решать на клиенте.
1. MyCheckBox - это здорово вот только как его в DBGrid всунуть.Merlin писал(а): Применительно к данному конкретному случаю, варианты, например:
1. Сделать себе MyCheckBox в котором завести проперти, указующие, при каком значении он должен принимать вид Checked, при каком UnChecked, при каком Grayed.
2. Если самому делать в падлу, найти такой готовый (а они есть).
3. Навесить на датасет калькулируемое boolean-поле и цеплять CheckBox к нему, прописав соответствующую обработку жмаканья.
2. Есть но они хотят получать boolean (я использую TJvDBGrid из JEDI-VCL).
3. Пожалуйста можно по подробнее данный вариант.