» » » Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001


Авторские права

Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001

Здесь можно скачать бесплатно "Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001
Рейтинг:
Название:
Советы по Delphi. Версия 1.4.3 от 1.1.2001
Издательство:
неизвестно
Год:
неизвестен
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Советы по Delphi. Версия 1.4.3 от 1.1.2001"

Описание и краткое содержание "Советы по Delphi. Версия 1.4.3 от 1.1.2001" читать бесплатно онлайн.



…начиная с 1001. Смотрите другие файлы…






   TFloatField(Fields[1]).DisplayFormat := '##.0%';

   { Создаем вычисляемое TField, назначаем свойства, и добавляем поле к массиву определений MyTable. }

   TaxAmount := TFloatField.Create(MyTable);

   with TaxAmount do

   begin

FieldName := 'TaxAmount';

    Calculated := True;

    Currency := True;

    DataSet := MyTable;

    Name := MyTable.Name + FieldName;

    MyTable.FieldDefs.Add(Name, ftFloat, 0, false);

   end;

  end;

  { Создаем в базе данных новую таблицу, используя в качестве основы MyTable. }

  MyTable.CreateTable;

 end;

 { Создаем компонент TDataSourceи назначаем его MyTable. }

 MyDataSource := TDataSource.Create(Self);

 MyDataSource.DataSet := MyTable;

 { Создаем табличную сетку, отображаемна форме, и назначаем MyDataSource дляполучения доступа к данным из MyTable. }

 MyGrid := TDBGrid.Create(Self);

 with MyGrid do

 begin

  Parent := Self;

  Align := alClient;

  DataSource := MyDataSource;

 end;

 { Запускаем нашу конструкцию! }

 MyTable.Active := True;

 Caption := 'Новая таблица ' + MyTable.TableName;

end;

Ниже приведен полный исходный код проекта:

unit gridcalc;


interface


uses

 Windows, Messages, SysUtils, Classes, Graphics, Controls,Forms, Dialogs, Grids, DBGrids, ExtCtrls, DBCtrls, DB,DBTables, StdCtrls;


type

 TForm1 = class(TForm)

  procedure FormCreate(Sender: TObject);

  procedure TaxAmountCalc(DataSet: TDataset);

 private

TaxAmount: TFloatField;

 end;


var

 Form1: TForm1;


implementation


{$R *.DFM}


procedure TForm1.TaxAmountCalc(DataSet: TDataset);

begin

 Dataset['TaxAmount'] := Dataset['ItemsTotal'] *(Dataset['TaxRate'] / 100);

end;


procedure TForm1.FormCreate(Sender: TObject);

var

 MyTable: TTable;

 MyDataSource: TDataSource;

 MyGrid: TDBGrid;

begin

 MyTable := TTable.Create(Self);

 with MyTable do

 begin

  DatabaseName := 'DBDemos';

  TableName := 'Test.DB';

  OnCalcFields := TaxAmountCalc;

  with FieldDefs do

  begin

   Add('ItemsTotal', ftCurrency, 0, false);

   FieldDefs[0].CreateField(MyTable);

   Add('TaxRate', ftFloat, 0, false);

   FieldDefs[1].CreateField(MyTable);

   TFloatField(Fields[1]).DisplayFormat := '##.0%';

   TaxAmount := TFloatField.Create(MyTable);

   with TaxAmount do

   begin

    FieldName := 'TaxAmount';

    Calculated := True;

    Currency := True;

    DataSet := MyTable;

    Name := MyTable.Name + FieldName;

    MyTable.FieldDefs.Add(Name, ftFloat, 0, false);

   end;

  end;

  MyTable.CreateTable;

 end;

 MyDataSource := TDataSource.Create(Self);

 MyDataSource.DataSet := MyTable;

 MyGrid := TDBGrid.Create(Self);

 with MyGrid do

 begin

Parent := Self;

  Align := alClient;

  DataSource := MyDataSource;

 end;

 MyTable.Active := True;

 Caption := 'Новая таблица ' + MyTable.TableName;

end;


end

Проблема с AddIndex

Delphi 1 

Я использую таблицу paradox на своей локальной машине.

Я использую следующие команды: 

Table.DatabaseName := 'ABC';

Table.TableName := 'TEST';

Table.CreateTable;

Table.AddIndex('Primary','ID',[ixPrimary]); (работает как часы)

Table.AddIndex('Number_IDX','NUMBER',[ixUnique]); (здесь я получаю ошибку времени выполнения)

ID – LongInt поле

NUMBER – поле типа char[15] 

Как создать БД в кодировке CP1251?

Nomadic отвечает:

Вот такая конструкция проходит на DB2 2.1.2/NT и UDB5/NT…

CREATE DATABASE Efes2

USING CODESET 1251 TERRITORY RU

COLLATE USING IDENTITY; 

Таблицы в памяти

Delphi 1 

Вот пример InMemoryTable. Свободен для использования, модификации и всего остального. Ну и как в отношении других вещей: я не даю никаких гарантий. Я не несу никакой ответственности за ущерб, который может причинить код. Позвольте, я повторю это:

ВНИМАНИЕ! ДАННЫЙ КОД НЕ ПРЕДУСМАТРИВАЕТ НИКАКИХ ГАРАНТИЙ!

