Pixelex - Fr 21.11.08 17:04
Titel: SpeedButton in Flat, aber immer sichtbar?
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.
http://www.pixelex.net/stuff/sb.gif
MfG,
// Pixelex
Xion - Sa 22.11.08 10:17
nehme doch ein Panel...die MouseEvents kriegst du analog wie beim Image rein:
unit AdvImage;
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;
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