![]() ![]() ![]() ![]() ![]() ![]() ![]() |
||
BDE API Examples (DbiRegisterCallback)Registers a callback function for the client application.Example 1: Create a callback that handles the condition of a missing .MDX file for a dBASE file or a missing .CDX file for a FoxPro file://Function called by DbiRegisterCallBack
function myfunc(ecbType : CBType; iClientData : LongInt;
pCbInfo : pCBInputDesc): CBRType; stdcall;
const
READONLY = 'Read Only';
FAILOPEN = 'Fail Open'; //The default
OPENANDDETACH = 'Open and Detach';
var
counter : integer;
begin
case ecbtype of
cbINPUTREQ: //It's a callback of cbINPUTREQ type
if pcbInfo.eCbInputId = cbiMDXMIssing then
begin
{
//Simple loop to list all modes, could be used to give used
//to give a choice
for counter:= 0 to pcbInfo.iCount-1 do
showmessage(pcbInfo.acbEntry[counter].szKeyWord + #13 +
pcbInfo.acbEntry[counter].szHelp);
}
for counter:=0 to pcbInfo.iCount-1 do
if pcbInfo.acbEntry[counter].szKeyword = OPENANDDETACH then
begin
pcbInfo.iSelection:=counter+1;
pcbInfo.bSave := FALSE;
break;
end;
end
else //if
ShowMessage('Unexpected eCbInputId');
else //Case
ShowMessage('Unexpected ecbType')
end;
end;
//Register the callback and open the table
procedure TForm1.Button2Click(Sender: TObject);
var
cbinfo : CBInputDesc;
begin
session.open;
Check(DbiRegisterCallBack(
nil, //Cursor (Optional)
cbINPUTREQ, //Type of Callback
longint(0), //Pass-through client data
sizeof(CBInputDesc), //Callback buffer len
@cbinfo, //Pointer to callback function
@myfunc //Call back fn being registered
));
Table1.Open;
//Unregister the callback
Check(DbiRegisterCallBack(nil, cbINPUTREQ, 0, sizeof(CBInputDesc), nil , nil));
end;
Example 2: Register the cbTABLECHAGNED callback for notification when a Paradox table's data has changedThis example is too complicated to be shown here. A sample Delphi registration component with an example is available that will do all the registration work for you. Simply install the new TTable component (TRegisterTable in RegisterTable.pas) and compile the included project. This component will work with all table types, but will only use the callback with Paradox table types. | ||
|
DISCLAIMER: You have the right to use this technical information subject to the terms of the No-Nonsense License Statement that you received with the Borland product to which this information pertains. |
||
| Trademarks & Copyright © 1998 Borland International, Inc. | ||