Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Zeichnen auf NonClientArea mit W7 Theme? (https://www.delphipraxis.net/174579-zeichnen-auf-nonclientarea-mit-w7-theme.html)

Memnarch 30. Apr 2013 08:42

Zeichnen auf NonClientArea mit W7 Theme?
 
Tag allerseits,
Wollt mich mal mit dem zeichnen auf dem NonClientArea bei Forms beschäftigen.

Dabei ist mir aufgefallen, dass keines der Beispiele, die ich gefunden habe funktioniert, wenn ein Theme in windows7 eingestellt wurde. Wenn ich auf Classic-Theme gehe klappt es.

Muss ich dann für diese eine Form das Themeing abschalten und alles selber machen?(Wohle eher nicht)
Wie mach DevExpress dass den dann?+

Als referenz Beispiel:
http://www.experts-exchange.com/Prog..._21563027.html

EWeiss 30. Apr 2013 09:26

AW: Zeichnen auf NonClientArea mit W7 Theme?
 
Meine ganzen Nonvcl Anwendungen zeichnen auf den NonClientArea Bereich.
Dabei spielt es überhaupt keine rolle ob eine Theme eingestellt ist oder nicht.

Zitat:

und alles selber machen
Ja muss man alles selber machen ;)


gruss

Memnarch 30. Apr 2013 10:30

AW: Zeichnen auf NonClientArea mit W7 Theme?
 
@EWeiss: Ok das heißt: Theme für die Form abschalten ist damit inbegriffen?(bleiben mit dan die themes für die komponennten auf den Forms, wie Buttons?)

EDIT: yo, SetWindowTheme setzt das nur für die jeweilige control. Schöner wäre es natürlich, wen man direkt in Windows theme-bausteine(zumindest für die laufende applikation) registrieren könnte :)

uligerhardt 30. Apr 2013 11:20

AW: Zeichnen auf NonClientArea mit W7 Theme?
 
Vielleicht ist das für dich interessant.

Memnarch 1. Mai 2013 01:15

AW: Zeichnen auf NonClientArea mit W7 Theme?
 
Liste der Anhänge anzeigen (Anzahl: 2)
SO, ich bin jetzt soweit, das ich den Frame zeichnen kann. Es ist mir außerdem möglich die Buttons Min/Max/Close frei zu plazieren, da ich sämtliche NC events dafür überschrieben habe.

Mit Platzhalter grafiken sieht es so aus:
Anhang 39126


Leider habe ich ein Problem. In dem Moment, wo die Maus das erste mal mit irgendeinem teil des NC bereiches in Kontakt kommt(aber nur beim ersten mal, nach dem der active state gewechselt hat), werden die alten systembuttons draufgezeichnet -.-
Anhang 39127

Ich weiß noch nicht woran das liegt und wie ich das unterbinden kann. Dies wurde unter anderem vorher auch von stellen wie NCHittest NCLbuttonDown/Up ausgelößt. Diese habe ich aber bereits gekapert um meine Buttons zu behandeln, weswegen dort das problem nicht mehr auftrit. Meine Frage also: WARUM o.o?

Namenloser 1. Mai 2013 03:45

AW: Zeichnen auf NonClientArea mit W7 Theme?
 
Ich glaube, das ist nicht der richtige Weg. Probier es mal so: http://www.codeproject.com/Articles/...t-Area-in-Aero

Memnarch 1. Mai 2013 12:18

AW: Zeichnen auf NonClientArea mit W7 Theme?
 
Was heißt nicht der richtige Weg? Ich möchte ja alles selber zeichnen. Und in deinem Beispiel wird eigentlich in C# nur das implementiert, was wir in Delphi GlassFrame nennen?

EWeiss 1. Mai 2013 12:38

AW: Zeichnen auf NonClientArea mit W7 Theme?
 
Welchen WindowsStyle verwendest du denn?

gruss

Memnarch 1. Mai 2013 12:47

AW: Zeichnen auf NonClientArea mit W7 Theme?
 
Zum zeichnen stelle ich momentan den STyle der Form ab(Betrifft aber nur die form). Darauf zeichne ich dan. Wiegesagt, das letzte was mich nervt ist, das aus irgendeinem grund irgendwo diese Systembuttons erneut gezeichnet werden. Ich muss rauskriegen wo, um das zu korrigieren :(

EWeiss 1. Mai 2013 12:51

AW: Zeichnen auf NonClientArea mit W7 Theme?
 
Deshalb meine Frage welchen Windowstyle du verwendest.
Du mußt diesen ermitteln und gegebenfalls auf den für dich in frage kommenden ändern.
So wie es zur zeit bei dir aussieht verwendest du WS_OVERLAPPEDWINDOW.
Und was sagt dir das?

oops: So denke ich

WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED or WS_CAPTION or WS_SYSMENU or
WS_THICKFRAME or WS_MINIMIZEBOX or WS_MAXIMIZEBOX);

Entweder verwende einen der die Boxen gar nicht erst anzeigt
Oder schalte sie einfach aus

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 Uhr.
Seite 1 von 2  1 2      

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