![]() |
PageControl durchsichtig?
Hallo zusammen, :hi:
ich habe auf einer Form eine Hintergrundgrafik, ähnlich des grauen Backgrounds hier auf Delphi-Praxis. Um nun mehrere Controls thematisch trennen zu können, setze ich ein PageControl mit 5 TabSheets auf die Form. Die einzelnen Tabs der TabSheets sind ausgeblendet (TabVisible=False). Gibt es eine Möglichkeit die TabSheets für die Hintergrundgrafik durchsichtig zu machen? :gruebel: Eine ähnliche Frage gab es hier schon öfters, es ging nur immer um den Bereich neben den Tabs. Mir geht es um den Bereich im TabSheet selber. Falls es nicht so leicht machbar ist, könnte man es irgendwie mit Panels lösen? Gruss Microschlumpf :coder2: |
Re: PageControl durchsichtig?
Vielleicht die Transparenz etwas hoch setzen?!
|
Re: PageControl durchsichtig?
dann wird ja die ganze form transparent.
am einfachsten wäre es, du würdest auf jedem tab ein image erstellen, das den selben hintergrund wie das formular hat (du kannst es ja dann auch entsprechend verkleinern (schneiden) um nicht unnötig ressourcen zu verbraten). |
Re: PageControl durchsichtig?
Hallo,
Zitat:
Microschlumpf |
Re: PageControl durchsichtig?
Ja, mach einfach ein Image auf die PageControl und setze Align := alClient; Dann kopierts du einfach aus dem Canvas des Hintergrund-Images den Teil raus. Wie es mit der Geschwindigkeit aussieht kann ich dir nicht sagen!
|
Re: PageControl durchsichtig?
Also ich bin gerade mal am Probieren. Es funktioniert echt gut, nur habe ich noch Probleme mit dem Rand vom PageControl, den sieht man leider und ich bekomme den irgendwie nicht weg. :gruebel:
Das ist der Code, den ich verwendet habe...
Delphi-Quellcode:
Image1 ist alClient auf dem Formular, Image2 alClient auf dem entsprechenden TabSheet. Die Position vom TabSheet wird berücksichtigt (Rand muss noch einberechnet werden, wenn man den nicht wegbekommt).
procedure TForm1.Button1Click(Sender: TObject);
var SrcRect, DestRect: TRect; begin Image2.Picture := nil; SrcRect.Left := PageControl1.Left; SrcRect.Top := PageControl1.Top; SrcRect.Right := PageControl1.Left+PageControl1.Width; SrcRect.Bottom := PageControl1.Top+PageControl1.Height; DestRect := Rect(0, 0, PageControl1.Width, PageControl1.Height); Image2.Canvas.CopyRect(DestRect, Image1.Canvas, SrcRect); PageControl1.ActivePage := TabSheet1; TabSheet1.Refresh; end; Ich habe tsFlatButtons gewählt. Gruss Microschlumpf |
Re: PageControl durchsichtig?
Setzt den Border des Controls mal auf bsNone!
|
Re: PageControl durchsichtig?
@ Sebastian
Gibt es denn da eine Bordereigenschaft, die ich auf bsNone setzen kann. Ich habe da nichts gefunden, weder beim PageControl, noch bei den zugehörigen TabSheets. Bei den TabSheets habe ich BorderWidth := 0 gesetzt. :? Gruss Microschlumpf |
Re: PageControl durchsichtig?
Zitat:
|
Re: PageControl durchsichtig?
Zitat:
Style auf tsFlatButtons |
Re: PageControl durchsichtig?
Zitat:
|
Re: PageControl durchsichtig?
aber der Rand ist weg. das ist die einzige Möglichkeit
|
Re: PageControl durchsichtig?
zusätzlich kann er ja die tabs ausblenden (TabVisible) und durch TToolButtons (sind auch flach, bzw. transparent) das entspr. Tab wieder anzeigen lassen.
|
Re: PageControl durchsichtig?
Im PageControl habe ich die Eigenschaft Style:=tsFlasButtons eingestellt und in den TabSheets die Tabs mit TabVisible:=False ausgeblendet. Trotzdem ist noch ein Rahmen vorhanden. Hat das irgendwas mit XP Manifest zu tun :gruebel: ich habe da leider zu wenig Ahnung.
Falls ich bei PageControl den Rahmen nicht wegbekomme, werde ich das mit Panels versuchen. Das ist beim Entwickeln leider nicht so komfortabel, aber es wäre nicht so tragisch. Gruss Microschlumpf |
Re: PageControl durchsichtig?
kein Panel drum oder so?
Also wenn ich ein leeres Formular nehme und dort ein TPageControl drauf mache und Style = flate.. dann ist der Rahmen weg. |
Re: PageControl durchsichtig?
Zitat:
|
Re: PageControl durchsichtig?
Hmmm, ich habe mir das gerade noch einmal angesehen, ihr habt da schon recht, der Rahmen ist weg. Ich habe auf den TabSheets jeweils ein TImage (Align:=alClient), in das kopiere ich den Bereich des Hintergrundbildes des Formulars, welcher hinter dem TabSheet liegt. Das Problem ist, das TImage füllt das TabSheet nicht komplett auf, es bleibt ein kleiner Rand und den sieht man.
|
Re: PageControl durchsichtig?
OK, da hast Du wieder recht. Den hab ich auch noch nicht wegbekommen. Wird man wahrscheinlich die PageControl mit eigener Variante überschreiben müssen. Würde mich auch interessieren, da dann mehr Platz zur Verfügung steht.
|
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-2025 by Thomas Breitkreuz