Jupp, so isses.
Du kannst (wenn du unbedingt willst) ein Objekt auch über einen Pointer ansprechen, aber dann mußt du auch einen Speicherplatz (für die Objekt-Variable) nutzen, welcher nicht gelöscht wird.
Delphi-Quellcode:
type
PEButton = ^TEButton;
Tabulator =
record
hwnd: THandle;
// contains handle of a window
P: PEButton;
// contains pointer of the tabulator button
end;
...
procedure TForm1.AddTab(
name:
String; hwnd: THandle; FormCount: Integer);
var
Current: Integer;
NewButton: PEButton;
begin
// increase pointer array
SetLength(Tabs, Length(Tabs) + 1);
Current := Length(Tabs)-1;
// create button, positionize button
New(NewButton);
NewButton := TEButton.Create(Form1);
NewButton.Parent := ToolBar1;
NewButton.OnClick := OnTabButtonClick;
Tabs[current].P := @NewButton;
Tabs[current].hwnd := hwnd;
end;
und Freigeben dann z.B. so:
Delphi-Quellcode:
Tabs[i].P^.Free;
Dispose(Tabs[i].P);
aber direkt über die Objektinstanz isses natürlich einfacher/schöner