Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi CategoryPanel, disabled Komponenten (https://www.delphipraxis.net/210699-categorypanel-disabled-komponenten.html)

Gausi 29. Mai 2022 16:10

CategoryPanel, disabled Komponenten
 
Ich habe hier ein kleines Problemchen mit der TCategoryPanelGroup und den TCategoryPanels bei Delphi 11 (alle verfügbaren Patches installiert).

Wenn ich auf einem CategoryPanel eine Komponente (z.B. ein TEdit) hinzufüge, und die Eigenschaft Enabled des Edits im Objektinspektor auf False setze, dann ist es nicht erst nur zur Laufzeit disabled, sondern auch schon zur Designzeit. D.h. ich kann das Edit nicht mehr im Formdesigner auswählen und bearbeiten, sondern nur noch über den Eintrag im Struktur-Baum.

Kann das jemand nachvollziehen (dann wäre das wohl was für ein Ticket), oder habe ich bei mir irgendwas verstellt? :gruebel:

In 10.4 (CE) kann ich das nicht reproduzieren, da funktioniert alles wie erwartet.

Delbor 30. Mai 2022 10:29

AW: CategoryPanel, disabled Komponenten
 
Hi Gausi

Ich hab das eben so gut wie möglich unter vorhandenen Gegebenheiten nachgespielt, die da sind:
  • Mainform mit CategoryPanelGroup und 7 CategoryPanels, so seinerzeit in Sydney (nicht Australien) angelegt und in Alexandria neu gesetzt.
  • Auf noch leerem CategoryPanel neue Pagecontrol mit 2 Tabs gesetzt.
  • Funktioniert ohne Inhalt zur Design- und zur Laufzeit einwandfrei.
  • Andere CategoryPanels zeigen Frameinstanzen und/oder Pagecontrols mit Inhalt
Das funktioniert alles bestens.

Gruss
Delbor

Nachtrag: Wenn das CategoryPanelGroup Disabled ist, lässt es sich zur Designzeit normal bearbeiten (auf- und zuklappen), nicht aber zur Laufzeit.

Gausi 30. Mai 2022 11:12

AW: CategoryPanel, disabled Komponenten
 
Hm, kann sein, dass ich mich nicht klar genug ausgedrückt habe.

Es ging mir um eine einzelne disabled-Komponente (direkt) auf einem enabled-CategoryPanel. Dieses (z.B.) Edit wird dann schon zur Designzeit ausgegraut und ist nicht mehr klickbar.

Wie das aussieht, wenn ich bei mir noch noch Groupboxen, PageControls o.ä. drauf habe, weiß ich nicht. Mein Szenario ist eine PageControl mit je einer CategoryPanelGroup auf den einzelnen TabSheets - also umgekehrt wie das, was du beschreibst. Ich habe das aber auch mit einem Minimal-Projekt nachvollziehen können: Form -> CategoryPanelGroup -> CategoryPanel -> Edit.

Ich füge das ggf. heute Abend mal per Anhang hinzu ...

venice2 30. Mai 2022 11:16

AW: CategoryPanel, disabled Komponenten
 
Ist aber doch Standard.
Wenn das Parent eines Objekt auf disabled steht ist alles was drauf liegt das ebenfalls war noch nie anders.
Ist ein unabhängiges verhalten von Delphi.

Gausi 30. Mai 2022 11:24

AW: CategoryPanel, disabled Komponenten
 
Das Parent (in dem Fall das CategoryPanel) ist Enabled. Nur eine Komponente darauf ist es nicht, bzw. soll es nicht sein.

Und zur Designzeit war das afaik noch nie so, dass eine Komponente, bei der man im Objektinspektor "Enabled = False" gesetzt hat, auch im Formdesigner (also innerhalb der IDE) nicht mehr anklickbar war ...

Es geht mir ausdrücklich nicht um das Verhalten zur Laufzeit.

Vielleicht ist das hier auch die falsche Rubrik, "Delphi-IDE" wäre evtl. passender.

DeddyH 30. Mai 2022 11:25

AW: CategoryPanel, disabled Komponenten
 
Ich kann das geschilderte Problem nachvollziehen. Da hat wohl jemand vergessen, den ComponentState auszuwerten.

ULIK 30. Mai 2022 11:28

AW: CategoryPanel, disabled Komponenten
 
Ja, kann das hier unter D11.1 P1 nachvollziehen:

- TCategoryPanelGroup
- zwei Panels darin erstellen
- in das erste ein TEdit legen
- Dann das TEdit auf Enabled=False setzen

--> nun kann man es im Formdesigner nicht mehr auswählen. Aber die Auswahl via Strukturansicht bzw. Objektinspektor geht und so lassen sich dann auch Eigenschaften wieder ändern.

himitsu 30. Mai 2022 11:48

AW: CategoryPanel, disabled Komponenten
 
Neu eingefügte Edits
oder wenn gespeichert und die Unit neu geladen?



Wenn die Komponente (das Panel) die Subkomponenten nicht richtig verwalet, kann es passieren, dass das Edit garnicht weiß, dass es im Edit-Modus ist und sich somit so verhält, als wäre es zur Laufzeit.
Normal empfangen disablete Komponenten keine Maus/Tastaturereignisse und können somit auch via Klick nicht fokusiert werden (man klickt quasi durch, auf den Parent).

Im DesignModus ist die Komponente also nicht wirklich disabled (und leider vergessen einige Komponenten sich dort dennoch wie Disabled darzustellen, genauso, wie sie bei Visible=False im Editor nicht wirklich unsichtbar sind)




Und ja, es lässt sich nachstellen:
TCategoryPanelGroup -> eine/zwei Bereiche erstellen -> ein TEdit direkt rein -> Enabled = False -> und peng


Man könnte sich jetzt z.B. via Debugger in die IDE hängen und schauen was die Komponente intern sagt,
oder sich einen eignen TEdit-Nachfahren bauen, welcher seinen ComponentState (z.B. csDesigning/csDesignInstance) anzeigt.

Gausi 30. Mai 2022 18:35

AW: CategoryPanel, disabled Komponenten
 
Danke fürs testen bzw. bestätigen. Beim weiteren rumspielen fürs Ticket habe ich festgestellt, dass das Ansteuern per Tab oder Pfeiltasten weiter funktioniert. Ebenso sind dann die Resize-Anfasser aktiviert (darüber könnte man das letztlich auch noch per Maus verschieben), und verschieben per Strg+Pfeiltasten geht auch. Nur die Maus-Events scheinen ignoriert zu werden.

Hab mal ein Ticket aufgemacht - mal sehen, was draus wird. Groß selbst dran debuggen möchte ich nicht. Dazu fehlt mir die Erfahrung, und der Leidensdruck ist nicht groß genug für die ein oder zwei Controls, die ich per Default deaktiviert haben will auf meiner Form. :stupid:

https://quality.embarcadero.com/browse/RSP-38333


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