AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vererben von OnClick Eigenschaften

Ein Thema von endeffects · begonnen am 1. Nov 2008 · letzter Beitrag vom 1. Nov 2008
Antwort Antwort
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#1

Vererben von OnClick Eigenschaften

  Alt 1. Nov 2008, 13:16
Hallo,

ich habe ein Problem mit dem Verereben von Eigenschaften.
Ich habe mehrere TPanels zu Buttons umfunktioniert.
Jedes Panel enthält ein Bild und ein Label, beim klicken
auf das Panel verändert ich eine Panel Eigenschaft.

Hier würde ich gerne das MouseDown und MouseUp Event in
einer bzw zwei Methoden zusammenfassen um meinen Code
nicht unnötig aufzuschwemmen indem ich jedem Panel
einzelnd diese Events zuweise.

Das nächste Problem habe ich mit den Bildern und den Labels,
die leiten bei einem Klick das MouseDown/Up Event natürlich
nicht an das Panel weiter, was nicht nur störend ist sondern
der Funktion als Button so gar nicht entspricht.

Delphi-Quellcode:
unit MainForm;

interface

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

type
  TPanel = class(ExtCtrls.TPanel)
  private
    { Private-Deklarationen } 
    FOnMouseEnter: TNotifyEvent;
    FOnMouseLeave: TNotifyEvent;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  protected
    { Protected-Deklarationen } 
  public
    property Canvas;
    property TabOrder;
    property TabStop;
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
  end;
  TMain = class(TForm)
    imgButler: TImage;
    pnLeftBar: TPanel;
    pnTopBar: TPanel;
    imgIcon1: TImage;
    pnMain: TPanel;
    Label1: TLabel;
    lbDescription1: TLabel;
    sbMain: TScrollBox;
    Label3: TLabel;
    pnMenu1: TPanel;
    pnMenu2: TPanel;
    imgIcon2: TImage;
    lbDescription2: TLabel;
    pnMenu3: TPanel;
    imgIcon3: TImage;
    lbDescription3: TLabel;
    pnMenu4: TPanel;
    imgIcon4: TImage;
    lbDescription4: TLabel;
    pnMenu5: TPanel;
    imgIcon5: TImage;
    lbDescription5: TLabel;
    pnMenu6: TPanel;
    imgIcon6: TImage;
    lbDescription6: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure pnMenu1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure pnMenu3MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure pnMenu5MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure pnMenu2MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure pnMenu4MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure pnMenu6MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure pnMenu1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure pnMenu3MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure pnMenu5MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure pnMenu2MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure pnMenu4MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure pnMenu6MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private-Deklarationen }
    procedure PanelMouseEnter(Sender: TObject);
    procedure PanelMouseLeave(Sender: TObject);
    procedure PanelMouseUp(Sender: TObject);
    procedure PanelMouseDown(Sender: TObject);
  public
    { Public-Deklarationen }
  end;

var
  Main: TMain;

implementation

{$R *.dfm}

procedure TPanel.CMMouseEnter(var Message: TMessage);
begin
  if assigned(FOnMouseEnter) then
    FOnMouseEnter(Self);
end;

procedure TPanel.CMMouseLeave(var Message: TMessage);
begin
  if assigned(FOnMouseLeave) then
    FOnMouseLeave(Self);
end;

procedure TMain.PanelMouseEnter(Sender: TObject);
begin
  if Sender is TPanel then
  begin
    TPanel(Sender).BevelOuter:= bvRaised;
  end;
end;

procedure TMain.PanelMouseLeave(Sender: TObject);
begin
  if Sender is TPanel then
  begin
    TPanel(Sender).BevelOuter:= bvNone;
  end;
end;

procedure TMain.PanelMouseDown(Sender: TObject);
begin
  if Sender is TPanel then
  begin
    TPanel(Sender).BevelOuter:= bvLowered;
  end;
end;

procedure TMain.PanelMouseUp(Sender: TObject);
begin
  if Sender is TPanel then
  begin
    TPanel(Sender).BevelOuter:= bvNone;
  end;
end;

procedure TMain.FormCreate(Sender: TObject);
begin
  pnMenu1.OnMouseEnter:= PanelMouseEnter;
  pnMenu1.OnMouseLeave:= PanelMouseLeave;
  pnMenu2.OnMouseEnter:= PanelMouseEnter;
  pnMenu2.OnMouseLeave:= PanelMouseLeave;
  pnMenu3.OnMouseEnter:= PanelMouseEnter;
  pnMenu3.OnMouseLeave:= PanelMouseLeave;
  pnMenu4.OnMouseEnter:= PanelMouseEnter;
  pnMenu4.OnMouseLeave:= PanelMouseLeave;
  pnMenu5.OnMouseEnter:= PanelMouseEnter;
  pnMenu5.OnMouseLeave:= PanelMouseLeave;
  pnMenu6.OnMouseEnter:= PanelMouseEnter;
  pnMenu6.OnMouseLeave:= PanelMouseLeave;
end;

procedure TMain.pnMenu1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PanelMouseDown(Sender);
end;

procedure TMain.pnMenu2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PanelMouseDown(Sender);
end;

procedure TMain.pnMenu3MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PanelMouseDown(Sender);
end;

procedure TMain.pnMenu4MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PanelMouseDown(Sender);
end;

procedure TMain.pnMenu5MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PanelMouseDown(Sender);
end;

procedure TMain.pnMenu6MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PanelMouseDown(Sender);
end;

procedure TMain.pnMenu1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PanelMouseUp(Sender);
end;

procedure TMain.pnMenu2MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PanelMouseUp(Sender);
end;

procedure TMain.pnMenu3MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PanelMouseUp(Sender);
end;

procedure TMain.pnMenu4MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PanelMouseUp(Sender);
end;

procedure TMain.pnMenu5MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PanelMouseUp(Sender);
end;

procedure TMain.pnMenu6MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  PanelMouseUp(Sender);
end;

end.
Ich weiß natürlich das es entsprechende Buttons als Komponenten usw gibt,
aber die entsprechen nicht unbedingt den Design Vorstellungen die ich habe.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Vererben von OnClick Eigenschaften

  Alt 1. Nov 2008, 14:06
Hallo

Nimm ein array of TPanel
Thomas
  Mit Zitat antworten Zitat
endeffects

Registriert seit: 27. Jun 2004
450 Beiträge
 
#3

Re: Vererben von OnClick Eigenschaften

  Alt 1. Nov 2008, 14:58
vielen Dank für die Antwort, leider weiß ich
nicht so genau wie ich das anstellen soll
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:45 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