AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fenster-Design

Ein Thema von 64Jabor · begonnen am 8. Apr 2008 · letzter Beitrag vom 8. Apr 2008
Antwort Antwort
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#1

Fenster-Design

  Alt 8. Apr 2008, 18:29
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:
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;
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"
____________________________________________#
_____________________________________#____________ __#
_______________________________#__________________ ________#
__________________________#_______________________ _____________#
_______________________#__________________________ __________________#
_____________________#____________________________ ____________________#
____________________#_____________________________ _____________________#
___________________#______________________________ ______________________#
__________________#___________Halbreis_als_Obertei l_bis_hierhin_________________#
_____________________#____________________________ ____________________#
_________________________#________________________ ________________#
__________________________________#_______________ _______#
____________________________________________#_Elli psenförmiger_Unterteil

Hat da jemand ne Idee?
Thx schonmal!
Sebastian
Unsren Clan im volle Lauf, hält weder Ochs noch Esl auf ^^
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Fenster-Design

  Alt 8. Apr 2008, 18:36
Zwei Regionen erzeugen und mit
Delphi-Quellcode:
if CombineRgn(Hreg1, Hreg2, HRegOut, RGN_AND) <> RGN_ERROR then
  SetWindowRgn(Handle, HRegOut, True);
die Schnittmenge bilden.
Andreas
  Mit Zitat antworten Zitat
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#3

Re: Fenster-Design

  Alt 8. Apr 2008, 18:37
ich danke dir...genau das was ich gesucht hab!
Sebastian
Unsren Clan im volle Lauf, hält weder Ochs noch Esl auf ^^
  Mit Zitat antworten Zitat
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#4

Re: Fenster-Design

  Alt 8. Apr 2008, 18:55
So jetzt habe ich es so versucht:

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(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;
Leider funktioniert es nicht, aber mein Fenster ist wieder ganz normal rechteckig!
Es gab auch keinen RGN_ERROR, das habe ich via "else"-Abschnitt überprüft...

Woran kann das denn nun liegen?

mfg 64Jabor
Sebastian
Unsren Clan im volle Lauf, hält weder Ochs noch Esl auf ^^
  Mit Zitat antworten Zitat
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#5

Re: Fenster-Design

  Alt 8. Apr 2008, 19:05
Nee sry!
Gibt DOCH einen RGN_ERROR... -.-
Ursache ist mir jetzt jedoch nicht erklärlich ?!?

mfg 64Jabor
Sebastian
Unsren Clan im volle Lauf, hält weder Ochs noch Esl auf ^^
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Fenster-Design

  Alt 8. Apr 2008, 19:11
Tja, die Reihenfolge der Parameter ist falsch
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;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Fenster-Design

  Alt 8. Apr 2008, 19:13
Und davor noch das einfügen:HRes := CreateRectRgn(0, 0, ClientWidth, ClientHeight);
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
64Jabor

Registriert seit: 9. Jan 2008
158 Beiträge
 
Delphi 7 Personal
 
#8

Re: Fenster-Design

  Alt 8. Apr 2008, 19:40
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
Sebastian
Unsren Clan im volle Lauf, hält weder Ochs noch Esl auf ^^
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:08 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