Label im Parent wird außerhalb angezeigt

    Label im Parent wird außerhalb angezeigt

    Hallo,

    das erste Problem ist gelöst, ein neuer Bug (oder Feature?) :

    Wenn man ein Panel auf ein Formular legt und ein Label darin positioniert wird dieses beim Verschieben des Panels mit verschoben, das ist richtig.
    Ändert man nun die Height-Eigenschaft des Panels so dass das Label dann außerhalb des Panels liegen würde, wird es auch ausserhalb des Panels angezeigt.
    Gleiches passiert in einer Groupbox.
    Unter (uralt) Delphi 5 bin ich der Meinung, dass die Label dann unsichtbar wurden?

    Hintergrund:
    Ich habe mehrere Labels/Buttons usw. in einem Panel und mache dies per Code größer (aufklappen) oder kleiner (einklappen), nur die darin enthaltenen Komponenten bleiben dann ausserhalb der Panelgrenzen sichtbar!
    Jetzt könnte man alle entsprechend ein/ausklappen sichtbar/unsichtbar machen, aber das sollte doch einfacher gehen, oder?

    Ideen?

    Ciao
    Stefan
    Ja klar doch :)
    Nimm ein leeres Formular (Geräteübergreifende Anwendung), setz ein Panel rein und in das Panel ein Label.

    Dann kannst Du im Objektinspektor oder zur Laufzeit Position.Y des Labels so ändern dass es außerhalb des panels kommt, dann wird es eben außerhalb des Panels angezeigt!
    Und genau das ist das Problem...

    Delphi-Code

    1. unit Unit1;
    2. interface
    3. uses
    4. System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
    5. FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
    6. FMX.Controls.Presentation;
    7. type
    8. TForm1 = class(TForm)
    9. Panel1: TPanel;
    10. Label1: TLabel;
    11. Button1: TButton;
    12. procedure Button1Click(Sender: TObject);
    13. private
    14. { Private-Deklarationen }
    15. public
    16. { Public-Deklarationen }
    17. end;
    18. var
    19. Form1: TForm1;
    20. implementation
    21. {$R *.fmx}
    22. procedure TForm1.Button1Click(Sender: TObject);
    23. begin
    24. //zur Sicherheit noch mal
    25. Label1.Parent:= Panel1;
    26. Label1.Position.Y := 120;
    27. end;
    28. end.



    Ciao
    Stefan

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DeddyH“ () aus folgendem Grund: Code- durch Delphi-Tags ([delphi][/delphi]) ersetzt, bitte künftig diese benutzen //MfG DeddyH

    Tut mir leid, da kann ich dir nicht helfen. Das ist ein Problem deiner Delphi-Version, bei meinem D7 (und damit auch unter D5, wie du bereits vermutetest) läuft das so wie von dir erwartet.

    Das von dir beschriebene Verhalten kann eigentlich nur vorkommen, wenn da was mit der Parent-Verwaltung des Labels nicht klappt (schau doch mal dahingehend nach) und das Label obendrein keine Graphic-Control mehr ist, sondern eine Win-Control.

    Aber wie gesagt...

    cckLoud
    Du arbeitest unter FMX, wie ich Deinen Uses entnehme.
    Unter FMX beschränkt eine Komponente NICHT den Zeichenbereich ihrer Kinder.
    Um den von Dir gewünschten Effekt zu erreichen, musst Du ClipChildren des Panels auf True setzen.
    Gruß Thomas

    Admin werden ist nicht schwer, sein ......
    Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
    musst Du ClipChildren des Panels auf True setzen.


    Danke, danke, danke!

    Ja ich baue erstmals mit Radstudio 10.1 Anwendungen für Android und das sind scheinbar die Stolperfallen eines Anfängers...
    Mit der oben genannten Änderung funktioniert es wieder so wie ich es von vor vieeelen Jahren mit D5 gewohnt war.

    Ciao
    Stefan