Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: Вопросы новичка  (Read 51532 times)

leoneii

  • Newbie
  • *
  • Posts: 8
    • View Profile
Re: Вопросы новичка
« Reply #375 on: January 28, 2021, 04:13:52 PM »
leoneii, Ну как то так :)

Попробую завтра, спасибо))

leoneii

  • Newbie
  • *
  • Posts: 8
    • View Profile
Re: Вопросы новичка
« Reply #376 on: January 29, 2021, 11:21:01 AM »
не получилос(((
« Last Edit: January 29, 2021, 11:23:23 AM by leoneii »

leoneii

  • Newbie
  • *
  • Posts: 8
    • View Profile
Re: Вопросы новичка
« Reply #377 on: January 29, 2021, 11:29:24 AM »
Ааааа, все, простите, я тупой, датасорс не выбрал новый, все заработало

leoneii

  • Newbie
  • *
  • Posts: 8
    • View Profile
Re: Вопросы новичка
« Reply #378 on: January 30, 2021, 01:25:11 PM »
Воть ;)

leoneii

  • Newbie
  • *
  • Posts: 8
    • View Profile
Re: Вопросы новичка
« Reply #379 on: February 10, 2021, 02:07:20 PM »
А чтож, здрасте, есть готовая функция суммы прописью?

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 921
    • View Profile
Re: Вопросы новичка
« Reply #380 on: February 10, 2021, 08:08:15 PM »
В интернете полно :) Можно javascript пихнуть
Вот например
Code: [Select]
num2str = (function (){var money;
var price;
var rub, kop;
var litera = sotny = desatky = edinicy = minus = "";
var k = 0, i, j;
N = ["", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять",
    "", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать",
    "", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто",
    "", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот",
    "тысяч", "тысяча", "тысячи", "тысячи", "тысячи", "тысяч", "тысяч", "тысяч", "тысяч", "тысяч",
    "миллионов", "миллион", "миллиона", "миллиона", "миллиона", "миллионов", "миллионов", "миллионов", "миллионов", "миллионов",
    "миллиардов", "миллиард", "миллиарда", "миллиарда", "миллиарда", "миллиардов", "миллиардов", "миллиардов", "миллиардов", "миллиардов"];
var M = new Array(10);
for (j = 0; j < 10; ++j)
    M[j] = new Array(N.length);
for (i = 0; i < N.length; i++)
    for (j = 0; j < 10; j++)
        M[j][i] = N[k++]
var R = new Array("рублей", "рубль", "рубля", "рубля", "рубля", "рублей", "рублей", "рублей", "рублей", "рублей");
var K = new Array("копеек", "копейка", "копейки", "копейки", "копейки", "копеек", "копеек", "копеек", "копеек", "копеек");
function num2str(money) {
    if (typeof money == "number") {money = money.toString();}
    rub = "", kop = "";
    money = money.replace(",", ".");
    if (isNaN(money)) {
        return "Не числовое значение";
    }
    if (money.substr(0, 1) == "-") {
        money = money.substr(1);
        minus = "минус "
    }
    else minus = "";
    money = Math.round(money * 100) / 100 + "";
    if (money.indexOf(".") != -1) {
        rub = money.substr(0, money.indexOf("."));
        kop = money.substr(money.indexOf(".") + 1);
        if (kop.length == 1) kop += "0";
    }
    else rub = money;
    if (rub.length > 12) {
        return "Слишком большое число";
    }
    ru = propis(price = rub, R);
    ko = propis(price = kop, K);
    ko != "" ? res = ru + " " + ko : res = ru;
    ru == "Ноль " + R[0] && ko != "" ? res = ko : 0;
    kop == 0 ? res += " ноль " + K[0] : 0;
    return (minus + res).substr(0, 1).toUpperCase() + (minus + res).substr(1);
}
function propis(price, D) {
    litera = "";
    for (i = 0; i < price.length; i += 3) {
        sotny = desatky = edinicy = "";
        if (n(i + 2, 2) > 10 && n(i + 2, 2) < 20) {
            edinicy = " " + M[n(i + 1, 1)][1] + " " + M[0][i / 3 + 3];
            i == 0 ? edinicy += D[0] : 0;
        }
        else {
            edinicy = M[n(i + 1, 1)][0];
            (edinicy == "один" && (i == 3 || D == K)) ? edinicy = "одна" : 0;
            (edinicy == "два" && (i == 3 || D == K)) ? edinicy = "две" : 0;
            i == 0 && edinicy != "" ? 0 : edinicy += " " + M[n(i + 1, 1)][i / 3 + 3];
            edinicy == " " ? edinicy = "" : (edinicy == " " + M[n(i + 1, 1)][i / 3 + 3]) ? 0 : edinicy = " " + edinicy;
            i == 0 ? edinicy += " " + D[n(i + 1, 1)] : 0;
            (desatky = M[n(i + 2, 1)][2]) != "" ? desatky = " " + desatky : 0;
        }
        (sotny = M[n(i + 3, 1)][3]) != "" ? sotny = " " + sotny : 0;
        if (price.substr(price.length - i - 3, 3) == "000" && edinicy == " " + M[0][i / 3 + 3]) edinicy = "";
        litera = sotny + desatky + edinicy + litera;
    }
    if (litera == " " + R[0]) return "ноль" + litera;
    else return litera.substr(1);
}
function n(start, len) {
    if (start > price.length) return 0;
    else return Number(price.substr(price.length - start, len));
}
return num2str;
})()
« Last Edit: February 10, 2021, 08:46:44 PM by Arin Alex »

leoneii

  • Newbie
  • *
  • Posts: 8
    • View Profile
Re: Вопросы новичка
« Reply #381 on: February 13, 2021, 11:42:05 AM »
Охох, спасибо! Я сначала в программулине написал класс, ну как написал, взял отсюда и переделал - http://www.prog.org.ru/topic_7629_0.html
А потом до меня дошло, что в программе нигде нету суммы! В смысле можно выполнить запрос, но зачем? И до меня дошло второй раз, что Alex выложил готовый скрипт для lreport)) Работает))

