Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.230 Beiträge
 
Delphi 12 Athens
 
#13

Re: pointer auf TButton - verständtnis problem

  Alt 26. Feb 2009, 14:49
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat