AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zur Laufzeit erstellte Objekte übergeben.

Ein Thema von Chistian · begonnen am 12. Okt 2011 · letzter Beitrag vom 13. Okt 2011
Antwort Antwort
Seite 1 von 2  1 2      
Chistian

Registriert seit: 4. Nov 2003
Ort: Pfalz
10 Beiträge
 
Delphi XE2 Professional
 
#1

Zur Laufzeit erstellte Objekte übergeben.

  Alt 12. Okt 2011, 15:07
Delphi-Version: 5
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:
  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;
Wenn ich jetzt :

Delphi-Quellcode:
        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;
Wir nichts eingetragen beim Parent.

Kann ich die abgeleitete TScrollbox so nicht ansprechen?

Auch funtioniert: DragAcceptFiles(TcbFlowScrollBox(GlobalAktivFlow).Handle, true); nicht.

Gruß
Christian

Geändert von mkinzler (12. Okt 2011 um 16:49 Uhr) Grund: Delphi-Tags eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Zur Laufzeit erstellte Objekte übergeben.

  Alt 12. Okt 2011, 15:11
Kann es sein, dass GlobalAktivFlow nil ist?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Chistian

Registriert seit: 4. Nov 2003
Ort: Pfalz
10 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Zur Laufzeit erstellte Objekte übergeben.

  Alt 12. Okt 2011, 15:17
Nee, in GlobalActivFlow steht der Name der Scrollbox.

Gruß
Christian
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Zur Laufzeit erstellte Objekte übergeben.

  Alt 12. Okt 2011, 15:19
Trotzdem würde ich das mal überprüfen.
Delphi-Quellcode:
if Assigned(GlobalAktivFlow) then
  Parent := GlobalAktivFlow as TcbFlowScrollBox;
Wie ist es so? Springt der Debugger in die Zuweisungszeile, gibt es Fehler?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Chistian

Registriert seit: 4. Nov 2003
Ort: Pfalz
10 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Zur Laufzeit erstellte Objekte übergeben.

  Alt 12. Okt 2011, 15:24
Moment?!:

GlobalAktivflow ist ein Globale String Variable und enthält nur den Namen des Objektes.

Gruß
Christian
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Zur Laufzeit erstellte Objekte übergeben.

  Alt 12. Okt 2011, 15:26
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Chistian

Registriert seit: 4. Nov 2003
Ort: Pfalz
10 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Zur Laufzeit erstellte Objekte übergeben.

  Alt 12. Okt 2011, 15:59
Das funktioniert mit findcomponent, aber dumm sterben will ich natürlich nicht.

Wie funktioniert das mit der Instanz merken?

Gruß
Christian
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Zur Laufzeit erstellte Objekte übergeben.

  Alt 12. Okt 2011, 16:25
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:
var
  GlobalVar: TcbFlowScrollBox;

...

  GlobalVar := TcbFlowScrollBox.Create;
Anschließend kannst Du dann über die Variable auf die Instanz zugreifen.

[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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Chistian

Registriert seit: 4. Nov 2003
Ort: Pfalz
10 Beiträge
 
Delphi XE2 Professional
 
#9

AW: Zur Laufzeit erstellte Objekte übergeben.

  Alt 12. Okt 2011, 16:48
Das war vorher:

Delphi-Quellcode:
 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;
Aber wie hätte ich nun die richtige Instanz gefunden oder angesprochen?

Vielen Dank
Christian

Geändert von mkinzler (12. Okt 2011 um 16:50 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Zur Laufzeit erstellte Objekte übergeben.

  Alt 12. Okt 2011, 16:50
Könntest du bitte deinen Sourcecode in Zukunft per Code/delphi-Tag formatieren?
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz