AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Event bei Z-Order Änderung o.ä.

Ein Thema von Medium · begonnen am 22. Nov 2012 · letzter Beitrag vom 23. Nov 2012
Antwort Antwort
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#1

Event bei Z-Order Änderung o.ä.

  Alt 22. Nov 2012, 11:51
Aloah!

Ich stelle gerade eine Komponente um (Abkömmling von TGraphicControl), bei der diverse Beschriftungen von TextOut() auf TLables in der Komponente geändert werden. (Hintergrund ist, dass die Beschriftungen z.T. ausserhalb des Rects der Komponente liegen müssen, und wenn man das mittels TextOut() auf den Parent-Canvas malt, verhält sich das in der IDE beim Verschieben usw. sehr hässlich.)

Das klappt auch wunderbar (TMS macht es z.B. genau so), jedoch gibt es ein Problem mit Labels, die Teilweise im Rect der Komponente liegen: Wenn man die Komponente mittels BringToFront oder im Editor nach vorne setzt, verschwinden diese Labels hinter ihr. Mein naiver Lösungsversuch: Im Paint() meiner Komponente einfach "Labels[i].BringToFront;". Das löst aber leider auch wiederum das Paint-Ereignis aus, und ist ein prima Weg sich die IDE abzuschießen . Und eigentlich ist mir das auch zu brutal. Ich würde daher ganz gerne eine Art OnZOrderChange() Event haben, jedoch finde ich hier irgendwie keine Stelle an der ich so etwas abgreifen könnte. Gibt es da überhaupt eine Chance?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Event bei Z-Order Änderung o.ä.

  Alt 22. Nov 2012, 11:59
Dann zeichne doch nicht außerhalb der Komponente?

Du kannst dir ja z.B. ein TLabel als Unterkomponente nehmen und dieses entsprechend positionieren.
Delphi-Referenz durchsuchenTLabeledEdit macht das genauso ... das ist ein TEdit mit einem TLabel drin.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Event bei Z-Order Änderung o.ä.

  Alt 22. Nov 2012, 12:00
Genau das mache ich doch.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Event bei Z-Order Änderung o.ä.

  Alt 22. Nov 2012, 12:25
Du musst doch nur tätig werden, wenn die Labels unter der Hauptkomponente liegen, also wenn der Z-Index (hmmm, kleiner oder größer) ist. Dann würde ich auf den Z-Index einwirken, sonst nicht. Und neu gezeichnet wird dann eh.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: Event bei Z-Order Änderung o.ä.

  Alt 22. Nov 2012, 13:26
Mein Problem ist ja, dass ich keinen guten... "Zeitpunkt" finde um genau diese Prüfung vorzunehmen (ob mein Label unter der Kompo liegt oder nicht). Im Paint geht's ja schon mal nicht, weil es eine Endlosrekursion erzeugt (und für meinen Geschmak viel zu unnötig oft wäre). Drücke ich mich so undeutlich aus? (Ernste Frage. Ich hatte gehofft mein Problem deutlich dargestellt zu haben - mag nicht immer gelingen wenn man selbst grad tief drin steckt.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Event bei Z-Order Änderung o.ä.

  Alt 22. Nov 2012, 14:13
In eine Rekursion solltest Du ja eigentlich nur reinlaufen wenn ungeprüft die ZOrder änderst.
So ganz klar ist mir auch nicht warum Du wenn Du ein GraphicControl verwendest Du noch externe Labels benötigst, statt die Komponente entsprechend zu "vergrößern" und die Labels selbst zu zu malen.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz