Und gleich im Anschluß eine Antwort hierauf:
Zitat von
DGL-luke:
Delphi-Quellcode:
//globale vars
var currentbox:^TListBox;
procedure TForm1.LBbeforeMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
currentbox:=@sender;
end;
procedure TForm1.deleteClick(Sender: TObject);
begin
currentbox^.DeleteSelected;
end;
wieso wirft mir das ne
AV??
Ist doch klar: TListBox ist eine Klasse, also abgeleitet von TObject und damit von Borland soweit vereinfacht, dass Sender schon selbst ein Zeiger auf die Listbox ist. CurrentBox := @Sender setzt dann CurrentBox auf die Adresse des Zeigers, der auf die Listbox zeigt. Damit ist CurrentBox^.DeleteSelected Schwachsinn, denn eigentlich müsste es heissen (CurrentBox^)^.DeleteSelected.
Wie gesagt: Borland hat das alles vereinfacht (schon vor Jahren) und seitdem geht's so:
Delphi-Quellcode:
//globale vars
var currentbox: TListBox;
procedure TForm1.LBbeforeMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
currentbox := sender;
end;
procedure TForm1.deleteClick(Sender: TObject);
begin
currentbox.DeleteSelected;
end;