1 (edited by NickB 2022-08-01 12:03:08)

Topic: Вывод на печать CheckBox

Добрый день, подскажите пожалуйста, как сделать чтоб при выборе CheckBox он отображался в отчете (печать) не словами "да" или "нет", а как на форме стик (V) в квадратике, либо закрашенный небольшой квадрат или прямоугольник ?

написал небольшой скрипт в отчете, но при проверке выбираешь CheckBox или не выбираешь CheckBox показывает постоянно залитый черным

Заранее благодарен !

2 (edited by sparrow 2022-08-01 12:59:46)

Re: Вывод на печать CheckBox

SQL поддерживает только вывод символов и не может вывести графику.
Вы можете попробовать использовать конструкцию


CASE WHEN поле THEN CHAR( ) ELSE CHAR( ) END


где поле - ваше булево поле (0/1) (false/true) из таблицы
а
CHAR( ) - (код символа)
вот например CHAR(9632) и CHAR(9633) - черный и белый квадратики.

Нужно проверять поддерживает ли версия MVD и как будет выглядеть. Я проверил Репорт хорошо принимает на экране.
Код символа который вы найдете для себя в таблице символов. Символ V или квадрата или что либо друое.


Эту конструкцию лучше всего оформить в качестве вычислительного поля. Если в скрипте запрос то SELECT ... , CASE WHEN поле THEN CHAR( ) ELSE CHAR( ) END as имя, ...

Re: Вывод на печать CheckBox

ок, спасибо большое !

Re: Вывод на печать CheckBox

вот

Post's attachments

Attachment icon yes-no.jpg 4.75 kb, 73 downloads since 2022-08-01 

5 (edited by Destiny 2022-08-01 13:31:24)

Re: Вывод на печать CheckBox

Calculated field labeled "names"
(case
when Noms = 1 then '✓' else ''
end)

Destiny

Re: Вывод на печать CheckBox

Ok, большое спасибо.
Ok, Thanks a lot of

Re: Вывод на печать CheckBox

Теоретически можно еще хранить два небольших изображения в базе.
Передавать их в Репорт и отображать.

Re: Вывод на печать CheckBox

Ok, большое спасибо.
Ok, Thanks a lot of

Re: Вывод на печать CheckBox

Hi NickB, Sparrow, Destiny,
В сетку таблиц можно добавлять графические столбцы, однако часто требуется увеличить высоту строки сетки таблиц, чтобы иметь возможность точно видеть, что представляет собой изображение.
Это также означает написание нескольких строк сценария, что не всем удобно делать.
Прилагаются два разных подхода;
1. Tickgraphics1 прост, использует вычисляемое поле для хранения графика «тик», просто переносит его в отчет и помещает в объект «флажок».
2. Tickgraphics2 создает графическую колонку с помощью скрипта, а затем циклически перемещает сетку таблицы, помещая изображение в соответствующие строки. Затем в отчете объект-картинка (то самое изображение) размещается на странице и с помощью небольшого скрипта FastReport определяется, отображать изображение или нет.
Или, возможно, вы могли бы смешивать и сочетать два подхода!
С уважением,
Derek.
.
It is possible to add graphics columns to a tablegrid - however, you often need to increase the row height of the tablegrid to be able to see exactly what the image represents.
It also means writing a few lines of script which may not be something that everyone is comfortable doing.
Attached are two different approaches;
1.  Tickgraphics1 is straightforward, using a calculated field to hold a 'tick' graphic and simply carrying that through to the report and placing it in a 'checkbox' object.
2.  Tickgraphics2 creates a graphics column using a script and then cycles through the tablegrid putting an image against the appropriate rows.  Then in the report, a picture object (the same image) is placed on the page and a small FastReport script is used to determine whether to display the image or not.
Or perhaps you could mix and match the two approaches!

Post's attachments

Attachment icon tick graphics.zip 699.19 kb, 217 downloads since 2022-08-01 

Re: Вывод на печать CheckBox

