unit Uprincipal;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, StdCtrls, Buttons, ComCtrls, Grids, DBGrids,BDE,DBITYPES,
DBIPROCS,DBIERRS;
type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
TProgressBar: TProgressBar;
TButton: TBitBtn;
TLabel: TLabel;
TQuery: TQuery;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
BitBtn1: TBitBtn;
TQuerySwitchboardID: TIntegerField;
TQueryItemNumber: TSmallintField;
TQueryItemText: TStringField;
TQueryCommand: TSmallintField;
TQueryArgument: TStringField;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure TButtonClick(Sender: TObject);
private
{ Private declarations }
FCBPROGRESSDesc: pCBPROGRESSDesc;
FProgressCallback: TBDECallback;
function GetDataCallback(CBInfo: Pointer): CBRType;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function TForm1.GetDataCallback(CBInfo: Pointer): CBRType;
begin
Result := cbrCONTINUE;
with pCBPROGRESSDesc(CBInfo)^ do
begin
if iPercentDone < 0 then
begin
TLabel.Caption := szMsg;
TLabel.Refresh;
TProgressBar.StepIt; {Apenas para ficar rodando o gauge}
end
else
TProgressBar.Position := iPercentDone;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FCBPROGRESSDesc := AllocMem(SizeOf(CBPROGRESSDesc));
FProgressCallback := TBDECallback.Create(Self, TQuery.Handle,
cbGENPROGRESS, FCBPROGRESSDesc, SizeOf(CBPROGRESSDesc),
GetDataCallback, True);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FProgressCallback.Free;
FreeMem(FCBPROGRESSDesc, SizeOf(CBPROGRESSDesc));
end;
procedure TForm1.TButtonClick(Sender: TObject);
begin
FCBPROGRESSDesc := AllocMem(SizeOf(CBPROGRESSDesc));
FProgressCallback := TBDECallback.Create(Self, TQuery.Handle,
cbGENPROGRESS, FCBPROGRESSDesc, SizeOf(CBPROGRESSDesc),
GetDataCallback, True);
TQuery.Active := True;
end;
end.