![]() |
Fenster-Design
Hallo Leutz vom DP !
Ich möchte mein Formular nicht mehr schnöde als Viereck haben, sondern mal was peppiges! In meinem Beispiel möchte ich ein Fenster, was im oberen Teil als Halbkreis, im unteren jedoch als Ellipse abgegrenz ist. Wie man ein Formular zu einer Ellipse begrenzt ist mir klar:
Delphi-Quellcode:
Eingentlich ganz einfach. Nur möchte ich ja jetzt mein Fenster mit zwie unterschiedlichen Formen begrenzen, der Ellipse und dem Halbkreis ... das Überlappende der beiden also! Ich versuche das mal "darzustellen"
procedure TJP.StartInit(Sender: TObject);
var HR: HRgn; i, j: integer; begin HR := CreateEllipticRgn (6, 17, clientwidth, clientheight); //Ellipse zeichnen SetWindowRgn(Handle, HR, True); //Fenster auf Ellipse beschränken end; ____________________________________________# _____________________________________#____________ __# _______________________________#__________________ ________# __________________________#_______________________ _____________# _______________________#__________________________ __________________# _____________________#____________________________ ____________________# ____________________#_____________________________ _____________________# ___________________#______________________________ ______________________# __________________#___________Halbreis_als_Obertei l_bis_hierhin_________________# _____________________#____________________________ ____________________# _________________________#________________________ ________________# __________________________________#_______________ _______# ____________________________________________#_Elli psenförmiger_Unterteil Hat da jemand ne Idee? Thx schonmal! |
Re: Fenster-Design
Zwei Regionen erzeugen und mit
Delphi-Quellcode:
die Schnittmenge bilden.
if CombineRgn(Hreg1, Hreg2, HRegOut, RGN_AND) <> RGN_ERROR then
SetWindowRgn(Handle, HRegOut, True); |
Re: Fenster-Design
ich danke dir...genau das was ich gesucht hab!
|
Re: Fenster-Design
So jetzt habe ich es so versucht:
Delphi-Quellcode:
Leider funktioniert es nicht, aber mein Fenster ist wieder ganz normal rechteckig!
procedure TJP.StartInit(Sender: TObject);
var HR, HR2, HRes: HRgn; begin HR := CreateEllipticRgn (6, 17, clientwidth, clientheight); //Ellipse zeichnen HR2 := CreateEllipticRgn (0, 0, clientwidth, clientheight); //Kreis zeichnen if (CombineRgn(HR, HR2, HRes, RGN_AND)) <> RGN_ERROR then SetWindowRgn(Handle, HRes, True); //Schnittfläche des Kreises mit der Ellipse auswählen und als Fenster setzen end; Es gab auch keinen RGN_ERROR, das habe ich via "else"-Abschnitt überprüft... Woran kann das denn nun liegen? mfg 64Jabor |
Re: Fenster-Design
Nee sry!
Gibt DOCH einen RGN_ERROR... -.- Ursache ist mir jetzt jedoch nicht erklärlich ?!? mfg 64Jabor |
Re: Fenster-Design
Tja, die Reihenfolge der Parameter ist falsch :roll:
Zuerst das Hres, dann erst die beiden Source Regionen.
Delphi-Quellcode:
procedure TJP.StartInit(Sender: TObject);
var HR, HR2, HRes: HRgn; begin HR := CreateEllipticRgn (6, 17, clientwidth, clientheight); //Ellipse zeichnen HR2 := CreateEllipticRgn (0, 0, clientwidth, clientheight); //Kreis zeichnen if (CombineRgn(HRes, HR, HR2, RGN_AND)) <> RGN_ERROR then SetWindowRgn(Handle, HRes, True); //Schnittfläche des Kreises mit der Ellipse auswählen und als Fenster setzen DeleteObject(HRes); DeleteObject(HR2); DeleteObject(HR); end; |
Re: Fenster-Design
Und davor noch das einfügen:
Delphi-Quellcode:
HRes := CreateRectRgn(0, 0, ClientWidth, ClientHeight);
|
Re: Fenster-Design
Alles klar, einen Fehler hat das ganze noch... man muss die 3 Regionen in 3 Schritten versch,elzen! erst HRes mit HR dann Hres mit HR2, dann funktioniert alles...thx an alle!
mfg 64Jabor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 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