Thema: Delphi Eigene Button Komponente

Einzelnen Beitrag anzeigen

zemi

Registriert seit: 1. Mär 2007
1 Beiträge
 
#13

Re: Eigene Button Komponente

  Alt 1. Mai 2007, 23:11
Hey .chicken, warum machst du das nich einfach folgendermaßen:
Delphi-Quellcode:
procedure Tmainform.button_layerMouseEnter(Sender: TObject);
begin
 button.Visible:=false;
 button_hover.Visible:=true;
end;

procedure Tmainform.button_layerMouseLeave(Sender: TObject);
begin
 if(button_hover.Visible)
  then button_hover.Visible:=false
  else button_down.Visible:=false;
 button.Visible:=true;
end;

procedure Tmainform.button_layerMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 button_down.Visible:=false;
 button_hover.Visible:=true;
end;

procedure Tmainform.FormCreate(Sender: TObject);
begin
  with button_layer.Picture.Bitmap do
   begin
    TransparentColor := Canvas.Pixels[1,1];
    TransparentMode := tmFixed;
   end;
end;

procedure Tmainform.button_layerMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 button_hover.Visible:=false;
 button_down.Visible:=true;
end;
Erklärung:
button = Grafik des Buttons
button_hover = Grafik des Buttons, wenn Maus drüber ist (onMouseEnter)
button_down = Grafik des Buttons, wenn Maus geklickt ist (onMouseDown)
button_layer = Unsichtbare Grafik, die Events (onmouseenter,...) regelt

Funktionsprinzip:
Es liegen 4 Grafiken übereinander in selber größe:
- 1 für die normale Ansicht mit dem Wert visible:=true;
- 2 weitere für hover und click effekt mit visible:=false;
- ganz oben die Transparente, also nicht Sichtbare Grafik
Die Transparente Grafik regelt mit ihren Events, welche Button-Grafik unter ihr angezeigt werden soll.

Das kannst du mit einem openPictureDlg verbinden und du hast, was du willst.
Der einzige Nachteil ist, dass für jeden Effekt des Buttons eine eigene Grafik existieren muss!

gruß ZeMi
  Mit Zitat antworten Zitat