Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Runde Schaltflächen (https://www.delphipraxis.net/2507-runde-schaltflaechen.html)

FBrust 26. Jan 2003 19:48


Runde Schaltflächen
 
Hallo,

kennt jemand eine Komponente, mit der man seinem Programm (z. B.) runde Schaltflächen verpassen kann?

Grüsse
Frank

fedderle 26. Jan 2003 19:56

So spontan würde ich sagen, das man das sehr gut mit Images machen kann. Einfach Images erstellen, die so aussehen wie die gewünschte Schaltfläche und die Hintergrundfarbe des Images als unsichtbar einstellen!

Hab das selber noch nie gemacht. Aber es Müsste so gehen! Gibt sicher auch noch bessere Lösungen! Bin selbst noch ANfänger in Delphi!

Steffen!

Hansa 26. Jan 2003 19:57

Hi,

im alten Delphi-Forum war darüber was zu finden. Gehen tut es schon. Vielleicht erinnert sich sonst noch jemand daran.

Gruß
Hansa

Hansa 26. Jan 2003 19:59

Also es ging ziemlich einfach, nicht so kompliziert, wie Fedderle schreibt. Leider weiß ich trotzdem nicht, wie es genau ging.

Gruß
Hansa

Sebastian Nintemann 26. Jan 2003 20:02

Hi Frank, versuch mal das:

Delphi-Quellcode:
var
  rgn : hRgn;
begin
  rgn := CreateEllipticRgn(10,10,Button1.Width,Button1.Height);
  SetWindowRgn(Button1.Handle,rgn,true)
Gruß, Sebastian

fedderle 27. Jan 2003 12:46

Ok! Gebe zu. Da war meine Methode doch viel komplizierter.
Geht das auch mit der ganzen Form. Also, das ich ne Runde Form erstellen kann?

Steffen!

FBrust 27. Jan 2003 21:45

Hallo Leute,

vielen Dank für Eure Antworten.

Ich hab in der Zwischenzeit etwas rumprobiert, aber nichts davon gefällt mir.

Ich hab noch einen Komponentensatz für Flat-Buttons etc., dann werd ich eben den nehmen.

Grüsse
Frank

Daniel B 27. Jan 2003 21:51

Zitat:

Zitat von fedderle
Geht das auch mit der ganzen Form. Also, das ich ne Runde Form erstellen kann?

Siehe Library: WinApi, der erste und der vierte Beitrag von mir.

Noch ein paar möglichkeiten:

Explosion:
Delphi-Quellcode:
Var
     P:Array[0..24] of TPoint;
     CLFRgn:HRgn;
Begin
     P[0]:=Point(0,0);
     P[1]:=Point(50,Form1.Height div 6);
     P[2]:=Point(0,2*(Form1.Height div 6));
     P[3]:=Point(50,3*(Form1.Height div 6));
     P[4]:=Point(0,4*(Form1.Height div 6));
     P[5]:=Point(50,5*(Form1.Height div 6));
     P[6]:=Point(0,Form1.Height);
     P[7]:=Point(Form1.Width div 6,Form1.Height -50);
     P[8]:=Point(2*(Form1.Width div 6),Form1.Height);
     P[9]:=Point(3 *(Form1.Width div 6),Form1.Height -50);
     P[10]:=Point(4*(Form1.Width div 6),Form1.Height);
     P[11]:=Point(5 *(Form1.Width div 6),Form1.Height -50);
     P[12]:=Point(Form1.Width,Form1.Height);
     P[13]:=Point(Form1.Width-50,5*(Form1.Height div 6));
     P[14]:=Point(Form1.Width,4*(Form1.Height div 6));
     P[15]:=Point(Form1.Width-50,3*(Form1.Height div 6));
     P[16]:=Point(Form1.Width,2*(Form1.Height div 6));
     P[17]:=Point(Form1.Width-50,Form1.Height div 6);
     P[18]:=Point(Form1.Width,0);
     P[19]:=Point(5*(Form1.Width div 6),50);
     P[20]:=Point(4*(Form1.Width div 6),0);
     P[21]:=Point(3*(Form1.Width div 6),50);
     P[22]:=Point(2*(Form1.Width div 6),0);
     P[23]:=Point(Form1.Width div 6,50);
     P[24]:=Point(0,0);
     CLFRgn:=CreatePolygonRgn(P,24,Alternate);
     SetWindowRgn(Form1.Handle,CLFRgn,True);
End;
Schatteneffekt:
Delphi-Quellcode:
Var
     CLFRgn:HRgn;
     CLFRgnTmp:HRgn;
Begin
     CLFRgn:=CreateRectRgn(0,0,Form1.Width-10,Form1.Height-10);
     CLFRgnTmp:=CreateRectRgn(10,10,Form1.Width,Form1.Height);
     CombineRgn(CLFRgn,CLFRgn,CLFRgnTmp,RGN_OR);
     SetWindowRgn(Form1.Handle,CLFRgn,True);
End;
Schöne Titelleiste:
Delphi-Quellcode:
Var
     CLFRgn:HRgn;
     CLFRgnTmp:HRgn;
Begin
     CLFRgn:=CreateRectRgn(0,0,Form1.Width,Form1.Height);
     CLFRgnTmp:=CreateRectRgn(10,10,Form1.Width-10,30);
     CombineRgn(CLFRgn,CLFRgn,CLFRgnTmp,RGN_DIFF);
     CLFRgnTmp:=CreateRectRgn((Form1.Width div 2)-5,10,(Form1.Width div 2)+10,30);
     CombineRgn(CLFRgn,CLFRgn,CLFRgnTmp,RGN_OR);
     CLFRgnTmp:=CreateRectRgn(10,18,Form1.Width-10,22);
     CombineRgn(CLFRgn,CLFRgn,CLFRgnTmp,RGN_OR);
     CLFRgnTmp:=CreateRectRgn(12,12,Form1.Width-12,28);
     CombineRgn(CLFRgn,CLFRgn,CLFRgnTmp,RGN_OR);
     SetWindowRgn(Form1.Handle,CLFRgn,True);
End;
Rechteck auf rechteck:
Delphi-Quellcode:
Var
     CLFRgn:HRgn;
     CLFRgnTmp:HRgn;
Begin
     CLFRgn:=CreateRectRgn(0,30,Form1.Width-30,Form1.Height);
     CLFRgnTmp:=CreateRectRgn(Form1.Width-80,0,Form1.Width,60);
     CombineRgn(CLFRgn,CLFRgn,CLFRgnTmp,RGN_OR);
     SetWindowRgn(Form1.Handle,CLFRgn,True);
End;
Trapezformen hätte ich noch, musst nur sagen auf welcher Seite die schmale Seite sein soll...

Grüsse, Daniel :hi:

Luckie 27. Jan 2003 22:39

Werden bei der Titelleiste auch die Systemeinstellungen berücksichtig? Also manche haben eine dickeren rand eingstellt, manche einen dünneren und so wieter.

Wenn man WM_NCPAINT abfängt, bekommt man übrigens auch einen HDC auf den nonClient-Bereich des Fensters. Und wenn die Nachricht kommt, muß man auch zeichnen.

Daniel B 27. Jan 2003 22:42

Zitat:

Zitat von Luckie
Werden bei der Titelleiste auch die Systemeinstellungen berücksichtig? Also manche haben eine dickeren rand eingstellt, manche einen dünneren und so wieter.

Das ist ja auch nur was zum Spielen, wer "verbaut" schon sowas in seine Programme?!?

Grüsse, Daniel :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 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