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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по DBGrid-у.Помогите пожалуйста. DBGrid........... 
:(
    Опции темы
x77
Дата 16.9.2003, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



письмо ушло. в проекте есть недоделки: не освобождается список закладок и пр., но сам функционал у меня (Delphi5/WinXP PRO) работает.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
x77
Дата 16.9.2003, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



заголовок можно нарисовать любой в BeforePrint или вообще задать статически в design-time. а строка за строкой - за это, как раз, и отвечает OnNeedData.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
BGladiator
Дата 16.9.2003, 15:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо огромное. Проект получил сейчас буду разбираться.
  Вверх
BGladiator
Дата 16.9.2003, 17:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А что значит в строчке QRLabel1.Caption := Table1Common_Name.AsString
Common_Name.
И можно ли QRLabel1 присваивать не всю строку таблицы а какое-то поле таблицы.

  Вверх
x77
Дата 16.9.2003, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 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 из текущей записи таблицы.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Unregistered
Дата 16.9.2003, 18:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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 // &#237;&#243;, &#224; &#229;&#241;&#235;&#232; &#237;&#229;&#242; - &#242;&#238; &#226; &#239;&#243;&#242;&#252;
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
Дата 16.9.2003, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

procedure TLineData.aPrintExecute(Sender: TObject);
Var
pr:TrepLineData2;
begin
pr := nil;
pr:=TrepLineData2.Create(nil);
pr.Preview;
end;


я думаю, глюк здесь. попробуй пока не создавать новый экземпляр отчёта. просто делай:
RepLineData2.Preview;


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
x77
Дата 16.9.2003, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



т.е. подразумевается, что оба юнита создаются автоматически, чтово втором юните в секции интерфейса добавлена переменная var RepLineData2: TRepLineData2, а в первом юните ты просто вызываешь её на просмотр.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Unregistered
Дата 16.9.2003, 18:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
Дата 16.9.2003, 18:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Короче, только что поставил Breakpoint на начало процедуры TrepLineData2.NeedData.
До неё вообще не доходит управление.
Точно также как и до TrepLineData2.BeforePrint.
Обрабатываются какие стандартные библиотеки, типа RXCtrls, ToolsEdit, DBGrid
и т. д. и на этом ВСЁ !



  Вверх
x77
Дата 16.9.2003, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



TrepLineData2 - это так называемый class reference, т.е. говоря попросту - тип. ты пытаешься вызвать не метод переменной, а метод типа этой переменной. и компилятор вежливо намекает, что это возможно только в случае наличия методов класса (которых у тебя нет, ибо они нахрен не нужны). посмотри на код модуля, который ты опубликовал:

Цитата

...
 
  CurrentIndex : integer;
  public

end;

var
  repLineData2: TrepLineData2; // вот твоя переменная !

implementation
uses fLineData;
{$R *.DFM}

...


repLineData2 объявлена во втором модуле, и доступна в модуле 1. т.е. ты пишешь не TrepLineData2.Preview, а repLineData2.Preview; и всё будет работать.

а в случае с pr конечно нифига не происходит smile.gif


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
BGladiator
Дата 16.9.2003, 18:30 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Написал repLineData2.Preview; всё компилится, но при нажатии ПЕЧАТЬ выдаётся таже лобуда Exception EAccessViolation in module ..... at 0012ECAC.
  Вверх
x77
Дата 16.9.2003, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



если можешь, намыль мне исходники.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
x77
Дата 16.9.2003, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



не пойму, что это:
Цитата

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;


у тебя во втором модуле нет ни одной формы, объявлен один компонент. это дельфя такой код сгенерила?? должно быть

Код

...
 TfLineData2 = class (TForm)
   QuickRep1: TQuickRep;
...


или что-то типа.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
BGLadiator
Дата 16.9.2003, 18:42 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Весь проект довольно большой, но эти два основных юнита вышлю, давай адресс.
И ещё не может ли это быть из-за того что Delphi у меня версии 4. И ещё я подключаюсь к БД Oracle а сам источник (dbGIS) создаётся динамически в программе.
  Вверх
Страницы: (4) Все 1 2 [3] 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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