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, 14: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?
Miniaturansicht angehängter Grafiken
start.png   klick1-auf-test-2.png   klick2-auf-test-2.png  
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, 06: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
40 Beiträge
 
Delphi 12 Athens
 
#3

AW: TCategoryPanel Anzeige-Bug?

  Alt 4. Nov 2022, 08: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
880 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TCategoryPanel Anzeige-Bug?

  Alt 4. Nov 2022, 08: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
760 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TCategoryPanel Anzeige-Bug?

  Alt 5. Nov 2022, 17: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
760 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TCategoryPanel Anzeige-Bug?

  Alt 5. Nov 2022, 18: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
Michael II

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

AW: TCategoryPanel Anzeige-Bug?

  Alt 6. Nov 2022, 23:44
Ich hab's nochmals angeschaut. Leider sehe ich immer noch nicht, wieso hier beim Malen eine falsche Updateregion verwendet wird.

Du könntest das Problem wahrscheinlich lösen, indem du eine Kopie von Vcl.ExtCtrls in deinen Projektordner kopierst und in
procedure TCustomCategoryPanel.Expand;
procedure TCustomCategoryPanel.Collapse;
jeweils vor der Zeile if assigned die Zeile
RepaintChildren(FPanelGroup); einfügst.
Anstatt Repaint; (in RepaintChildren) könntest du Invalidate; aufrufen.

Nach dieser Änderung musst du im eigenen Code keine Anpassungen vornehmen.
Hoffentlich klappt's.
Michael Gasser
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#8

AW: TCategoryPanel Anzeige-Bug?

  Alt 7. Nov 2022, 00:50
Eigentlich hätte ich gefragt, wieso jeder denkt das kopieren ganzer Units ist die Lösung.

Nja, diese Komponente ist ja ein Designfail nach dem Anderen
* warum sind Collapse und und Expand nicht virtual?
* und/oder warum ist der Aufruf von FOnExpand und FOnCollapsed nicht in einer virtuellen Methode gekapselt?

Das csDesigning wird nicht an TCategoryPanelSurface weitergegeben.
Enthaltene Komponenten haben nicht das Panel als Parent, sondern den PanelSurface und daher denken sie, sie wären auch nicht im DesignModus.

......
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Alex_ITA01

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

AW: TCategoryPanel Anzeige-Bug?

  Alt 7. Nov 2022, 07:07
Ok, die Komponente ist anscheinend nicht ausgereift und wird auch nicht weiter bearbeitet von Seiten Idera/Embarcadero/Borland...
Gemeldete Bugs bringen ja leider nur etwas, wenn sie auch gevotet werden und da die Komponente nicht großartig benutzt wird (sonst hätten andere ja auch die Probleme), mache ich mir die Arbeit nicht (sorry, das Voting System um Fehler zu beheben find ich Banane, aber ist nur meine Meinung und dient keiner weiteren Diskussion).

Geholfen habe ich mir jetzt einfach so, dass ich im OnExpand und OnCollapsed die Width von der CategoryPanelGroup einmal um 1 erhöhe und dann wieder sofort reduziere. Das löst anscheinend die "richtigen" Zeichenfunktionen aus.

Danke aber für eure Anregungen bzw Bestätigungen des Fehlers
Let's fetz sprach der Frosch und sprang in den Mixer
  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 12:43 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