AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern

Ein Thema von Praxist · begonnen am 10. Aug 2008 · letzter Beitrag vom 11. Aug 2008
Antwort Antwort
Seite 2 von 4     12 34      
Praxist

Registriert seit: 6. Jul 2008
39 Beiträge
 
Delphi 7 Professional
 
#11

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern

  Alt 10. Aug 2008, 17:53
Es geht mit dem Vorschlag. Sollen aber alle BitBtns den selben Effekt haben ?
Wenn ich den Effekt für ein bestimtes Button zuweise, bekomme ich Fehler:
Undeclared BitBtn1 !
Bitbtn1.Font.Style := Bitbtn1.Font.Style + [fsBold];
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern

  Alt 10. Aug 2008, 18:02
Da muss man etwas weiter ausholen:
Delphi-Quellcode:
unit bla;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type

  TBitBtn = class(Buttons.TBitBtn)
  private
    FOnMouseEnter: TNotifyEvent;
    FOnMouseLeave: TNotifyEvent;
    procedure CMMOUSEENTER(var Msg: TMessage); message CM_MOUSEENTER;
    procedure CMMOUSELEAVE(var Msg: TMessage); message CM_MOUSELEAVE;
  public
    constructor Create(aOwner: TComponent); override;
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
  end;

  TForm1 = class(TForm)
    btn1: TBitBtn;
    btn2: TBitBtn;
    btn3: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure DoOnEnter(Sender: TObject);
    procedure DoOnLeave(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TBitBtn }

procedure TBitBtn.CMMOUSEENTER(var Msg: TMessage);
begin
  inherited;
  if Assigned(FOnMouseEnter) then
    FOnMouseEnter(Self);
end;

procedure TBitBtn.CMMOUSELEAVE(var Msg: TMessage);
begin
  inherited;
  if Assigned(FOnMouseLeave) then
    FOnMouseLeave(Self);
end;

constructor TBitBtn.Create(aOwner: TComponent);
begin
  inherited;
  FOnMouseEnter := nil;
  FOnMouseLeave := nil;
end;

procedure TForm1.DoOnEnter(Sender: TObject);
begin
  (Sender as TBitBtn).Font.Style := (Sender as TBitBtn).Font.Style + [fsBold];
end;

procedure TForm1.DoOnLeave(Sender: TObject);
begin
  (Sender as TBitBtn).Font.Style := (Sender as TBitBtn).Font.Style - [fsBold];
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  btn2.OnMouseEnter := DoOnEnter;
  btn2.OnMouseLeave := DoOnLeave;
end;

end.
Hier werden die beiden definierten Events nur für btn2 zugewiesen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Praxist

Registriert seit: 6. Jul 2008
39 Beiträge
 
Delphi 7 Professional
 
#13

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern

  Alt 10. Aug 2008, 18:28
Wie konnte ich für ein bestimmtes Btn ein bestimmtes Bild zuweisen ?
ImageList1.GetBitmap(2, Btn2.Glyph);
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern

  Alt 10. Aug 2008, 18:31
Schau Dir in meinem Beispiel mal DoOnEnter und DoOnLeave an. Statt die Schriftart zu ändern, kannst Du dort auch andere Bilder zuweisen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Praxist

Registriert seit: 6. Jul 2008
39 Beiträge
 
Delphi 7 Professional
 
#15

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern

  Alt 10. Aug 2008, 19:15
dort habe folgendes eingegeben
Delphi-Quellcode:
procedure TForm1.DoOnEnter(Sender: TObject);
begin
  //(Sender as TBitBtn).Font.Style := (Sender as TBitBtn).Font.Style + [fsBold];
  ImageList1.GetBitmap(1, Btn1.Glyph);
  ImageList1.GetBitmap(2, Btn2.Glyph);
end;
Aber die Bilder werden in alle Buttons angezeigt, wenn der Cursor auf ein Button kommt
Das Bild soll aber nur angezeigt, wenn der der Cursor auf sein Button kommt
Wie kann ich das machen ?
Vorteil mit diesem Code die Buttons glitzern nicht : )
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern

  Alt 10. Aug 2008, 19:18
Es kommt mir ein wenig so vor, als hättest Du das Prinzip nicht verstanden , oder wieso stehen da benannte Instanzen (Btn2 und Btn2)?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Praxist

Registriert seit: 6. Jul 2008
39 Beiträge
 
Delphi 7 Professional
 
#17

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern

  Alt 10. Aug 2008, 19:26
Nicht ganz
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#18

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern

  Alt 10. Aug 2008, 21:04
Also Praxist,

schau noch einmal in Beitrag #12 (hier nur ein Auszug mit Erläuterungen):
Delphi-Quellcode:
...
procedure TForm1.DoOnEnter(Sender: TObject);
begin
  //(Sender as TBitBtn).Font.Style := (Sender as TBitBtn).Font.Style + [fsBold];
  //das brauchst du nicht, vielmehr folgendes:
  ImageList1.GetBitmap(1, (Sender as TBitBtn).Glyph);
end;

procedure TForm1.DoOnLeave(Sender: TObject);
begin
  //(Sender as TBitBtn).Font.Style := (Sender as TBitBtn).Font.Style - [fsBold];
  //hier genau dasselbe nur eben das andere Bildchen
  //ich weiß ja jetzt nicht welches, aber ungefähr so eben:
  ImageList1.GetBitmap(2, (Sender as TBitBtn).Glyph);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  //und hier ist es ganz wichtig, dass du für alle
  //Bitbtns Enter und Leave zuweist!

  //also nicht nur
  btn2.OnMouseEnter := DoOnEnter;
  btn2.OnMouseLeave := DoOnLeave;

  //sondern auch:
  btn1.OnMouseEnter := DoOnEnter;
  btn1.OnMouseLeave := DoOnLeave;

  //wenn das zu viele Komponenten sind dann
  //verwende eine Schleife die alle Komponenten durchläuft
  //und es den Bitbtns zuweist,
  //das gehört dann aber nicht in diesen Thread
end;

end.
Ich hoffe das hilft, sieh es dir genau an.
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Praxist

Registriert seit: 6. Jul 2008
39 Beiträge
 
Delphi 7 Professional
 
#19

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern

  Alt 10. Aug 2008, 21:59
Du hast auch das Button nicht hingeschrieben !
Delphi-Quellcode:
  //das brauchst du nicht, vielmehr folgendes:
  ImageList1.GetBitmap(1, (Sender as TBitBtn).Glyph); // für welches Button ?
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#20

Re: Problem mit Buttons OnMouseEnter. Alle Buttons gläntzern

  Alt 10. Aug 2008, 22:02
Zitat von Praxist:
Du hast auch das Button nicht hingeschrieben !
Delphi-Quellcode:
  //das brauchst du nicht, vielmehr folgendes:
  ImageList1.GetBitmap(1, (Sender as TBitBtn).Glyph); // für welches Button ?
Das bestimmt der Sender, welcher Button das ist,
hast du den Code mal so probiert?
Vielleicht funktioniert es!?
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 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