AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Komponente mit PaintBox zeichnet sich immer neu
Thema durchsuchen
Ansicht
Themen-Optionen

Komponente mit PaintBox zeichnet sich immer neu

Ein Thema von Hobbycoder · begonnen am 18. Sep 2018 · letzter Beitrag vom 18. Sep 2018
Antwort Antwort
Hobbycoder

Registriert seit: 22. Feb 2017
961 Beiträge
 
#1

Komponente mit PaintBox zeichnet sich immer neu

  Alt 18. Sep 2018, 19:35
Hi,

ich entwickele gerade eine Komponente. Diese basiert auf einem TCustomPanel auf dem eine TScrollbox liegt, und in der wiederum eine TPaintbox gezeichnet werden soll.
Ziel ist es die TScrollBox etwas kleiner zu halten, als das Panel ist (es kommt noch etwas Informationen daneben), die TPaintBox aber weit größer sein kann, und dementsprechend mit der Scrollbox alle Bereiche angescrollt werden können.
Die ersten einfachen Zeichnungsfunktionen sind fertig. Gezeichnet wird im TPaintBox.Paint.

Wenn ich nun die Komponente auf der Form ablege, wird die Paintbox ständig neu gezeichnet. Viel mehr mache ich aber noch gar nicht, außer dass ich bei den Properties der Komponente und im Resize ein Invalidate drin habe.

Woran kann das liegen, bzw. wie muss ich es mache, damit die PaintBox.Paint nur aufgerufen wird, wenn auch wirklich neu gezeichnet werden muss.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Komponente mit PaintBox zeichnet sich immer neu

  Alt 18. Sep 2018, 19:38
Du musst feststellen welche Komponente das Invalidieren der PaintBox auslöst.
Ich behaupte mal das es von der TScrollbox ausgelöst wird basierend darauf das die TPaintBox innerhalb der ScrollBox größer ist.
Das löst ein Repaint aus.

Setze zur Designtime die TPaintBox in der weite gleich denn TScrollbox und das Repaint sollte behoben sein.
Verändere dann die größe nachträglich im Code selbst, abhängig von der Value der ScrollBox.

gruss

Geändert von EWeiss (18. Sep 2018 um 19:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: Komponente mit PaintBox zeichnet sich immer neu

  Alt 18. Sep 2018, 19:45
Ja, das Problem ist, dass TPaintBox von TGraphicControl ableitet und somit kein eigenes (dediziertes) Canvas besitzt. Stattdessen wird das Canvas des Parents verwendet. Wenn du Beispielsweise einen TButton über eine PaintBox legst und dann mal mit der Maus hoverst, wirst du sehen, dass OnPaint ausgelöst wird. Gleiches gillt, wenn du auf das komplette darunterliegende Formular Invalidate anwendest.

Solltest du aber recht einfach prüfen können wer Schuld ist, indem du mal einen Breakpoint im OnPaint der PaintBox setzt und dir dann den Stacktrace ansiehst (mhh wobei .. kann sein, dass das Dank Message-Queue doch nicht möglich ist).
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
961 Beiträge
 
#4

AW: Komponente mit PaintBox zeichnet sich immer neu

  Alt 18. Sep 2018, 19:57
Ah, danke für den Tipp. Ich habe meine Denkfehler gefunden. Ich Dummie hab natürlich die Größe der Paintbox im ObPaint der Paintbox berechnet und auch dort gesetzt Ab da lief fleißig im Kreis
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Komponente mit PaintBox zeichnet sich immer neu

  Alt 18. Sep 2018, 19:59
Zitat:
Ich Dummie hab natürlich die größe der Paintbox im ObPaint (OnPaint) der Paintbox berechnet und auch dort gesetzt
So kann's gehen
Da gehören NUR zeichnungsrelevante Dinge hin.

gruss
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
961 Beiträge
 
#6

AW: Komponente mit PaintBox zeichnet sich immer neu

  Alt 18. Sep 2018, 20:10
Ja, nee, ist eigentlich klar. Aber du kennst das ja: "Mal eben schnell, zum testen..."
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Komponente mit PaintBox zeichnet sich immer neu

  Alt 18. Sep 2018, 20:10
Ja, nee, ist eigentlich klar. Aber du kennst das ja: "Mal eben schnell, zum testen..."
JO geht ja jetzt und gut ist

gruss
  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 02:01 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