Hi Leute,
folgende Situation:
Ich habe eine eigenen Komponente (TCustomPanel) in einer ScrollBox platziert (Designzeit). Nun möchte ich zur Laufzeit diese in eine andere Scrollbox verschieben. Dazu hab ich der ScrollBox in die die Kompo soll ein Popup-Menü verpasst. Meine Kompo besitzt eine Eigenschaft Selected. Ist dies True (klappt), so möchte ich diese in die leere ScrollBox über dessen Popup verschieben. Den Code des Menü-Eintrages hier:
Delphi-Quellcode:
procedure TForm1.ausgewhltesElementhierherverschieben1Click(
Sender: TObject);
var Compo : TBaseSeyControl;
begin
// selektierte Kompo suchen
Compo := GetSelectedSeyControl(Application.MainForm);
IF Compo = nil then begin
MessageDlg('Keine selektierte Komponente gefunden!', mtInformation, [mbOK], 0);
Exit;
end else begin
// hier mal guggen
MessageDlg(Format('Komponente %s gefunden', [Compo.Name]), mtWarning, [mbOK], 0);
MessageDlg(Format('new Parent: %s', [PopupMenu2.PopupComponent.Name]), mtWarning, [mbOK], 0);
Compo.Owner.RemoveComponent(Compo);
PopupMenu2.PopupComponent.InsertComponent(Compo);
Compo.Parent := TWinControl(PopupMenu2.PopupComponent);
end;
end;
In der alten ScrollBox verschwindet die Kompo, taucht aber in der neuen nicht auf. Danach geht das Prog mit
Exception Lesen von null an einer völlig anderen Stelle ins aus. Über die beiden eingebundenen MsgDlg's prüfe ich hier schon, ob die richtige Kompo gefunden wurde und die Zielkompo stimmt. Alles i.O.
Der abgebildete Code wird auch ohne Fehler durchlaufen (Test mit Debugger).
Was mach ich falsch?
Gruß oki