Книги по Embarcadero RAD Studio (C++ Builder, Delphi)

Так я так и делал.
Вон оно чё:

И так на все…

все не надо!
frx28.bpl
frxDB28.bpl
по моему…(((

“Не найден указанный модуль” на все выбрасывает, что там в папке имеются…

Отбой!

Перекомпилировал и всё “взлетело” )))

1 лайк

Не понимаю, что я делаю не так…

Беру пример отсюда:

https://stackoverflow.com/questions/32295261/printing-listview-items-using-fastreport-in-delphi

При запуске отчета (ShowReport) получаю такую ошибку:

Отчет:

чутка позже гляну…

скинь проект, можешь в личку, часа через два буду за компом.

Отправил в личку.

ну во первых, в датасете поле то должно быть если ты его хочешь чекать потом

ну а дальше в отчете, в мемо тоже датасет надо не забывать

я честно, не понял, че ты хочешь сделать)

Хотел вывести на печать из StringGrid (давно это было, лет 18 назад - делал такое на свеженьком (только “из печи”) Delphi 2005 :slight_smile: ), но не смог вспомнить как “это делается” )))
Полез в интернет и там нашел этот пример:

Оказывается, в нем есть недосказанности )))

СПАСИБО БОЛЬШОЕ!

Странно, но выводит только первое значение. Почему?

ну так

или в коде

procedure TForm1.Button1Click(Sender: TObject);
var
  MD: TfrxMasterData;
begin

//  frxUserDataSet1.RangeEnd := reCount;
//  frxUserDataSet1.RangeEndCount := ListView1.Items.Count;

  MD := frxReport1.FindObject('MasterData1') AS TfrxMasterData;
  MD.RowCount := ListView1.Items.Count;

  frxReport1.ShowReport();
end;

я понял че ты хочешь…
но к сожалению, я тоже не понимаю, почему после этого

frxUserDataSet1.RangeEnd := reCount;
frxUserDataSet1.RangeEndCount := ListView1.Items.Count;

размер юзер датасета не 10(((

Спасибо за содействие. Не у компьютера сейчас, завтра буду мучать дальше. Теплится надежда найти те старые исходники (2005 года), может они прольют свет )))
Шанс маловероятен, но имеется )))

ЗЫ: Исходники Делфи 2005 в 11й версии откроются же?

Ну если ты сторонних компонент не натаскал туда, откроются, ненавижу дельфи за это…

В общем я разобрался с выводом на печать, но…
Застрял на “ровном месте”…
Вот так выводит всё, то есть вместе с нулевой строкой (заголовки столбцов, которые fixed):

procedure TForm2.frxReport1GetValue(const VarName: string; var Value: Variant);
begin
    if CompareText(VarName, 'element') = 0 then
        Value := StringGrid1.Cells[1, frxUserDataSet1.RecNo];

//  ShowMessage(IntToStr(frxUserDataSet1.RecNo))
end;

И если я делаю вот так (чтобы исключить нулевую строку из вывода):

procedure TForm2.frxReport1GetValue(const VarName: string; var Value: Variant);
begin
    if (CompareText(VarName, 'element') = 0) and (frxUserDataSet1.RecNo > 0) then
        Value := StringGrid1.Cells[1, frxUserDataSet1.RecNo];

//  ShowMessage(IntToStr(frxUserDataSet1.RecNo))
end;

То сразу валится с ошибкой - Не знаю мол что это за ‘element’ такой.
Почему? Как быть?

Как я сразу не сообразил - загадка )))
Перед печатью

frxUserDataSet1.RangeEndCount := StringGrid1.RowCount - 1;

А при печати уже:


procedure TForm2.frxReport1GetValue(const VarName: string; var Value: Variant);
begin
    if CompareText(VarName, 'element') = 0 then
        Value := StringGrid1.Cells[1, frxUserDataSet1.RecNo + 1];

//  ShowMessage(IntToStr(frxUserDataSet1.RecNo))
end;

Блин, всё гениальное просто ! ))))

1 лайк

@xDriver , а LiteDAC для Делфи случайно нигде не “завалялся”? :slight_smile:
На официальном сайте Access Denied, на торрентах что-то не нашлось (никто не пользуется разве? Или я искать разучился… Одно из трёх :smiley: ).

Или еще что имеется по современнее для SQLite3 ?

используй FireDAC, искаропки

Деда, спасибо!
:smiley: