Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi abgeleitete visuelle Klasse (TLabel) nicht sichtbar (https://www.delphipraxis.net/206027-abgeleitete-visuelle-klasse-tlabel-nicht-sichtbar.html)

palmakunkel 11. Nov 2020 09:54

Delphi-Version: 10.3 Rio

abgeleitete visuelle Klasse (TLabel) nicht sichtbar
 
Ist eigentlich banal, kein Compiler-Fehler, kein Laufzeitfehler, trotzdem sehe ich das dynamisch erzeugte Label nicht. Hab nichts gefunden im Netz, was mein Hirn erhellt. Kann mir einer/eine helfen?

Delphi-Quellcode:
unit UnitMain;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TFlatBtn = class(TLabel)
  private
    procedure LabelPerfClick(Sender: TObject);
  public
    constructor Create(AOwner: TComponent); override;
  end;

  TForm1 = class(TForm)
    procedure FormShow(Sender: TObject);
  private
     MyBtn: TFlatBtn;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TFlatBtn.LabelPerfClick(Sender: TObject);
begin
   ShowMessage('Klappt');
end;

constructor TFlatBtn.Create (AOwner: TComponent);
begin
  inherited Create (AOwner);
  Left := 0;
  Top := 0;
  Width := 200;
  Height := 200;
  Alignment := taCenter;
  Anchors := [];
  AutoSize := False;
  ParentColor := False;
  Transparent := False;
  Color:=clRed;
  Layout := tlCenter;
  StyleElements := [];
  WordWrap:=true;
  Visible:=true;
  Enabled:=true;
  OnClick:=LabelPerfClick;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  MyBtn:=TFlatBtn.Create(Form1);
  MyBtn.Name:='MyName';
end;

end.

Uwe Raabe 11. Nov 2020 11:23

AW: abgeleitete visuelle Klasse (TLabel) nicht sichtbar
 
Liegt vielleicht an der leeren Caption?

DeddyH 11. Nov 2020 11:28

AW: abgeleitete visuelle Klasse (TLabel) nicht sichtbar
 
Und am fehlenden Parent?
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
  MyBtn:=TFlatBtn.Create(self);
  MyBtn.Caption := 'Wuppdi';
  MyBtn.Parent := self;
  MyBtn.Name:='MyName';
end;

palmakunkel 22. Nov 2020 10:01

AW: abgeleitete visuelle Klasse (TLabel) nicht sichtbar
 
Vielen Dank an beide! Problem leider nicht gelöst. Das Label ist nicht nur nicht sichtbar, sondern nicht da. Wenn ich in die obere linke Ecke klicke (TopLeft 0/0 BottomRight 200/200) müsste ja ShowMessage kommen, wenn z.B. das Label nur transparent wäre. Aber es tut nix.

Dalai 22. Nov 2020 10:34

AW: abgeleitete visuelle Klasse (TLabel) nicht sichtbar
 
Bist du denn mal mit dem Debugger Schritt für Schritt (F7) durchgegangen?

Grüße
Dalai

hoika 22. Nov 2020 11:08

AW: abgeleitete visuelle Klasse (TLabel) nicht sichtbar
 
Hallo,
Setz mal Width direkt.oder AutoSize auf True.

palmakunkel 22. Nov 2020 21:18

AW: abgeleitete visuelle Klasse (TLabel) nicht sichtbar
 
Danke an alle, Problem gelöst, MyBtn.Parent:=self war doch die Lösung, wie DeddyH vorgeschlagen hatte. Dass es zunächst nicht geklappt hat, lag daran, dass mir die Verknüpfung von OnShow mit der zugehörigen Prozedur abhanden gekommen war, warum auch immer. Da passierte nach jedem Änderungsversuch - nichts. So, ich kann jetzt glücklich in die neue Woche starten. Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 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