![]() |
Sonderbares verhalten von Align in eigener Komponente
Hallo,
ich habe mir untenstehende Komponente abgeleitet. Sie funktioniert auch wie sie soll. Nur zeigt sie zur Entwurfszeit ein sonderbares Verhalten:
Habe ich einen Fehler imn Code? Gruß Klaus.
Delphi-Quellcode:
type
TFileAuswahl = class(TCustomPanel) private { Private-Deklarationen } FShellTreeView : TShellTreeView; FSplitter : TSplitter; FPanelGrd, FPanelPath, FPanelBtn : TPanel; FBtnAlles, FBtnNichts, FBtnUmkehr : TButton; FGrdFiles : TFilterGrid; FGrdFilesOnClick : TNotifyEvent; FGrdFilesDblClick : TNotifyEvent; .... function Create_GrdFiles(aOwner: TWinControl): TFilterGrid; function Create_ShellTreeView(aOwner: TWinControl): TShellTreeView; function Create_Splitter(aOwner: TWinControl): TSplitter; function Create_PanelGrd(aOwner: TWinControl): TPanel; function Create_PanelPath(aOwner: TWinControl): TPanel; function Create_PanelBtn(aOwner: TWinControl): TPanel; function Create_Button(aOwner: TWinControl; mode: Integer): TButton; ...... protected { Protected-Deklarationen } public { Public-Deklarationen } constructor Create(AOwner: TComponent); override; destructor Destroy; override; published { Published-Deklarationen } // aus ExtCtrls: property Align; property AutoSize; property Anchors; property BevelEdges; property BevelInner; property BevelKind; property BevelOuter; property BevelWidth; property BorderWidth; property BorderStyle; property Constraints; property Ctl3D; property DoubleBuffered; property Enabled; property FullRepaint; property Visible; property ParentShowHint; property PopupMenu; property ShowHint; property TabOrder; property TabStop; property OnResize; // eigene: property Path: String read GetPath write SetPath; property Filename: String read GetFilename; ..... end; implementation constructor TFileAuswahl.Create(AOwner: TComponent); begin inherited Create(AOwner); Parent := AOwner as TWinControl; FShellTreeView := Create_ShellTreeView(Self); FSplitter := Create_Splitter(Self); FPanelGrd := Create_PanelGrd(Self); FPanelPath := Create_PanelPath(FPanelGrd); FPanelBtn := Create_PanelBtn(FPanelGrd); FBtnUmkehr := Create_Button(FPanelBtn, 3); FBtnNichts := Create_Button(FPanelBtn, 2); FBtnAlles := Create_Button(FPanelBtn, 1); FGrdFiles := Create_GrdFiles(FPanelGrd); ...... end; destructor TFileAuswahl.Destroy; begin FPicIcon.Free; FShellTreeView.Free; FSplitter.Free; FGrdFiles.Free; inherited; end; |
AW: Sonderbares verhalten von Align in eigener Komponente
Hi,
das ist auch logisch. Die Zeile mit dem Parent zuweisen kannst bzw. musst du weglassen. Denn für in der IDE erstellte Controls ist immer das Form der Owner. Frank |
AW: Sonderbares verhalten von Align in eigener Komponente
Zitat:
|
AW: Sonderbares verhalten von Align in eigener Komponente
Zitat:
Kommentiere doch mal im Konstruktor alles ausser das inherited aus. Dann wird es IMHO funktionieren. Oder häng doch mal den kompletten Code an. Frank |
AW: Sonderbares verhalten von Align in eigener Komponente
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Ich habe den Code als Anhang mal angefügt. Ich muß mich aber jetzt leider bis morgen verabschieden. Gruß Klaus |
AW: Sonderbares verhalten von Align in eigener Komponente
Hi Klaus,
ich kann deinen Code auf Grund fehlender Unit' s nicht kompilieren und testen. Aber es ist wohl so: Du richtest die Komponenten im Constructor schon aus und fragst Height und Width des Panels schon ab. Somit kommt der Fehler schon durch das noch nicht vorhandene Parent zustande. Ich würde die Komponenten im Constructor nur erzeugen und eine Methode PositionControls einführen. Diese könnte man in der überschriebenen Methode CreateWnd nach dem Inherited aufrufen. Dann sollte das Fensterhandle verfügbar sein. Frank |
AW: Sonderbares verhalten von Align in eigener Komponente
Hallo Frank,
Danke für deine Hilfe. Zitat:
TFilterGrid ist folgendermaßen deklariert:
Delphi-Quellcode:
TFilterGrid = class(TStringGrid)
private ..... procedure Change; dynamic; public constructor Create(aOwner: TComponent); override; destructor Destroy; override; procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; procedure DrawCell(ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); override; function SelectCell(ACol, ARow: LongInt): boolean; override; function GetEditText(ACol, ARow: Longint): string; override; procedure SetEditText(ACol, ARow: Longint; const Value: string); override; ...... constructor TFilterGrid.Create(aOwner: TComponent); begin inherited Create(aOwner); ..... // es werden nur Variable initiert. end; Zitat:
Gruß Klaus. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 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 by Thomas Breitkreuz