Autor Beitrag
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 14.06.03 21:49 
Hallo,

mal eine kleine Frage... ich habe ein TPageControl in Delphi 7, und habe das XPManifest eingebaut. Nun wird das PageControl nicht mehr gleichfarbig wie das Form dargestellt, sondern heller... keine Ahnung, wie die Farbe heißt... Das ist jetzt doof, weil sich andere Objekte nicht farblich abheben sollen... also:
- wie ermittle ich die Farbe oder
- wie lege ich diese Farbe fest?

_________________
Life is a bad adventure, but the graphic is really good!
mb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: So 15.06.03 22:10 
Die TabSheets (bei "aktiviertem" XP-Manifest) haben keine Farbe sondern sind, wie die anderen XP-Panels auch, schattiert.

Du kannst aber für das Pagecontroll die Eigenschaft "Ownerdraw" auf TRUE setzen. Dann musst Du im Code der OnDraw Eigenschaft in etwa diesen Code einfügen, damit die Reiter-Titel geschrieben werden:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
 
  with control as TCustomTabControl do
    begin
      canvas.brush.color:=clBtnFace;
      canvas.fillrect(rect);
      canvas.textout(rect.left+10,rect.top+3,PageControl.Pages[tabindex].Caption);
    end;


Ich hoffe, es hilft so, wie Du es wolltest...

_________________
Gruß,
MB
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mo 16.06.03 14:24 
Hallo,

der Tipp ist gut, aber dann geht ja das XP-Style verloren. Dann kann ich ja gleich das Manifest weglassen.

Aber du sagtest, es sei schattiert. Welche Farbe ist denn "Schattiert"? Wenn ich die genaue Farbe hätte, könnte ich ja die Objekte obendrauf in dieser Farbe zeichnen. das ist ja grade das Problem: Es sieht echt doof aus, wenn ich was mit clBtnFace drauzeichne, und ich habe halt keine Ahnung, welche Fabrkonstante ich nehmen soll.

_________________
Life is a bad adventure, but the graphic is really good!
mb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: Mo 16.06.03 16:34 
Zitat:
aber dann geht ja das XP-Style verloren

Klar, für das PageControl geht der XP-Style damit verloren, weil Du ja dann selbst zeichnest. Ich hatte das so verstanden, dass Du das auch wolltest, denn der XP-Style für die anderen Komponenten bleibt ja erhalten.

Wenn Du den XP-Style auch für das PageControl möchtest, dann muss OwnerDraw wieder deaktiviert werden und Du musst dir XP-Komponenten raussuchen, oder solche, die eine Transparent-Eigenschaft haben. Dann müsstest Du diese auf TRUE setzen.

Bei Labels, etc. wird aber bei aktiviertem XP-Style automatisch Transparenz verwendet....

_________________
Gruß,
MB
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mo 16.06.03 17:54 
Hallo,

wie meinst du das, "XP-Komponenten raussuchen"? Meinst du VCL aus dem Internet? Das PageControl von D7 hat KEINE Transparent-Eigenschaft.

Aber, es MUSS doch eine Möglichkeit geben, diese Farbe rauszufinden, die muss doch irgendwo hibnterlegt sein???

_________________
Life is a bad adventure, but the graphic is really good!
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mo 16.06.03 18:40 
Hallo,

:oops: ich war wohl ein bisschen voreilig...

Ich habe mal einen Screenshot mit PhotoImpact untersucht, da fiel mir auf, dass es sich nicht um eine Farbe, sondern um einen ganz feinen Farbverlauf handelt. Da ist klar, dass ich die Farbe nirgends auslesen kann, da es ja viele einzelne Farben sind.

Ich denke jetz mal in eine andere Richtung, und versuche, meine anderen Objekte Transparent zu machen. Dann ist eingntlich egal, welche Farbe das PageControl hat.

_________________
Life is a bad adventure, but the graphic is really good!
mb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: Mo 16.06.03 19:03 
Ja, genau. Es ist eben ein Verlauf von Farben (oder: wenn man ganz genau hinsieht eher etwas "ähnliches" *g*)

Du kannst ansonsten natürlich auch auf jedes TabSheet ein Panel platzieren, dass dann eine einheitliche Farbe (z.B. clBtnFace) hat. Die Eigenschaft Align des Panels setzt Du dann auf alClient.

