Ja, das sind variablen.
Nachfolgend das gesamte Interface
Delphi-Quellcode:
type
TsqlData =
record
Data:
array of string;
end;
PsqlData = ^TsqlData;
//Das war ein versuch. Wird nicht benutzt
PmySQL = ^TmySQLe;
Pvst = ^TVirtualStringTree;
type
TeVCLqueryTable =
class
private
FVST:TVirtualStringTree;
FMySQL:TmySQLe;
FsearchMode:boolean;
FsearchString:
string;
//FsqlData:array of string;
procedure onGetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
var CellText:
string);
procedure onFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
procedure onBeforeCellPaint(Sender: TBaseVirtualTree;
TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex;
CellPaintMode: TVTCellPaintMode; CellRect: TRect;
var ContentRect: TRect);
public
constructor Create(
const VST:TVirtualStringTree;
const MySQL:TmySQLe);
destructor Destroy;
override;
function Query(
Query:
string):integer;
procedure FilterNodes(
const Text :
string);
end;
implementation
...
Nein, das wird nicht zweimal freigegeben.
Sieht so aus:
Delphi-Quellcode:
procedure TForm6.Button1Click(Sender: TObject);
var
table:TeVCLqueryTable;
begin
//VirtualStringTree1 liegt als Objekt zur Designzeit auf dem Form
//mysql ist eine Variable der Klasse TForm6 und wird zum Programmstart erstellt.
table := TeVCLqueryTable.create(VirtualStringTree1,
mysql);
table.Query('
SELECT * FROM rechnung');
table.Free;
end;
Mit .free gibts direkt eine
exception.
Ohne gibts keine und es funktioniert.
Auch bei mehrmaligem klicken.