ИСПОЛЬЗУЙТЕ ЕГО НА СВОЙ СТРАХ И РИСК - ВЫ ЕДИНСТВЕННЫЙ ЧЕЛОВЕК, ОТВЕТСТВЕННЫЙ ЗА ЛЮБОЙ УЩЕРБ, КОТОРЫЙ МОЖЕТ ПОВЛЕЧЬ ЗА СОБОЙ ИСПОЛЬЗОВАНИЕ ДАННОГО КОДА — Я ВАС ПРЕДУПРЕДИЛ!

Благодарю Steve Garland <[email protected]> за предоставленную помощь. Он создал свой собственный "in-memory" табличный компонент, который послужил мне толчком для написания сего кода.

InMemory-таблицы являются характеристикой Borland Database Engine (BDE). InMemory-таблицы создаются в RAM и удаляются при их закрытии. Работают они значительно быстрее и очень полезны в случае, если вам нужны быстрые операции в небольших таблицах. Данный пример использует вызов функции BDE DbiCreateInMemoryTable. Данный объект должен работать наподобии простой регулярной таблицы, за исключением того, что InMemory-таблицы не поддерживают некоторые характеристики (типа проверка целостности, вторичные индексы и BLOB-поля), и в настоящее время данный код не содержит механизма обработки ошибок. Вероятно, вы получите ошибку при попытке создания memo-поля. Если у вас есть любые замечания, шлите их по адресу [email protected].

unit Inmem;


interface


uses DBTables, WinTypes, WinProcs, DBITypes, DBIProcs, DB, SysUtils;


type TInMemoryTable = class(TTable)

private

hCursor: hDBICur;

 procedure EncodeFieldDesc(var FieldDesc: FLDDesc; const Name: string; DataType: TFieldType; Size: Word);

 function CreateHandle: HDBICur; override;

public

 procedure CreateTable;

end;


implementation


{ Эта функция виртуальная, так что я смог перекрыть ее. В оригинальном VCL-коде для TTable эта функция реально открывает таблицу, но, поскольку мы уже имеем дескриптор таблицы, то мы просто возвращаем его }


function TInMemoryTable.CreateHandle;

begin

 Result := hCursor;

end;


{ Эта функция получена ее простым копированием из исходного кода VCL. Я должен был это сделать, поскольку это было объявлено в секции private компонента TTable, поэтому отсюда у меня не было к этому досупа. }

procedure TInMemoryTable.EncodeFieldDesc(var FieldDesc: FLDDesc; const Name: string; DataType: TFieldType; Size: Word);

const

 TypeMap: array[TFieldType] of Byte = (fldUNKNOWN, fldZSTRING, fldINT16, fldINT32, fldUINT16, fldBOOL,fldFLOAT, fldFLOAT, fldBCD, fldDATE, fldTIME, fldTIMESTAMP, fldBYTES,fldVARBYTES, fldBLOB, fldBLOB, fldBLOB);

begin

 with FieldDesc do

 begin

AnsiToNative(Locale, Name, szName, SizeOf(szName) - 1);

  iFldType := TypeMap[DataType];

  case DataType of

ftString, ftBytes, ftVarBytes, ftBlob, ftMemo, ftGraphic:

   iUnits1 := Size;

  ftBCD:

   begin

iUnits1 := 32;

    iUnits2 := Size;

   end;

  end;

  case DataType of

ftCurrency: iSubType := fldstMONEY;

  ftBlob: iSubType := fldstBINARY;

  ftMemo: iSubType := fldstMEMO;

  ftGraphic: iSubType := fldstGRAPHIC;

  end;

 end;

end;


{ Вот кухня, где все это происходит. Я скопировал эту функцию из исходников VCL и затем изменил ее для использования DbiCreateInMemoryTable вместо DbiCreateTable. Поскольку InMemory-таблицы не поддерживают индексы, я удалил весь соответствующий код. }

procedure TInMemoryTable.CreateTable;

var

 I: Integer;

 pFieldDesc: pFLDDesc;

 szTblName: DBITBLNAME;

 iFields: Word;

 Dogs: pfldDesc;

begin

 CheckInactive;

 if FieldDefs.Count = 0 then for I := 0 to FieldCount - 1 do with Fields[I] do if not Calculated then FieldDefs.Add(FieldName, DataType, Size, Required);

 pFieldDesc := nil;

 SetDBFlag(dbfTable, True);

 try

  AnsiToNative(Locale, TableName, szTblName, SizeOf(szTblName) - 1);

  iFields := FieldDefs.Count;

  pFieldDesc := AllocMem(iFields * SizeOf(FLDDesc));

  for I := 0 to FieldDefs.Count - 1 do with FieldDefs[I] do


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Советы по Delphi. Версия 1.4.3 от 1.1.2001"

Книги похожие на "Советы по Delphi. Версия 1.4.3 от 1.1.2001" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Валентин Озеров

Валентин Озеров - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Валентин Озеров - Советы по Delphi. Версия 1.4.3 от 1.1.2001"

Отзывы читателей о книге "Советы по Delphi. Версия 1.4.3 от 1.1.2001", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.