Hallo,
ich habe mir untenstehende Komponente abgeleitet. Sie funktioniert auch wie sie soll. Nur zeigt sie zur Entwurfszeit ein sonderbares Verhalten:
- Wenn ich sie aus der Komponentenpalette auf ein z.B. Panel ziehe und anschließend im Objektinspektor die Eigenschaft Align auf alClient setze, füllt sie das ganze Formular aus, statt das Panel.
- Wenn ich diese Komponente dann mit Ausschneiden/Einfügen auf das Panel lege, füllt sie, wie es richtig ist, nur das Panel aus.
Ich vermute: bei 1. wird das Formular der Besitzer und nicht das Panel, wie vorgesehen.
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;