Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Vererben von OnClick Eigenschaften (https://www.delphipraxis.net/123415-vererben-von-onclick-eigenschaften.html)

endeffects 1. Nov 2008 13:16


Vererben von OnClick Eigenschaften
 
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.

toms 1. Nov 2008 14:06

Re: Vererben von OnClick Eigenschaften
 
Hallo

Nimm ein array of TPanel

endeffects 1. Nov 2008 14:58

Re: Vererben von OnClick Eigenschaften
 
vielen Dank für die Antwort, leider weiß ich
nicht so genau wie ich das anstellen soll


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:32 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