Дерек, ваши рекомендации и советы очень полезные и простые, огромное спасибо!
Derek, your recommendations and tips are very useful and simple, thank you so much!

Re: Вывод на печать CheckBox

Добрый день, подскажите пожайлуста, как сделать так чтобы CheckBox в отчете (на печате) печатал не на русском нет или да, а на английском языке no или yes, попытался в самом отчете изметить в свойствах в Format Boolean в Format string указал No, Yes не сработало, сделал вот так через Edit, работает, но когда начал тестировать очень не удобно, чтобы появилось yes no надо  два раза нажимать (Click) на CheckBox, изначально все работало автоматически но на русском языке 

procedure Policy_CheckBox1_OnClick (Sender: TObject);
begin
  if policy.CheckBox1.Checked then
     policy.Edit47.Text:= 'yes'
     else
     policy.Edit47.Text:= 'no';
end;

Заранее благодарен!

12 (edited by sparrow 2022-08-10 18:48:56)

Re: Вывод на печать CheckBox

1 вариант.
В программе создать текстовое вычисляемое поле, например YesNo.

(CASE WHEN вашеполе=1 THEN 'Yes' ELSE 'No' END)

И выводить это вычисляемое поле YesNo в отчет вместо да/нет.


2 вариант для отчета
В отчете создать для вашего поля Memo в скрипте событие OnAfterData.
В скрипте в этом событии вписать

if <Report."test.bool"> = 'Да' then Memo.Text := 'Yes' else Memo.Text := 'No';

где test.bool - имя вашей таблицы и имя колонки.
Memo - имя вашего поля в отчете для вывода

13 (edited by NickB 2022-08-11 04:39:58)

Re: Вывод на печать CheckBox

Спасибо большое, попробую оба варианта
Thank you very much, I will try both options!

14 (edited by malitos 2023-05-08 02:04:22)

Re: Вывод на печать CheckBox

Уважаемые друзья помогите с решением задачи.. искал на форуме не смог найти решение...

У меня есть TableGrid. В нем нужно разместить слева checkbox. При нажатии на выбранные checkbox нам нужно кнопкой "EDIT ALL STATUS", далее выбором из combobox установить всем одинаковое значение. Чтобы у всех например был status 12

Post's attachments

Attachment icon Status.rar 292.87 kb, 100 downloads since 2023-05-08 

15 (edited by pavlenko.vladimir.v 2023-05-08 03:59:31)

Re: Вывод на печать CheckBox

http://myvisualdatabase.com/forum/misc.php?action=pun_attachment&amp;item=9422&amp;download=0

malitos wrote:

При нажатии на выбранные checkbox нам нужно кнопкой "EDIT ALL STATUS", далее выбором из combobox установить всем одинаковое значение. Чтобы у всех например был status 12

это непонятно

Post's attachments

Attachment icon 2023-05-08_06-57-17.png 92.03 kb, 45 downloads since 2023-05-08 

16 (edited by malitos 2023-05-08 07:04:37)

Re: Вывод на печать CheckBox

да понятно но не получается задать кнопки EDIT ALL STATUS действие чтоб она установила значение из combobox'a  - 12  для всех в таблице  у кого стоит галочка,  можно в форме frmEditAllStatus

17 (edited by pavlenko.vladimir.v 2023-05-08 08:05:16)

Re: Вывод на печать CheckBox

malitos wrote:

да понятно но не получается задать кнопки EDIT ALL STATUS действие чтоб она установила значение из combobox'a  - 12  для всех в таблице  у кого стоит галочка,  можно в форме frmEditAllStatus

мне не понято )), EDIT ALL STATUS имеет действие "Показать форму"
чекбокс может принимать значения - Boolean
куду помещается значение из combobox'a  или для чего оно нужно?

18 (edited by malitos 2023-05-08 08:22:52)

Re: Вывод на печать CheckBox

pavlenko.vladimir.v wrote:
malitos wrote:

да понятно но не получается задать кнопки EDIT ALL STATUS действие чтоб она установила значение из combobox'a  - 12  для всех в таблице  у кого стоит галочка,  можно в форме frmEditAllStatus

