AGB  ·  Datenschutz  ·  Impressum  







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

Eigene Komponente "verliert" Controls

Ein Thema von Leuselator · begonnen am 18. Mär 2003 · letzter Beitrag vom 18. Mär 2003
Antwort Antwort
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#1

Eigene Komponente "verliert" Controls

  Alt 18. Mär 2003, 11:10
Hi alle!

Habe Probleme mit selbstgebauten Komponenten.
Zum Beispiel TTestPanel mit darauf plaziertem Child-TPanel:
Plaziere ich zur Entwurfszeit ein (z.B.) TEdit auf dem TTestPanel so ist es zur Laufzeit sichtbar - plaziere ich das TEdit auf ChildPanel so "verschwindet" es zur Laufzeit im Nirvana.
Am Borland-Stand auf der C-Bit konnte man mir damit nicht helfen...


Delphi-Quellcode:
unit TestPanel;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls;

type
  TTestPanel = class(TPanel)
  private
    { Private-Deklarationen }
    ChildPanel : TPanel;
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); override;
    destructor destroy; override;
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation

constructor TTestPanel.Create(AOwner: TComponent);
begin
  inherited create(AOwner);
  width := 400;
  Height := 200;
  ChildPanel := TPanel.create(self);
  ChildPanel.Parent := self;
  ChildPanel.left := 5;
  ChildPanel.Top:=5;
  ChildPanel.Width := 190;
  ChildPanel.Height := 190;
  ChildPanel.Caption := 'Childpanel looses its controls';
end;

destructor TTestPanel.destroy;
begin
  ChildPanel.Free;
  inherited;
end;

procedure Register;
begin
  RegisterComponents('TestPanel', [TTestPanel]);
end;

end.
Tim Leuschner
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2
  Alt 18. Mär 2003, 13:16
Hallo,

womit bestätigt wäre, dass Borland Deutschland nur ein Verkaufsbüro ist.

Das Problem liegt meiner Ansicht nach daran, wer Parent von Deinem darauf plazierten TEdit ist. Die 'inherited' Komponente TPanel weiß nichts von Deinem Childpanel. Im Design-Modus scheint das noch klar zu gehen, während der Laufzeit werden die Komponenten vermutlich einfach in der verkehrten Reihenfolge gezeichnet, so dass TEdit unter Childpanel liegt. Du musst mal ein bißchen stöbern und die Methode heraussuchen, mit der Parent gesetzt wird. Die überschreibst Du und gibst Dein Childpanel als Parent an.

Ich hoffe, dass ich mit meiner Vermutung richtig liege. Falls es nicht klappt, dann melde Dich noch einmal, dann muss ich doch den Delphi-Compiler anwerfen.

Viele Grüße
Lutz
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#3
  Alt 18. Mär 2003, 13:29
@Leuselator: Sp trifft man sich wieder!

Nochmal meine Vermutung dazu (die ich auch schon im Delphi-Forum gepostet hab):
Zitat von Motzi:
Die Form die du zur Design-Time erstellst wird ja in der DFM-Datei gespeichert. In dieser DFM-Datei steht dann deine Form mit allen Eigenschaften und alle Komponenten, die auf deiner Form drauf sind (auch mit ihren Eigenschaften). Deine Komponente erzeugt jetzt noch eine Instanz einer Komponente, welche allerdings nur intern innerhalb deiner Komponente verwendet wird, und von Delphi daher nicht als solche erkannt und in der DFM-Datei gespeichert wird. Das Label allerdings müsste schon in die DFM-Datei kommen, aber da das Panel aus deiner Komponente nicht auftaucht weiß Delphi nicht wo es das Label in der DFM-Datei hinschreiben soll.
Wenn du mir dann noch die Frage "Willst du nur auf einem Panel Komponenten ablegen können oder auf beiden (also sowohl TestPanel als auch ChildPanel)?" (die ich auch schon im Delphi-Forum gepostet hab ) beantworten würdest, dann könnte ich dir möglicherweise helfen...
Manuel Pöter
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 18. Mär 2003, 13:34
Hinweis:
Zum ghleichen Thema gibt es schon im Delphi-Forum einmen Thread: http://www.delphi-forum.de/viewtopic.php?t=8743
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#5
  Alt 18. Mär 2003, 14:46
@Motzi: Sollte auf beidem möglich sein (Sorry - war AFK)

Den thread kenne ich - habe auch dort gepostet - hier der letzte post von mir:

Das Problem ist bei mir wohl das allgemeine Verständnis der Abspeicherung der zur Entwurfszeit auf einem Formular plazierten Komponenten und der Mechanismus deren Erzeugung zur Laufzeit.
Die Hilfe ist in diesem Bereich ein einziger weisser Fleck auf der Landkarte
Ich nahm bisher an, das dies die IDE erledigt (zeigt Sie die Sachen zur Entwurfszeit ja richtig an) und da ich von TPanel ableite dachte ich, die Mechanismen zur Speicherung würden auch für Kindelemente automatisch funzen. Geht aber wohl nicht so einfach.
Es muß doch irgendwie mit dem Formularstreaming zu tun haben - ich erzeuge zwar das Kindpanel "dynamisch" in der Komponente, aber die zur Entwurfszeit plazierten Controls sind eben nicht dynamisch. Irgendwie muß nach dem Create (Loaded?) eine Routine rein, die dafür sorgt, das die in der IDE plazierten Controls in das Child geladen werden. Dazu müssen sie aber zunext erstmal in die DFM wandern (?) und wie ich das machen soll (müßte ja von der IDE zur Entwurfs- bzw. Compilierzeit getan werden ?!) ist mir ein einziges Rätsel.
Schleppe das Prolem auch schon 2 Jahre mit mir rum...
Tim Leuschner
  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 11:22 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