Autor Beitrag
Pixelex
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Fr 21.11.08 17:04 
Hallo!

Ich möchte derzeit die Button-Optik meines Programmes ein wenig verschönern. Derzeit nutze ich recht häufig den Jedi-Speedbutton (JVSpeedBtn), allerdings sieht der halt noch recht altmodisch aus. Wie auf dem Screenshot angehangen links. Ich möchte nun das mein Button Flat ist, diese Einstellung hat der JVSpeedBtn zwar, allerdings ist er dann ganz unsichtbar und nur wenn ich mit der Maus drübergehe sieht er aus wie ich ihn haben möchte. Ich will es so wie rechts auf dem Screenshot. Da bin ich grad mit der Maus über den Button gefahren. Ich will aber das er immer so aussieht und nicht erst wenn ich mit der Maus drüberfahre. Gibts da eine Lösung für? Smile Ich nutze Delphi 7 Pro.

PS: Es gibt zwar eine Komponente die heisst FlatButton, die hilft mir allerdings nicht so weiter, da bei dieser die Optik zwar passt, aber leider dieser schäbige schwarze und gepunktete Focusrahmen auf dem Button liegt wenn diese aktiv wird.

www.pixelex.net/stuff/sb.gif


MfG,

// Pixelex
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Sa 22.11.08 10:17 
nehme doch ein Panel...die MouseEvents kriegst du analog wie beim Image rein:
unit AdvImage;

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
unit AdvPanel;

interface

uses ExtCtrls,Classes,Messages ;

const
  WM_MouseEnter = $B013;
  WM_MouseLeave = $B014;

type
  TAdvPanel = class(TPanel)
  private
    FOnMouseLeave: TNotifyEvent;
    FOnMouseEnter: TNotifyEvent;
    procedure WM_MouseEnter(var Msg: TMessage); message WM_MouseEnter;
    procedure WM_MouseLeave(var Msg: TMessage); message WM_MouseLeave;
    procedure SetOnMouseEnter(const Value: TNotifyEvent);
    procedure SetOnMouseLeave(const Value: TNotifyEvent);
  published
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write SetOnMouseEnter;
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write SetOnMouseLeave;
  end;

{ TAdvPanel }
implementation

procedure TAdvPanel.WM_MouseLeave(var Msg: TMessage);

begin
  if Assigned(FOnMouseLeave) then
    FOnMouseLeave(self);
end;

procedure TAdvPanel.WM_MouseEnter(var Msg: TMessage);
begin
  if Assigned(FOnMouseEnter) then
    FOnMouseEnter(self);
end;

procedure TAdvPanel.SetOnMouseEnter(const Value: TNotifyEvent);
begin
  FOnMouseEnter := Value;
end;

procedure TAdvPanel.SetOnMouseLeave(const Value: TNotifyEvent);
begin
  FOnMouseLeave := Value;
end;
end.


Im MouseEnter kannst du es dann Lowered machen z.B. und im MouseLeave wieder normal

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Sa 22.11.08 10:30 

_________________
Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)