мне не понято )), EDIT ALL STATUS имеет действие "Показать форму"
чекбокс может принимать значения - Boolean
куду помещается значение из combobox'a  или для чего оно нужно?

\

кнопка EDIT ALL STATUS - открывает форму где я хотел бы поменять значение checkboxa. Если можно как то сделать не открывая другую форму ?

Значение combobox'a на главной форме - ищет в таблице, может есть возможность создать там же другой combobox - который будет менять всем выбранным записям через checkbox, одно значение comboboxa?

19 (edited by pavlenko.vladimir.v 2023-05-08 08:27:30)

Re: Вывод на печать CheckBox

malitos wrote:

кнопка EDIT ALL STATUS - открывает форму где я хотел бы поменять значение checkboxa. Если можно как то сделать не открывая другую форму ?

Значение чекбокса меняются без доп. формы, этот чек бокс не сохраняется в БД, он "виртуальный".
Может, вы хотите отобразить значения чек боксов в записях Вашей БД и после их менять в самой таблице?

Re: Вывод на печать CheckBox

совершенно верно. просто вот из тех четырех записей должно получиться так: мы выделяем checkbox'ом любые две записи и потом combobox'ом  записываем значение в БД. Возможно так осуществить>?

Re: Вывод на печать CheckBox

Когда их будет 100-200 проще выбрать в таблице галочками нужные записи которые необходимо присвоить combobox'ом нужное значение и соответственно записать их в Базу. А то в ручную нажимать каждую запись ну уж очень неудобно sad

Re: Вывод на печать CheckBox

malitos wrote:

совершенно верно. просто вот из тех четырех записей должно получиться так: мы выделяем checkbox'ом любые две записи и потом combobox'ом  записываем значение в БД. Возможно так осуществить>?

почему у Вас данный комбобокс участвует в поиске?
если комбобокс нужен для смены значения, то он не должен участвовать в поиске и на оборот

Re: Вывод на печать CheckBox

pavlenko.vladimir.v wrote:
malitos wrote:

совершенно верно. просто вот из тех четырех записей должно получиться так: мы выделяем checkbox'ом любые две записи и потом combobox'ом  записываем значение в БД. Возможно так осуществить>?

почему у Вас данный комбобокс участвует в поиске?
если комбобокс нужен для смены значения, то он не должен участвовать в поиске и на оборот

согласен с Вашем утверждением, можно сделать второй чтобы именно он менял значения. Я просто сделал чтобы отфильтровать.

Re: Вывод на печать CheckBox

Вот немного изменил посмотрите пожалуйста

Post's attachments

Attachment icon Status2.rar 292.85 kb, 107 downloads since 2023-05-08 

25 (edited by pavlenko.vladimir.v 2023-05-08 09:52:43)

Re: Вывод на печать CheckBox

procedure Form1_Button6_OnClick (Sender: TObject; var Cancel: boolean);
var
i:integer;
j: Boolean = False;
begin
  // проверяем имеются ли галочки
  for i:=0 to Form1.TableGrid1.RowCount -1 do
  begin
    if (Form1.TableGrid1.Cell[0,i].AsBoolean) then
    begin
    j := True;
    Break
    end;
  end;

  // если галочки есть начать перезапись значений
  if (j) then
  begin
    for i:=0 to Form1.TableGrid1.RowCount -1 do
    begin
      if (Form1.TableGrid1.Cell[0,i].AsBoolean) then
      begin
        SQLExecute('UPDATE b SET status1="'+Form1.Edit2.Text+'" WHERE id=' +IntTOStr(Form1.TableGrid1.Row[i].ID));
      end;
    end;
  UPDATEDATABASE('b');  //обновить таблицу
  Form1.TableGrid1.dbUpdate; // обновить грид
  end else ShowMessage('Выбирите запись');

end;
Post's attachments

Attachment icon Status.rar 5.52 kb, 112 downloads since 2023-05-08