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 Panel-Rahmen soll Window-Rahmen gleichen (https://www.delphipraxis.net/14173-panel-rahmen-soll-window-rahmen-gleichen.html)

TStringlist 3. Jan 2004 20:13


Panel-Rahmen soll Window-Rahmen gleichen
 
Hi all, ich hätte da mal eine kleine Frage bezüglich der Umrandung eines Panels, und zwar:

Wie müssen hier bei einem Panel die BevelInner/Outer-Properties oder eventuell die Border-Eigenschaften gewählt werden, um dass man dabei den gleichen schwarz-weiß-grau-Farbeffekte bekommt wie er bei einem Windowrahmen üblich ist? Und bei einem Window ist das:

äußerste Pixelschicht, links u. oben: Grau
äußerste Pixelschicht, rechts u. unten: Schwarz
zweite Pixelschicht, links u. oben: Weiß
zweite Pixelschicht, rechts u. unten: DunkelGrau

..oder wie kann man diesen Effekt sonst erreichen?
(eventuell indem ich den Rand direkt aufs Panel draufmale? (...nur wie ging das nochmal schnell?))

Thanks schonmal jetzte

sakura 3. Jan 2004 20:17

Re: Panel-Rahmen soll Window-Rahmen gleichen
 
Schau Dir mal den Beitrag inkl. Source Code an, damit solltest Du weiterkommen ;-)

http://www.delphipraxis.net/internal...=113119#113119

...:cat:...

TStringlist 3. Jan 2004 20:42

Re: Panel-Rahmen soll Window-Rahmen gleichen
 
Thx, aber die Tasten hatte ich schon. Es ging mir jetzt speziell nur um die graphische Umrandung des Panels, also um die zwei äußersten Pixelschalen. Das wird wahrscheinlich mit den von mir oben erwähnten Eigenschaften nicht gehen, oder? Wenn nein, sollte man den Rahmen dann direkt aufs Panel draufmalen, oder wäre es besser, pro Linie die ich da haben will, dort dann ein entsprechendes Image abzulegen?

sakura 4. Jan 2004 10:29

Re: Panel-Rahmen soll Window-Rahmen gleichen
 
War es schon, Du musst nur ein wenig den Code anpassen. Ich sagte ja auch nicht, daß dort die Lösung sei, sondern der Ansatz ;-)

Delphi-Quellcode:
procedure TPanelEx.CreateParams(var Params: TCreateParams);
begin
  inherited;
  // ETWAS WENIGER STYLE
  Params.Style := Params.Style or WS_THICKFRAME;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  with TPanelEx.Create(Self) do
  begin
    Left := 50;
    Top := 50;
    Width := 200;
    Height := 300;
    Parent := Self;
    // ETWAS WENIGER BEVEL
    BevelInner := bvNone;
    BevelOuter := bvNone;
  end;
end;
...:cat:...

TStringlist 4. Jan 2004 12:37

Re: Panel-Rahmen soll Window-Rahmen gleichen
 
ja klappt, thx!

Und WS_THICKFRAME ist jetzt wahrscheinlich auch der normale Style für diesen DIN-Rahmen eines Formulars? Supi auch diese CreateParams bzw. TCreateParams, war mir bisher alles völlig unbekannt.

(ich hatte den Rahmen inzwischen zwar schon aufs Panel draufgemalt -- mittels eines Canvas-Objektes und des umgebogenen WindowProc-Pointers des Panels, um mich an sein WM_Paint-Ereignis dranhängen zu können -- aber dieses ist natürlich jetzt trotzdem wieder viel umständlicher als deine Lösung.)

cool !


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