Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Farbigen Rahmen auf ein Panel legen

80 views
Skip to first unread message

Peter Schütt

unread,
Sep 28, 2010, 7:24:16 AM9/28/10
to
Hallo,
ich schreibe gerade so etwas wie einen Maskeneditor und möchte ein
beliebiges Control (Panel reicht wahrscheinlich) mit einem farbigen
Rahmen markieren.
Ich habe schon versucht explizit mir einen Gerätekontext zu holen und
den Rahmen darauf zu malen.
Das ist natürlich Mist, weil man damit den Delphi-Paint-Mechanismus
umgeht und die Zeichnung nach einem Refresh futsch ist.

Die paint-Methode zu überschreiben funktioniert auch nicht, auf dem
Panel andere Controls liegen, die das Panel überdecken.

Wie könnte ich am Besten vorgehen?

Danke für alle Hinweise und Tips.

Ciao
Peter Schütt

Andreas Mosmann

unread,
Sep 28, 2010, 9:05:04 AM9/28/10
to
Peter Schütt schrieb am 28.09.2010 in
<23aa5055-6f4b-4469...@h4g2000yqp.googlegroups.com>:

Nur so ins Blaue: Wenn Du einen Bevel einstellst, kannst Du den dann
blau malen im Paint? Das sollte dann durch die sich darauf befindlichen
Komponenten nicht beeinflußt werden.
Ansonsten fällt mir nur ein:

- von Panel ableiten
- Eigenschaften FIchWillEinenBuntenRahmen:boolean;
FBunterRahmen: TColor;
- ALLE Paint- Routinen auf den Panels erweitern in der Form:
- Hangle Dich über die Parents so lange nach oben, wie Du an einem der
4 Ränder liegst
- Wenn Du einem Panel begegnest, das einen Bunten Rand haben will,
dann male diesen und suche weiter
Das könnte aber dazu führen, dass mehrere Panels mit FBunterRahmen=true
und unterschiedlichen Farben einen recht bunten Rand hinterlassen.

Ich habe nicht das Gefühl, dass das "am Besten" ist, aber was anderes
fällt mir auch nicht ein.

> Ciao
> Peter Schütt
Viel Erfolg
Andreas

ps: Lass uns wissen, wie Du es letzlich gemacht hast.


--
wenn email, dann AndreasMosmann <bei> web <punkt> de

Peter

unread,
Sep 28, 2010, 2:28:03 PM9/28/10
to
Peter Schütt wrote:

Es gibt eine simplen Trick dazu. Zwei Panels, eins im anderen. Das
innere enthält die Controls. Es füllt das aüßere Panel praktisch
vollständig aus, bis auf die Breite des farbigen Randes, den Du willst.
In eine neueren Delphi-Version kannst Du die Padding-Eigenschaft des
äußeren Panels verwenden, um den Rand zu definieren und dann Align für
das innere auf alClient setzten. Für beide Panels muß ParentBackground
auf False gesetzt werden. Das äußere Panel bekommt alle Bevels
ausgeschaltet.

Wenn Du jetzt die Color der äußeren Panels auf clYellow setzt hast Du
einen gelben Rahmen um das innere.


--
Peter Below

0 new messages