AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TCategoryPanel Anzeige-Bug?

Ein Thema von Alex_ITA01 · begonnen am 2. Nov 2022 · letzter Beitrag vom 7. Nov 2022
Antwort Antwort
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#1

TCategoryPanel Anzeige-Bug?

  Alt 2. Nov 2022, 13:08
Hallo zusammen,
ich habe eine TCategoryPanelGroup mit 3 TCategoryPanel darauf.
In jedem TCategoryPanel sind testweise ein Memo, 2 Panels und ein Button.
Das dritte TCategoryPanel ist ausgeklappt.
Wenn ich die Anwendung starte, sieht alles normal aus.
Wenn ich danach allerdings auf das zweite TCategoryPanel klicke, wird das dritte TCategoryPanel natürlich nach unten verschoben aber mein Button ist halb abgeschnitten. Klicke ich nochmal auf das zweite TCategoryPanel, wird dieses eingeklappt und das dritte TCategoryPanel sollte so aussehen wie nach Anwendungsstart. Tut es aber nicht.
Habe schon mit Repaint versucht irgendwas zu machen aber keine Besserung.
Habt ihr eine Idee dazu?
Angehängte Grafiken
Dateityp: png Start.png (21,7 KB, 32x aufgerufen)
Dateityp: png Klick1 auf Test 2.png (22,1 KB, 28x aufgerufen)
Dateityp: png Klick2 auf Test 2.png (19,5 KB, 25x aufgerufen)
Angehängte Dateien
Dateityp: zip CategoryPanel.zip (90,3 KB, 4x aufgerufen)
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#2

AW: TCategoryPanel Anzeige-Bug?

  Alt 4. Nov 2022, 05:57
*push* Irgendjemand eine Idee oder benutzt ihr diese Komponente nicht? Wenn nicht, welche nutzt ihr dann um sowas darzustellen?
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
LoZe

Registriert seit: 27. Dez 2016
Ort: Ulm
38 Beiträge
 
Delphi 12 Athens
 
#3

AW: TCategoryPanel Anzeige-Bug?

  Alt 4. Nov 2022, 07:14
Hallo, ich benutze die Komponente nicht aber kannst du vielleicht ein redraw Triggern?
ich muss dass bei meinen TStringgrids auch immer wieder mal machen wenn sich das Fenster ändert (onResize, onScroll z.b.)
Chris
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
847 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TCategoryPanel Anzeige-Bug?

  Alt 4. Nov 2022, 07:22
Ich benutze die Komponente, und habe gelegentlich ähnliche Probleme. Edit-Felder werden z.B. auch nicht zuverlässig aktualisiert. Hinzu kommen so Späße, dass eine deaktivierte Komponente auf einem CategoryPanel auch in der IDE deaktiviert (d.h. nicht mehr anklickbar) ist.

Eine direkte Lösung habe ich nicht. Eine Verbesserung tritt bei mir ein, wenn ich im OnCollapse und OnExpand die enthaltenen Elemente neu zeichne (Repaint). Evtl. ist das aber zu früh. Triggern des Repaint per PostMessage könnte funktionieren, oder halt Quick&Dirty über einen Timer, der im OnExpand/OnCollapse gestartet wird.
The angels have the phone box.
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
739 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TCategoryPanel Anzeige-Bug?

  Alt 5. Nov 2022, 16:25
Ich verwende das Ding nicht (wusste nicht mal, dass es sowas gibt), kann aber das Verhalten (dein Projekt) bestätigen.

Wenn ich einen Haltepunkt bei procedure TCustomCategoryPanelGroup.WMPaint() setze, dann sehe ich, dass der Button zu früh gesetzt wird (die eine Hälfte) - und später wird dann die andere Hälfte gemalt (jene, welche du nach Abschluss der Malarbeiten siehst).

Das scheint nicht sauber programmiert zu sein.
Michael Gasser
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
739 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TCategoryPanel Anzeige-Bug?

  Alt 5. Nov 2022, 17:38
Du solltest dieses Problem melden.

Als Workaround schlage ich dir vor, die Kinder selber neu zu malen.

Zum Beispiel so:

Delphi-Quellcode:
procedure RepaintChildren(Parent: TWinControl);
var
  i: Integer;
  Child: TControl;
begin
  for i := 0 to Parent.ControlCount-1 do
  begin
    Child := Parent.Controls[i];
    if Child is TWinControl then
    begin
      Child.Repaint;
      RepaintChildren(TWinControl(Child));
    end;
  end;
end;

Aufruf:
Auf die Ereignisse OnCollapse und OnExpand von cpSprache reagierst du mit NeuMalen aller Kinder und Kindeskinder von CategoryPanelGroup1. (CategoryPanelGroup1.Repaint oder Panel2.Repaint funktionieren nicht, da du damit wieder in den programmierten Mist reingerätst.)

Delphi-Quellcode:
procedure TForm3.cpSprache2Expand(Sender: TObject);
begin
   RepaintChildren(CategoryPanelGroup1);
end;
Michael Gasser
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:22 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