![]() |
Delphi-Version: 5
Zur Laufzeit erstellte Objekte übergeben.
Hi,
ich hatte eine Form mit seiner Scrollbox auf der ich verschiedenste dinge machte. Um flexibler zu sein, sollen zur Laufzeit mehrere Scrollboxen erstellt werden können.
Delphi-Quellcode:
Wenn ich jetzt :
with TcbFlowScrollBox.Create(self) do
begin Name := GlobalAktivFlow; Parent := NewTabSheet; Align := alClient; PopupMenu := MainForm.FlowsPopupMenu; OnMouseDown := MainForm.scrollboxMousedown; OnMouseUp := MainForm.ScrollBoxMouseup; OnMouseMove := MainForm.ScrollBoxMouseMove; end;
Delphi-Quellcode:
Wir nichts eingetragen beim Parent.
with TcbBitmapShape.Create(self) do
begin Caption := TcbTextShape.Create(self); Caption.Text := MainForm.tempcaption; Caption.OnDblClick := CaptionDblClick; Caption.OnClick := CaptionClick; caption.Cursor := crHandPoint; Caption.Hint := 'Doppelklicken um zu ändern'; Images := MainForm.verzimagelist; ImageIndex := 3; MainForm.tempiconindex := 3; Typ := MainForm.temptyp; Top := Y; Left := X OnClick := ShapeClick; Cursor := crHandPoint; Parent := TcbFlowScrollBox(GlobalAktivFlow); <-- Problem hier AlignCaption(taCenter); MainForm.Objekteinlesen(cbShape.GetshapeCount); with TFldrControl.Create(self) do begin Name := 'notify'+ DataModul.objektdata.FieldByName('name').AsString ; Folder := MainForm.temppath; OnGetResult := DirNotifyonChange; Parent := TcbFlowScrollBox(GlobalAktivFlow); <-- Problem hier Active := False; end; end; Kann ich die abgeleitete TScrollbox so nicht ansprechen? Auch funtioniert:
Delphi-Quellcode:
nicht.
DragAcceptFiles(TcbFlowScrollBox(GlobalAktivFlow).Handle, true);
Gruß Christian |
AW: Zur Laufzeit erstellte Objekte übergeben.
Kann es sein, dass GlobalAktivFlow nil ist?
|
AW: Zur Laufzeit erstellte Objekte übergeben.
Nee, in GlobalActivFlow steht der Name der Scrollbox.
Gruß Christian |
AW: Zur Laufzeit erstellte Objekte übergeben.
Trotzdem würde ich das mal überprüfen.
Delphi-Quellcode:
Wie ist es so? Springt der Debugger in die Zuweisungszeile, gibt es Fehler?
if Assigned(GlobalAktivFlow) then
Parent := GlobalAktivFlow as TcbFlowScrollBox; |
AW: Zur Laufzeit erstellte Objekte übergeben.
Moment?!:
GlobalAktivflow ist ein Globale String Variable und enthält nur den Namen des Objektes. Gruß Christian |
AW: Zur Laufzeit erstellte Objekte übergeben.
Aha. Dann geht das so natürlich nicht. Du kannst das Ding aber z.B. mittels FindComponent suchen. Eleganter fände ich es aber, wenn Du Dir die Instanz selbst merkst und nicht nur den Namen.
|
AW: Zur Laufzeit erstellte Objekte übergeben.
Das funktioniert mit findcomponent, aber dumm sterben will ich natürlich nicht.
Wie funktioniert das mit der Instanz merken? Gruß Christian |
AW: Zur Laufzeit erstellte Objekte übergeben.
Du hast doch eine Variable GlobalAktivFlow vom Typ String. Nun kannst Du doch anstatt oder zusätzlich zu dieser eine Variable vom Typ TcbFlowScrollBox anlegen, die die Instanz direkt nach dem Erzeugen aufnimmt.
Delphi-Quellcode:
Anschließend kannst Du dann über die Variable auf die Instanz zugreifen.
var
GlobalVar: TcbFlowScrollBox; ... GlobalVar := TcbFlowScrollBox.Create; [edit] Ähnlich macht es ja auch Delphi selbst mit den Formular-Variablen. Statt einer globalen Variablen geht das natürlich auch mit einem Feld einer Klasse (z.B. des Hauptformulars). [/edit] |
AW: Zur Laufzeit erstellte Objekte übergeben.
Das war vorher:
Delphi-Quellcode:
Aber wie hätte ich nun die richtige Instanz gefunden oder angesprochen?
NewScrollBox : TAdvScrollBox; im Puplic
NewScrollbox := TAdvScrollBox.Create(self); NewScrollbox.Name := GlobalAktivFlow; NewScrollbox.Parent := NewTabSheet; NewScrollbox.Align := alClient; NewScrollbox.PopupMenu := FlowsPopupMenu; NewScrollbox.OnMouseDown := scrollboxMousedown; NewScrollbox.OnMouseUp := ScrollBoxMouseup; NewScrollbox.OnMouseMove := ScrollBoxMouseMove; Vielen Dank Christian |
AW: Zur Laufzeit erstellte Objekte übergeben.
Könntest du bitte deinen Sourcecode in Zukunft per Code/delphi-Tag formatieren?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz