Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как напечатать форму с полями из текстового файла 
:(
    Опции темы
Sliva
Дата 29.5.2009, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Привет! Помогите, пожалуйста, в моей проблеме! Есть текстовый файл вида: 
000:111:сумма:ФИО
Мне нужно распечатать каждого человека с выданной ему суммой, я пробовала использовать Quick report, но у меня не получается, потому что у меня получается "вытащить" qrStringsBand только одно текстовое поле  smile 
Код

 qrStrBand.Items.Clear;
 for i:=0 to kol-1 do
  begin
    qrStrBand.Items.add(FIO[i]);
 end;
  fmUd.QuickRep1.Preview;

а с суммой не получается. Помогите, пожалуйста или подскажите лучший вариант  smile 
Очень надеюсь на вашу помощь!
PM   Вверх
Alkash
Дата 29.5.2009, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет



qrStrBand  - это что?


--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
Sliva
Дата 29.5.2009, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Цитата(Alkash @ 29.5.2009,  17:18)
qrStrBand  - это что?

это компонент  TQRStringsBand в Quick report для текстовых записей
PM   Вверх
Sliva
Дата 29.5.2009, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Делаю теперь так: 
Код

// при вызове события OnPreview
    SomeList := TStringlist.Create;
    for i := 0 to kol-1 do
    SomeList.Add(tempSum[i]);
   CurrentIndex:=0;

 fmUd.qrStringsBand.Items.Clear;
 for i:=0 to kol-1 do
  begin
    fmUd.qrStringsBand.Items.add(FIo);
 end;
  fmUd.QuickRep1.Preview;
// на форме с печатью вызываю OnNeedData
procedure TfmUd.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
begin
 if CurrentIndex<SomeList.Count then moredata:=true else moredata:=false; 
   if MoreData then
  begin
    QRNNN.Caption := SomeList[CurrentIndex];
 SomeList.Count;
  end ;
  Inc(CurrentIndex);
end;
 
Но ПЕЧАТАЕТ только первую сумму :( помогите, пожалуйста! В чем моя ошибка????? 
PM   Вверх
Keeper89
Дата 29.5.2009, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



QuickRep1NeedData вызывается один раз?


--------------------
PM MAIL WWW   Вверх
Sliva
Дата 29.5.2009, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Да, один раз, причем ошибка вот в чем. Получается в отчете: 
Иванов И.И. 1000
ПетровП.П. 1000
Сидоров С.С. 1000
....
Иванов И.И. 2000
ПетровП.П. 2000
Сидоров С.С. 2000
...
Иванов И.И. 3000
ПетровП.П. 3000
Сидоров С.С. 3000? 
а должно быть: 
Иванов И.И. 1000
ПетровП.П. 2000
Сидоров С.С. 3000

OnneedData вызываю 1 раз уже после OnPreview. Мне кажется, что где-то здесь и ошибка.


PM   Вверх
Keeper89
Дата 29.5.2009, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



А если переписать так:
Код

procedure TfmUd.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
var
  i: Integer;
begin
  for i := 1 to SomeList.Count do
    QRNNN.Caption := SomeList[i-1]; 
end;

Насколько я вижу что-то заполняется еще в Preview, а потом вызывается еще раз.

З.Ы. Дополните фрагмент кода. чтобы он был относительно самостоятельным. Например что такое kol?
Плюс объясните вкратце что делает каждая процедура, потому что мне кажется у вас идет дублирование вывода.

Это сообщение отредактировал(а) Keeper89 - 29.5.2009, 22:18


--------------------
PM MAIL WWW   Вверх
Sliva
Дата 29.5.2009, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Цитата(Keeper89 @ 29.5.2009,  22:08)
А если переписать так:
Код

procedure TfmUd.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
var
  i: Integer;
begin
  for i := 1 to SomeList.Count do
    QRNNN.Caption := SomeList[i-1]; 
end;


Если так переписать, то весь список с фамилиями будет выведен 1 раз, но сумма у каждого будет стоять последняя :( 

В Preview заполняются фамилии, а kol - количество всех людей. 

Код

procedure Tfm.PrevClick(Sender: TObject); // перед просмотрем печати
var i: integer;
begin
   SomeList := TStringlist.Create;
    for i := 0 to kol-1 do
    SomeList.Add(tempSum[i]); // заполняю суммами 
   CurrentIndex:=0;

 fmUd.qrStringsBand.Items.Clear;
 for i:=0 to kol-1 do
  begin
    fmUd.qrStringsBand.Items.add(FIO); // вывожу ФИО на Quick report
 end;
  fmUd.QuickRep1.Preview;
end;


Ну а на форме с самим отчетом стоит только: 
Код

procedure TfmUd.QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
begin
 if CurrentIndex<SomeList.Count then moredata:=true else moredata:=false; 
   if MoreData then
  begin
    QRNNN.Caption := SomeList[CurrentIndex];
 SomeList.Count;
  end ;
  Inc(CurrentIndex);
end;



Мне тоже кажется, что здесь дублирование, но я не пойму - где :( 
Помогите, пожалуйста! 


Это сообщение отредактировал(а) Rrader - 30.5.2009, 12:50
PM   Вверх
Keeper89
Дата 29.5.2009, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



А зачем нужна строка
Код

SomeList.Count;

в QuickRep1NeedData?

Я бы переписал так: (попробуйте)
Код

procedure TfrmNeedData.QuickRep1NeedData(Sender: TObject;
  var MoreData: Boolean);
begin
  MoreData := (CurrentIndex < SomeList.Count); 
  if MoreData then
    QRNNN.Caption := SomeList[CurrentIndex]; 
  else
    SomeList.Free;  
  Inc(CurrentIndex);
end; 


Это сообщение отредактировал(а) Keeper89 - 29.5.2009, 23:58


--------------------
PM MAIL WWW   Вверх
Sliva
Дата 30.5.2009, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Я попробовала, результат такой же  smile  
Может быть, я не в том месте заполняю фамилии и это надо делать не в Preview? Я пробовала заполнять фамилии в событии OnNeedData, но снова получилось неправильно. 
Помогите, пожалуйста!  smile  smile  smile 
PM   Вверх
Akella
Дата 30.5.2009, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Возьми какой нибудь MemDataSet. Загрузи в него всё, и подключи к отчёту.
PM MAIL   Вверх
Sliva
Дата 30.5.2009, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Я ни разу не использовала этот компонент (MemDataSet) :( На какой вкладке он находится и есть ли там стандартные методы загрузки - типа LoadFromFile?
PM   Вверх
Keeper89
Дата 30.5.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Проект прикрепить можете?

Это сообщение отредактировал(а) Keeper89 - 30.5.2009, 12:56


--------------------
PM MAIL WWW   Вверх
Sliva
Дата 30.5.2009, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Прикрепила smile 

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  proj.rar 709,01 Kb
PM   Вверх
Sliva
Дата 30.5.2009, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



А это пример файла из которого я беру фио и суммы

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  __________________.txt 0,56 Kb
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0947 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.