Ivan

  • Newbie
  • *
  • Posts: 2
    • View Profile
Re: Вопросы новичка
« Reply #382 on: August 13, 2021, 08:51:19 AM »
Эсть ли возможность создания отчета только программным путем? Без различных манипуляций с бэндами и размещением в ник соотвутствующих данных. Если есть готовые примеры изпользования LimeReport, прошу поделиьься пожалуйста.

Vermilion

  • Newbie
  • *
  • Posts: 25
    • View Profile
Re: Вопросы новичка
« Reply #383 on: August 26, 2021, 10:13:49 PM »
Доброе время суток!

Имеется отчет с данными и некоторым pagefooter, на котором
размещены некоторые текстовые поля и картинки. Высота pagefooter
стоит например 50 мм. У pagefooter установлен признак автоматической
высоты. Строим отчет, данные заполняют все свободное пространство
до pagefooter. Хотим начиная со второй страницы изменить размер pagefooter
например кодом в скрипте:

Reportpage1.beforeRender.connect(ReportPage1BeforeRender)
function ReportPage1BeforeRender(){
    if ( getVariable("#PAGE") != 1 ){ 
       Reportpage1_ShapeItem1.isVisible = false;
       Reportpage1_ImageItem62.isVisible = false;
       ReportPage1_PageFooter1.setItemHeight(0);
    } else {
       Reportpage1_ShapeItem1.isVisible = true;
       Reportpage1_ImageItem62.isVisible = true;
    }
}

В результате видим, что начиная со второй страницы pagefooter стал невидимый,
но данные, которые выводятся на второй странице и далее заполняют не все свободное
пространство, а то, что было доступно по высоте на первой странице.
Перепробовал разные варианты свойств и бэндов и элементов отчета, не получается
заставить данные использовать все освободившееся пространство на второй и далее
страницах.

Куда копать.. подскажите!

Заранее благодарен за советы.

Vermilion

  • Newbie
  • *
  • Posts: 25
    • View Profile
Re: Вопросы новичка
« Reply #384 on: August 27, 2021, 07:37:17 AM »
Так сказать вдогонку..

Печатать или не печатать нижний колонтитул не в этом вопрос, задача именно в изменении его размера на разных страницах,  в частности
на первой странице делаем его большим, а на остальных страницах делаем его меньше, главное чтобы вывод данных учитывал новый размер
нижнего колонтитула. Может есть какие то другие подходы в репортере, но я не нашел подходящего механизма.

« Last Edit: August 27, 2021, 09:41:08 AM by Vermilion »

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 921
    • View Profile
Re: Вопросы новичка
« Reply #385 on: August 29, 2021, 11:38:59 PM »
Vermilion, Приветствую.
Проверил ваш скрипт у себя. Вроде на первый взгляд работает как вы и хотите.   
На приложенном скрине видно, что на второй странице данные заняли больше места чем на первой
Quote
У pagefooter установлен признак автоматической высоты
Для футера не очень хорошо работает, дойдут руки уберу это свойство из футера :)   
« Last Edit: August 29, 2021, 11:43:00 PM by Arin Alex »

Vermilion

  • Newbie
  • *
  • Posts: 25
    • View Profile
Re: Вопросы новичка
« Reply #386 on: August 30, 2021, 09:36:39 AM »
Alex, Приветствую!

Я вот примерчик сделал, у меня не получается добиться такого же результата, как у вас.
Взял последнюю версию репортера, Qt 5.7.1x64

Пытался еще играться размером футора, но результат такой же..

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

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 921
    • View Profile
Re: Вопросы новичка
« Reply #387 on: August 30, 2021, 12:26:09 PM »
Vermilion, У вас ошибочка в скрипт закралась :)

Reportpage1.beforeRender.connect(ReportPage1BeforeRender)
function ReportPage1BeforeRender(){
    if ( getVariable("#PAGE") != 1 ){
       Reportpage1_ShapeItem1.isVisible = false;
       ReportPage1_PageFooter1.setItemHeight(1);
Должно быть
       Reportpage1_PageFooter1.setItemHeight(1)
    }
}

Если исправить будет вот так

Vermilion

  • Newbie
  • *
  • Posts: 25
    • View Profile
Re: Вопросы новичка
« Reply #388 on: August 30, 2021, 02:14:16 PM »
Alex, спасибо за подсказку, проглядел... Слишком понадеялся на автокод  :)
Буду дальше смотреть.
Спасибо за помощь.

yumb

  • Newbie
  • *
  • Posts: 2
    • View Profile
Re: Вопросы новичка
« Reply #389 on: September 21, 2021, 02:23:30 PM »
Добрый день!
Передаю в отчёт модель QTableWidget.Таблица на экран просмотра выводится.Теперь надо в одной колонке сделать шрифт жирным в зависимости от значения в другой колонке. Я так понимаю, значения являются текстовыми. Значит надо преобразовать в численные , сравнить и назначить шрифт в зависимости от результата сравнения.
Не подскажете как это сделать, либо где посмотреть пример?   
« Last Edit: September 21, 2021, 02:26:03 PM by yumb »