![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
письмо ушло. в проекте есть недоделки: не освобождается список закладок и пр., но сам функционал у меня (Delphi5/WinXP PRO) работает.
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
заголовок можно нарисовать любой в BeforePrint или вообще задать статически в design-time. а строка за строкой - за это, как раз, и отвечает OnNeedData.
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| BGladiator |
|
|||
|
Unregistered |
Спасибо огромное. Проект получил сейчас буду разбираться.
|
|||
|
||||
| BGladiator |
|
|||
|
Unregistered |
А что значит в строчке QRLabel1.Caption := Table1Common_Name.AsString
Common_Name. И можно ли QRLabel1 присваивать не всю строку таблицы а какое-то поле таблицы. |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
я цеплялся к таблице biolife.db из алиаса DBDemos. в этой таблице есть строковое поле Common_Name. на форму я повесил TTable, в которой все поля объявил статически. они получили название вида <TableName><FieldName>, т.е. в данном случае Table1Common_Name: TStringField. в результате появилась возможность работать с каждым полем, как с самостоятельным объектом (что далеко не всегда полезно, но это - дебри). и я так с ним и работаю. вместо Table1Common_Name.AsString я мог бы написать Table1 ['CommonName'].AsString, или Table1.FindField ('Common_Name').AsString или Table1.FieldByName ('Common_Name').AsString или Table1.Fields [N].AsString, где N - порядковый номер нужного поля в свойстве Fields. всё это абсолютно однохренственно. и строчкой QRLabel1.Caption := Table1Common_Name.AsString я как раз и присваиваю значение конкретного, статически объявленного, поля Common_Name из текущей записи таблицы.
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
Всё сделал так как у тебя единственно что с Preview немного изменил :
procedure TLineData.aPrintExecute(Sender: TObject); Var pr:TrepLineData2; begin pr := nil; pr:=TrepLineData2.Create(nil); pr.Preview; end; -- Полностью второй мой Unit где содержится мой QuickReports -- unit frepLinedata2; interface uses Windows, SysUtils, Messages, Classes, Graphics, Controls, StdCtrls, ExtCtrls, Forms, Quickrpt, QRCtrls; type TrepLineData2 = class(TQuickRep) QRBand1: TQRBand; QRLabel2: TQRLabel; QRSysData1: TQRSysData; QRExpr5: TQRExpr; DetailBand1: TQRBand; ChildBand1: TQRChildBand; SummaryBand1: TQRBand; QRLabel1: TQRLabel; QRExpr6: TQRExpr; QRLabel3: TQRLabel; QRLabel4: TQRLabel; QRLabel5: TQRLabel; QRLabel6: TQRLabel; procedure BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); procedure NeedData(Sender: TObject; var MoreData: Boolean); private CurrentIndex : integer; public end; var repLineData2: TrepLineData2; implementation uses fLineData; {$R *.DFM} procedure TrepLineData2.BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); begin CurrentIndex := 0; end; procedure TrepLineData2.NeedData(Sender: TObject; var MoreData: Boolean); begin with fLineData.LineData do begin if CurrentIndex >= GRD.SelectedRows.Count then begin MoreData := FALSE; end else begin // íó, à åñëè íåò - òî â ïóòü PrintTable.GotoBookmark (pointer(GRD.SelectedRows.Items[CurrentIndex])); QRLabel3.Caption := PrintTable.FindField('TEL_NUMBER').AsString; Inc (CurrentIndex); MoreData := TRUE; end; end; end; end. После нажатия кнопки ПЕЧАТЬ программа выдаёт ошибку: Exception EAccessViolation in module ..... at 0012ECAC Не знаешь в чём тут дело? |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
я думаю, глюк здесь. попробуй пока не создавать новый экземпляр отчёта. просто делай: RepLineData2.Preview; -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
т.е. подразумевается, что оба юнита создаются автоматически, чтово втором юните в секции интерфейса добавлена переменная var RepLineData2: TRepLineData2, а в первом юните ты просто вызываешь её на просмотр.
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
Если просто пишу TrepLineData2.Preview; или имя_формы.TrepLineData2.Preview;
начинает ругться компилятор [Error] fLineData.pas(437): This form of method call only allowed for class methods [Fatal Error] GTelecom.dpr(98): Could not compile used unit 'fLineData.pas' Если же пишу Var pr:TrepLineData2; begin pr.Preview; end; то всё компилируется, но при нажатии на кнопке печать ничего не происходит. |
|||
|
||||
| BGladiator |
|
|||
|
Unregistered |
Короче, только что поставил Breakpoint на начало процедуры TrepLineData2.NeedData.
До неё вообще не доходит управление. Точно также как и до TrepLineData2.BeforePrint. Обрабатываются какие стандартные библиотеки, типа RXCtrls, ToolsEdit, DBGrid и т. д. и на этом ВСЁ ! |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
TrepLineData2 - это так называемый class reference, т.е. говоря попросту - тип. ты пытаешься вызвать не метод переменной, а метод типа этой переменной. и компилятор вежливо намекает, что это возможно только в случае наличия методов класса (которых у тебя нет, ибо они нахрен не нужны). посмотри на код модуля, который ты опубликовал:
repLineData2 объявлена во втором модуле, и доступна в модуле 1. т.е. ты пишешь не TrepLineData2.Preview, а repLineData2.Preview; и всё будет работать. а в случае с pr конечно нифига не происходит -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| BGladiator |
|
|||
|
Unregistered |
Написал repLineData2.Preview; всё компилится, но при нажатии ПЕЧАТЬ выдаётся таже лобуда Exception EAccessViolation in module ..... at 0012ECAC.
|
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
если можешь, намыль мне исходники.
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| x77 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
не пойму, что это:
у тебя во втором модуле нет ни одной формы, объявлен один компонент. это дельфя такой код сгенерила?? должно быть
или что-то типа. -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
||||
|
|||||
| BGLadiator |
|
|||
|
Unregistered |
Весь проект довольно большой, но эти два основных юнита вышлю, давай адресс.
И ещё не может ли это быть из-за того что Delphi у меня версии 4. И ещё я подключаюсь к БД Oracle а сам источник (dbGIS) создаётся динамически в программе. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |