Hallo an Alle,
wenn ich eine Komponente von TCustomPanel ableite kann dieses Control als Parent fungieren. Das bedeutet ich kann darauf zum Beispiel Buttons plazieren.
Versuche ich auf ein Control das von TCustomControl abstammt (zur Designzeit) einen Button zu platzieren so wird mir als Parent die darunter liegende Form angezeigt.
Da TCustomPanel direkt von TCustomControl abgeleitet ist dachte ich im Vergleich der Beiden den Grund für dieses unterschiedliche Verhalten zu finden.
Leider komme ich da nicht wirklich weiter. Weiß jemand wann ein Control Childcontrols haben kann?
Viele Grüße
Bernd
Wann kann ein Control Parent für andere Controls sein?
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Wann kann ein Control Parent für andere Controls sein?
Hi!
Visuelles Control anklicken --> rechte Maustaste --> Change Parent
Winni
Visuelles Control anklicken --> rechte Maustaste --> Change Parent
Winni
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Wann kann ein Control Parent für andere Controls sein?
Hi!
Das hilft Dir bestimmt weiter:
Winni
Das hilft Dir bestimmt weiter:
Code: Alles auswählen
TControl = class(TLCLComponent)
...
public
function CheckChildClassAllowed(ChildClass: TClass;
ExceptionOnInvalid: boolean): boolean;
...
end;
Winni
-
- Beiträge: 519
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Wann kann ein Control Parent für andere Controls sein?
Hallo Winni,
erstmal Danke.
Also
Das weiße auf dem Bild ist mein kleines Control. Man sieht den Button drauf, Parent is Form1.
Das mit der function CheckChildClassAllowed schau ich mir jetzt mal an.
Mein kleiner Code, schreibe ich hier statt TCustomControl TCustomPanel rein dann funktioniert es als Parent:
erstmal Danke.
Also
funktioniert leider nicht. Wenn ich ein Control von TCustomControl ableite kann ich dieses nicht als Parent wählen. Da fehlt was.Visuelles Control anklicken --> rechte Maustaste --> Change Parent
Das weiße auf dem Bild ist mein kleines Control. Man sieht den Button drauf, Parent is Form1.
Das mit der function CheckChildClassAllowed schau ich mir jetzt mal an.
Mein kleiner Code, schreibe ich hier statt TCustomControl TCustomPanel rein dann funktioniert es als Parent:
Code: Alles auswählen
unit Layer;
{$mode ObjFPC}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls;
type
{ TLayer }
TLayer = class(TCustomControl)
private
protected
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Paint; override;
published
property Width;
property Height;
property Visible;
end;
procedure Register;
implementation
procedure Register;
begin
{$I layer_icon.lrs}
RegisterComponents('Others',[TLayer]);
end;
{ TLayer }
constructor TLayer.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Width := 30;
Height:= 30;
end;
destructor TLayer.Destroy;
begin
inherited Destroy;
end;
procedure TLayer.Paint;
begin
inherited Paint;
canvas.Brush.Color:= clWhite;
canvas.FillRect(0,0,width,height);
end;
end.
-
- Beiträge: 202
- Registriert: Mo 24. Aug 2020, 14:16
- OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
- CPU-Target: i386
Re: Wann kann ein Control Parent für andere Controls sein?
Damit ein Control Children akzeptiert, also als Parent fungieren kann, muss es csAcceptsControls in seinem ControlStyle haben. Das wird im angesprochenen Fall in TCustomPanel.Create gesetzt:
Code: Alles auswählen
ControlStyle := ControlStyle + [csAcceptsControls, csCaptureMouse,
csClickEvents, csSetCaption, csDoubleClicks, csReplicatable,
csNoFocus, csAutoSize0x0, csParentBackground]
- [csOpaque]; // we need the default background
-
- Beiträge: 519
- Registriert: Di 19. Mai 2015, 20:05
- OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
- CPU-Target: x86_64-linux-gtk2
Re: Wann kann ein Control Parent für andere Controls sein?
Hallo sieben,
ich danke dir recht herzlich. Jetzt geht es!
Viele Grüße
Bernd
ich danke dir recht herzlich. Jetzt geht es!
Viele Grüße
Bernd