Как сделать калькулятор в Delphi?

Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.

Как Delphi реализует многоплатформенную разработку?

Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...

Определение удаления записей в .DBF

Советы » DBASE и DBF » Определение удаления записей в .DBF

Взято из "Dtopics Database 1.10 from 3K computer Consultancy":

Dbase в BDE имеет большее количество ситуаций 'особого случая', чем таблицы SQL и Paradox, поскольку данный формат поддерживает выражения в индексах и прочие характеристики, например:

  1. Создание и пересоздание индекса
    DbiRegenIndexes( Table1.Handle ); { Регенерация всех индексов }
    создание индекса (зависит от того, существует ли выражение или нет)
    if

    (( Pos('(',cTagExp) + Pos('+',cTagExp) ) > 0 ) then

    Table1.AddIndex( cTagName, cTagExp, [ixExpression]) {<- ixExpression - _литерал_} else

    Table1.AddIndex( cTagName, cTagExp, []);

  2. Связки Master/Detail в выражениях дочерних индексов

    вызов процедуры BDE DbiLinkDetailToExp() вместо обычной DbiLinkDetail()

  3. Пакование таблиц
    with

    Table1 do

    StrPCopy( TName, TableName ); Result := DBIPackTable( DbHandle, Handle, TName, szDBASE, TRUE

    );

     

  4. Задание видимости удаленных записей - вкл/выкл (например, dBase SET DELETED ON/OFF)
    DbiSetProp( hDBIObj(Table1.Handle), curSOFTDELETEON, LongInt(bValue));

     

  5. Задание частичного/полного соответствия символов - вкл/выкл (например, dBase SET EXACT ON/OFF)
    DbiSetProp( hDBIObj(Table1.Handle), curINEXACTON,   LongInt(bValue));

Ну и теперь сами вопросы:

Как мне увидеть записи dBASE, помеченные для удаления?"

В обработчике события AfterOpen вызовите приведенную ниже функцию. Включите DBITYPES, DBIERRS, DBIPROCS в список используемых модулей. Для вызова функции передайте ей в качестве аргумента имя TTable и TRUE/FALSE в зависимости от необходимости показа/скрытия удаленных записей. Пример:

procedure

TForm1.Table1AfterOpen(DataSet: TDataset); begin

SetDelete(Table1, TRUE

); end

; procedure

SetDelete(oTable: TTable; Value: Boolean); var

rslt: DBIResult; szErrMsg: DBIMSG; begin

try

Table.DisableControls; try

rslt := DbiSetProp(hDBIObj(oTable.Handle), curSOFTDELETEON, LongInt(Value)); if

rslt <> DBIERR_NONE then

begin

DbiGetErrorString(rslt, szErrMsg); raise

Exception.Create(StrPas(szErrMsg)); end

; except

on

E: EDBEngineError do

ShowMessage(E.Message

); on

E: Exception do

ShowMessage(E.Message

); end

; finally

Table.Refresh; Table.EnableControls; end

; end

;

"Могу ли я создать в табличной сетке колонку, в которой будут показываться записи, помеченные для удаления из таблицы dBASE?"

Создайте вычисляемое поле, затем в обработчике события таблицы OnCalcField замените его таким образом:

procedure

TForm1.Table1CalcFields(DataSet: TDataset); var

RCProps : RecProps; Result : DBIResult; begin

Result := DbiGetRecord(Table1.Handle, dbiNo

Рукописи не горят...

Другое по теме:

Категории

Статьи

Советы

Copyright © 2024 - All Rights Reserved - www.delphirus.com