AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Treeview zur Laufzeit auf einem Panel erzeugen
Thema durchsuchen
Ansicht
Themen-Optionen

Treeview zur Laufzeit auf einem Panel erzeugen

Ein Thema von Zerolith · begonnen am 6. Jun 2005 · letzter Beitrag vom 6. Jun 2005
Antwort Antwort
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#1

Treeview zur Laufzeit auf einem Panel erzeugen

  Alt 6. Jun 2005, 18:57
Morgen!

verkopf mich jetzt schon seit 3 Stunden damit. Wenn ich das Treeview direkt auf dem Formular erzeuge gehts - aber auf dem Panel nicht. Kann mir jemand helfen?

Delphi-Quellcode:
Unit Unit1;

Interface

Uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls;

Type myPanel = Class(TPanel)
  PRIVATE
    FTreeView: TTreeView;
  PUBLIC
    Constructor Create(AOwner: TComponent); OVERRIDE;
  End;

Type
  TForm1 = Class(TForm)
    Procedure FormCreate(Sender: TObject);
  PRIVATE
    FMyPanel: myPanel;
  PUBLIC

  End;

Var
  Form1: TForm1;

Implementation

{$R *.dfm}

Procedure TForm1.FormCreate(Sender: TObject);
Begin
  FMyPanel := myPanel.Create(Self);
End;

{ myPanel }

Constructor myPanel.Create(AOwner: TComponent);
Begin
  Inherited;
  FTreeView := TTreeView.Create(Self);
  FTreeView.Parent := Self;
  FTreeView.Align := alClient;
  FTreeView.Items.AddNode(Nil, Nil, 'test', Nil, naAdd);
End;

End.
DAnke, Daniel
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Treeview zur Laufzeit auf einem Panel erzeugen

  Alt 6. Jun 2005, 18:59
Delphi-Quellcode:
Constructor myPanel.Create(AOwner: TComponent);
Begin
  Inherited;
  FTreeView := TTreeView.Create(AOwner); //Hier ändern
  FTreeView.Parent := Self;
  FTreeView.Align := alClient;
  FTreeView.Items.AddNode(Nil, Nil, 'test', Nil, naAdd);
End;
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Treeview zur Laufzeit auf einem Panel erzeugen

  Alt 6. Jun 2005, 19:20
klappt leider nicht - hab i au scho probiert
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Treeview zur Laufzeit auf einem Panel erzeugen

  Alt 6. Jun 2005, 19:43
das klappt schon, nur siehst du davon nix weil du deinem panel (FMyPanel) im Create deines Forms keinen Parent zuordnest. Damit liegt zwar das Tree auf dem Panel aber das Panel nicht auf dem Form...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: Treeview zur Laufzeit auf einem Panel erzeugen

  Alt 6. Jun 2005, 20:02
Zitat von Kroko1999:
FTreeView := TTreeView.Create(AOwner); //Hier ändern
Nicht unbedingt. Wenn ich will, dass die TreeView beim Zerstoeren des Owners des Panels zerstoert wird, dann lasse ich AOwner drin. Der Owner einer Komponente hat nichts mit dem Parent zu tun. Owner bestimmt nur, ob beim Zerstoeren einer bestimmten Komponente (also dem Owner) auch die eigene Komponente zerstoert werden soll. Der Parent bestimmt hingegen, auf welchem Control die Komponente gezeichnet wird.
Setze also den Parent des Panels auf Form1, und das Panel wird auf dem Form liegen. Nun das Panel als Parent der Treeview angeben, und die TV wird auf dem Panel gezeichnet werden

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Treeview zur Laufzeit auf einem Panel erzeugen

  Alt 6. Jun 2005, 20:32
hmm - also irgendwie hab ich immer noch den Fehler:

Zitat:
---------------------------
Project1
---------------------------
Element '' hat kein übergeordnetes Fenster.
---------------------------
OK
---------------------------
hab ich was von euch überlesen?

Delphi-Quellcode:
Unit Unit1;

Interface

Uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls;

Type myPanel = Class(TPanel)
  PRIVATE
    FTreeView: TTreeView;
  PUBLIC
    Constructor Create(AOwner: TComponent); OVERRIDE;
  End;

Type
  TForm1 = Class(TForm)
    Procedure FormCreate(Sender: TObject);
  PRIVATE
    FMyPanel: myPanel;
  PUBLIC

  End;

Var
  Form1: TForm1;

Implementation

{$R *.dfm}

Procedure TForm1.FormCreate(Sender: TObject);
Begin
  FMyPanel := myPanel.Create(Self);
  FMyPanel.Parent := Self;
End;

{ myPanel }

Constructor myPanel.Create(AOwner: TComponent);
Begin
  Inherited;
  FTreeView := TTreeView.Create(Self);
  FTreeView.Parent := Self;
  FTreeView.Align := alClient;
  FTreeView.Items.AddNode(Nil, Nil, 'test', Nil, naAdd);
End;

End.
Daniel
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Treeview zur Laufzeit auf einem Panel erzeugen

  Alt 6. Jun 2005, 20:51
Moin Daniel,

Du darfst den Parent erst setzen, wenn das Panel erzeugt wurde.
Such' hier mal nach Hier im Forum suchenCreateWnd.
In dieser Methode sollte das gehen. Du musst es Dir allerdings am Besten so einbauen, dass diese Zuweisung nur einmal erfolgt. CreateWnd wird mehrfach aufgerufen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Treeview zur Laufzeit auf einem Panel erzeugen

  Alt 6. Jun 2005, 21:01
ok - da muss man erst mal draufkommen...

habs jetzt etwas anders gelöst: eine weitere Procedure in MyPanel die das TreeView füllt - geht jetzt einwandfrei

Danke an alle
Daniel
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:14 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