(Aber das vielleicht nicht der optimalste Programmier-/Entwicklungsstil; trotzdem könntest Du es versuchen, wenn es für Dich in Ordnung ist)

_________________
Gruß,
MB
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mo 16.06.03 19:14 
Hallo,

erst gackern, dann keine Eier legen :wink: ! Was ist "wenn man genau hinsieht"? Ich erkenne nur einen vertikalen Farbverlauf... OK, villeicht gibt es XP-Skins, bei denen das anders ist.

Na ja, ich habe es jetzt mal so implementiert:
- "ParentBAckground" der ScrollBoxen und Panels auf "True" gesetzt
- Die PainBoxen sind "Visible=False", wenn nix angezeigt werden soll

Trotzdem vielen Dank für deine Mühe!!! :D

_________________
Life is a bad adventure, but the graphic is really good!
mb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: Mo 16.06.03 19:36 
Zitat:
erst gackern, dann keine Eier legen

Hab doch alles gesagt, was Du wissen musst. Wenn man sich das Standard-XP-Skin (Luna) ansieht - dort speziell die Farbverläufe z.B. bei PageControls - dann sieht man dass es ein Muster gibt, dass ein wenig der JPEG-Kompression ähnelt .... aber wirklich nur ein wenig.

Und komm hier keiner auf die Idee zu sagen, das das nicht so ist oder an meiner Grafikausrüstung (Monitor/Grafikkarte) liegt. ... Es ist so. Und zwar auf sehr vielen Systemen mit sehr unterschiedlicher Ausstattung ;-)

Deine Lösung ist doch ok und geht ja in die Richtung der Lösung, die ich Dir mit dem Transparenz-Ansatz vermittelt habe...

Ansonsten: Eigene Komponente schreiben und am besten gleich hier als OpenSource veröffentlichen ... oder irgend wo anders *FG*

_________________
Gruß,
MB
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mo 16.06.03 20:15 
Hallo,

mehr wollte ich doch gar net wissen! Aber ehrlich gesagt, erkenne ich da nix. Aber, das kann sehr gut sein, denn die Skins sind meines Wissens als Grafik-Dateien hinterlegt statt als Farbverlaufs-Code.

Allerdings werde ich kein OpenSource machen :twisted: , denn ich finde meine Lösung gut und habe keine Lust, dass noch weiter zu tweaken, also schreibe ich ga nicht erst neue Kompos (die die Welt eh' nicht braucht).

Tipp an alle, die das auch machen wollen: Wenn ihr in der PaintBox NICHTS darstellen wollt (also Transparent), dann zeichnet einfach NIX in "OnPaint". Der Hintergrund wird bein Repaint automatisch wiederhergestellt. Wenn ihr allerdings ohne Repaint "transparent" zeichnen wollt, also einen ausgefüllte Bereich wieder löschen wollt, ohne Repaint aufzurufen: Sendet "WM_PAINT" an das Parent-Element, mit "wParam=PaintBox.Canvas.Handle". Dann ist sicher, dass der Hintergrund OK ist. Bei Repaint oder Invalidate wird der Hintergrund nämlich NICHT implizit gelöscht. Korrigiert mich, falls das falsch ist.

_________________
Life is a bad adventure, but the graphic is really good!
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mo 16.06.03 20:37 
Hallo,

habe mir gedacht, wo ich grad' dabei bin, rette ich schnell deine Ehre :wink: ... also, du hast GUTE Hardware (und ich schlechte Augen :roll: ): Es sind Kompressions-Effekte zu sehen. Habe bei einem Screenshot mit Helligkeit und Kontrast rumgespielt:
user defined image
Ich habe NICHTS komprimiert oder so, das ist ein Screenshot in ORIGINALGRÖßE, die Block-Effekte sind tatsächlich da, ich habe nur den Kontast verändert, dass man die Abstufungen sieht. Es handelt sich um ein GIF, also keine weitere Kompression. Ihr könnt @mb glauben.

_________________
Life is a bad adventure, but the graphic is really good!
mb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 185



BeitragVerfasst: Di 17.06.03 10:20 
Andreas Pfau hat folgendes geschrieben:
habe mir gedacht, wo ich grad' dabei bin, rette ich schnell deine Ehre


Danke :)
*gg*

_________________
Gruß,
MB