Delphi-PRAXiS

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 PageControl durchsichtig? (https://www.delphipraxis.net/63139-pagecontrol-durchsichtig.html)

Microschlumpf 14. Feb 2006 13:27


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:

Sebastian R. 14. Feb 2006 13:31

Re: PageControl durchsichtig?
 
Vielleicht die Transparenz etwas hoch setzen?!

dahead 14. Feb 2006 13:44

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).

Microschlumpf 14. Feb 2006 13:51

Re: PageControl durchsichtig?
 
Hallo,

Zitat:

Zitat von dahead
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).

hmmm, könnte man dann auch irgendwie den Teil der Grafik auf dem Formular, welcher hinter dem TabSheet liegt über Canvas in das TabSheet kopieren?

Microschlumpf

Sebastian R. 14. Feb 2006 13:53

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!

Microschlumpf 14. Feb 2006 21:12

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:
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;
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).
Ich habe tsFlatButtons gewählt.

Gruss
Microschlumpf

Sebastian R. 15. Feb 2006 07:42

Re: PageControl durchsichtig?
 
Setzt den Border des Controls mal auf bsNone!

Microschlumpf 15. Feb 2006 07:59

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

Sebastian R. 15. Feb 2006 08:31

Re: PageControl durchsichtig?
 
Zitat:

Zitat von Microschlumpf
@ 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

Müsste es eigentlich geben. :gruebel:

sh17 15. Feb 2006 09:52

Re: PageControl durchsichtig?
 
Zitat:

Zitat von Sebastian R.
Setzt den Border des Controls mal auf bsNone!

Du meintest wohl

Style auf tsFlatButtons

Sebastian R. 15. Feb 2006 09:54

Re: PageControl durchsichtig?
 
Zitat:

Zitat von sh17
Zitat:

Zitat von Sebastian R.
Setzt den Border des Controls mal auf bsNone!

Du meintest wohl

Style auf tsFlatButtons

Das setzt dann aber den Styles der Tab-Buttons um, nicht den der Control, oder?

sh17 15. Feb 2006 09:56

Re: PageControl durchsichtig?
 
aber der Rand ist weg. das ist die einzige Möglichkeit

dahead 15. Feb 2006 10:01

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.

Microschlumpf 15. Feb 2006 10:15

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

sh17 15. Feb 2006 10:20

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.

Sebastian R. 15. Feb 2006 10:23

Re: PageControl durchsichtig?
 
Zitat:

Zitat von sh17
Also wenn ich ein leeres Formular nehme und dort ein TPageControl drauf mache und Style = flate.. dann ist der Rahmen weg.

Eben, bei mir klappts auch...

Microschlumpf 15. Feb 2006 10:47

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.

sh17 15. Feb 2006 10:53

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 16:19 Uhr.

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