Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Nachricht senden (https://www.delphipraxis.net/98575-nachricht-senden.html)

GroHae 29. Aug 2007 10:46


Nachricht senden
 
Hallo zusammen,

ich habe von TForm ein Ableitung gemacht

Delphi-Quellcode:
type

  TFibuWin = class(TForm)
  private
    tlbrFirmenauswahl: TToolBar;
    FFMToolbutton: TToolbutton;
    STBToolbutton: TToolbutton;
    TMAToolbutton: TToolbutton;
    SGSToolbutton: TToolbutton;
    BFTToolbutton: TToolbutton;
  ...


// ----------------------------
// Wird aufgerufen, wenn auf einen der Buttons geklickt wird.
// ----------------------------
procedure TFibuWin.SetActWindowFirma(Sender: TObject);
begin
  if Sender is TToolButton then begin
     ActFirmenStr := TToolbutton(Sender).Caption;
  end;
  SetFirmaChg(true);
end;
Dann gibt es ein TfrmDebitoren = class(TFibuWin).

Wie kann ich dafür sorgen, dass Wenn ein ToolButton gedrückt wird, mein frmDebitor eine Nachricht bekommt. Im Moment behelfe ich mir mit dem Trick, dass ich das Ereignis OnMouseEnter vom frmDebitor verwende.

Anders ausgedrückt: Wie kann ich ein Ereignis erstellen OnToolButtonPress erstellen?

s-off 29. Aug 2007 10:49

Re: Nachricht senden
 
Zitat:

Zitat von GroHae
Anders ausgedrückt: Wie kann ich ein Ereignis erstellen OnToolButtonPress erstellen?

Ein TToolbutton hat doch das Event 'OnClick'

GroHae 29. Aug 2007 11:05

Re: Nachricht senden
 
Das OnClick verwende ich ja schon um TToolbutton hat doch das Event 'OnClick' SetActWindowFirma() aufzurufen

Delphi-Quellcode:
    BFTToolbutton.OnClick := SetActWindowFirma;
:idea: Aber könnte ja eine eine Methode
ButtonPressed; virtual; abstract;
erstellen, welche ich dann im eigentlichen Fenster frmDebitor überschreiben muss

Mal Ausprobieren...

GroHae 29. Aug 2007 11:25

Re: Nachricht senden
 
Klappt :-D

Danke für den Gedankenanstoß :thumb:

Ich stell mal meinen Quellcode rein. Das erste mal dass ich sowas programmiere.

Wenn wer Verbesserungsvorschläge hat, nur zu!


Delphi-Quellcode:

unit FibuWindow;

interface

uses
  SysUtils, Classes, Controls, Forms, ComCtrls, ExtCtrls;

type

  TFibuWin = class(TForm)
  private
    tlbrFirmenauswahl: TToolBar;
    FFMToolbutton: TToolbutton;
    STBToolbutton: TToolbutton;
    TMAToolbutton: TToolbutton;
    SGSToolbutton: TToolbutton;
    BFTToolbutton: TToolbutton;
    FFFM: boolean;
    FSTB: boolean;
    FTMA: boolean;
    FSGS: boolean;
    FBFT: boolean;
    procedure SetFirmaChg(const Value: boolean);
    function GetFirmaChg : boolean;
    procedure SetFFM(const Value: boolean);
    procedure SetBFT(const Value: boolean);
    procedure SetSGS(const Value: boolean);
    procedure SetSTB(const Value: boolean);
    procedure SetTMA(const Value: boolean);
  protected
    FFirmaChg : boolean;
    ActFirmenStr : string;
    BreiteButtom : integer;
    procedure ButtonPressed; virtual; abstract; // Muss überschrieben werden, damit die Daten der Firma gelesen werden
    procedure SetActWindowFirma(Sender: TObject); // ruft ButtonPressed
    procedure SetLeftFirmenauswahl;
    function GetActWindowFirma : string;
  public
    constructor Create(AOwner: TComponent); override;
    property FirmaChg : boolean read GetFirmaChg write SetFirmaChg;
    property FFM: boolean write SetFFM;
    property TMA: boolean write SetTMA;
    property STB: boolean write SetSTB;
    property SGS: boolean write SetSGS;
    property BFT: boolean write SetBFT;
  end;

implementation

uses Graphics;

{ TFibuWin }

// ----------------------------
// Erstellen des Frames mit den Schalten für die einzelnen Firmen
// ----------------------------
constructor TFibuWin.Create(AOwner: TComponent);
begin
  inherited create(AOwner);

  // Toolbar für die einzelnen Firmen
  tlbrFirmenauswahl := TToolBar.Create(Self);
  tlbrFirmenauswahl.Parent := Self;
  tlbrFirmenauswahl.Top := 0;
  tlbrFirmenauswahl.Left := Self.Width - 30;
  tlbrFirmenauswahl.Height := 25;
  tlbrFirmenauswahl.Width := 5;
  tlbrFirmenauswahl.Color := clSkyBlue;
  tlbrFirmenauswahl.Align := alNone;
  tlbrFirmenauswahl.Anchors := [akTop,akRight];
  tlbrFirmenauswahl.ShowCaptions := true;
  tlbrFirmenauswahl.Show;
  BreiteButtom := 30;

  FFFM := false;
  FSTB := false;
  FTMA := false;
  FSGS := false;
  FBFT := false;
end;

// ----------------------------
// Rückgabe der aktuellen Firma
// ----------------------------
function TFibuWin.GetActWindowFirma: string;
begin
  result := ActFirmenStr;
end;

// ----------------------------
// Rückgabe ob die aktuelle Firma gewechselt wurde
// ----------------------------
function TFibuWin.GetFirmaChg: boolean;
begin
  result := FFirmaChg;
end;

// ----------------------------
// Wird aufgerufen, wenn auf einen der Buttons geklickt wird.
// ----------------------------
procedure TFibuWin.SetActWindowFirma(Sender: TObject);
begin
  if Sender is TToolButton then begin
     ActFirmenStr := TToolbutton(Sender).Caption;
  end;
  SetFirmaChg(true);
  ButtonPressed;
end;

// ----------------------------
// Frmenwechsel setzen. Aktuelle Firma hat sich geändert
// ----------------------------
procedure TFibuWin.SetFirmaChg(const Value: boolean);
begin
  FFirmaChg := Value;
end;

// ---------------------------
// Firma einschalten und ToolButton für BFT erstellen
// ---------------------------
procedure TFibuWin.SetBFT(const Value: boolean);
begin

  FBFT := Value;

  // Schalter für BFT
  if FBFT then
  begin
    tlbrFirmenauswahl.Width := tlbrFirmenauswahl.Width + BreiteButtom;
    BFTToolbutton := TToolbutton.Create(self);
    BFTToolbutton.Caption := 'BFT';
    BFTToolbutton.Parent := tlbrFirmenauswahl;
    BFTToolbutton.OnClick := SetActWindowFirma;
    BFTToolbutton.Show;
    SetLeftFirmenauswahl;
  end;

end;

// ---------------------------
// Firma einschalten und ToolButton für FFM erstellen
// ---------------------------
procedure TFibuWin.SetFFM(const Value: boolean);
begin
  FFFM := value;

  // Schalter für FFM
  if FFFM then
  begin
    tlbrFirmenauswahl.Width := tlbrFirmenauswahl.Width + BreiteButtom;
    FFMToolbutton := TToolbutton.Create(self);
    FFMToolbutton.Caption := 'FFM';
    FFMToolbutton.Parent := tlbrFirmenauswahl;
    FFMToolbutton.OnClick := SetActWindowFirma;
    FFMToolbutton.Show;
    SetLeftFirmenauswahl;
  end;

end;

// ---------------------------
// Firma einschalten und ToolButton für SGS erstellen
// ---------------------------
procedure TFibuWin.SetSGS(const Value: boolean);
begin
  FSGS := Value;

  // Schalter für SGS
  if FSGS then
  begin
    tlbrFirmenauswahl.Width := tlbrFirmenauswahl.Width + BreiteButtom;
    SGSToolbutton := TToolbutton.Create(self);
    SGSToolbutton.Caption := 'SGS';
    SGSToolbutton.Parent := tlbrFirmenauswahl;
    SGSToolbutton.OnClick := SetActWindowFirma;
    SGSToolbutton.Show;
    SetLeftFirmenauswahl;
  end;

end;

// ---------------------------
// Firma einschalten und ToolButton für STB erstellen
// ---------------------------
procedure TFibuWin.SetSTB(const Value: boolean);
begin
  FSTB := Value;
  // Schalter für STB
  if FSTB then
  begin
    tlbrFirmenauswahl.Width := tlbrFirmenauswahl.Width + BreiteButtom;
    STBToolbutton := TToolbutton.Create(self);
    STBToolbutton.Caption := 'STB';
    STBToolbutton.Parent := tlbrFirmenauswahl;
    STBToolbutton.OnClick := SetActWindowFirma;
    STBToolbutton.Show;
    SetLeftFirmenauswahl;
  end;
end;

// ---------------------------
// Firma einschalten und ToolButton für TMA erstellen
// ---------------------------
procedure TFibuWin.SetTMA(const Value: boolean);
begin
  FTMA := Value;

  // Schalter für TMA
  if FTMA then
  begin
    tlbrFirmenauswahl.Width := tlbrFirmenauswahl.Width + BreiteButtom;
    TMAToolbutton := TToolbutton.Create(self);
    TMAToolbutton.Caption := 'TMA';
    TMAToolbutton.Parent := tlbrFirmenauswahl;
    TMAToolbutton.OnClick := SetActWindowFirma;
    TMAToolbutton.Show;
    SetLeftFirmenauswahl;
  end;

end;

// ---------------------------
// Linke Position der Firmenauswahl setzen
// ---------------------------
procedure TFibuWin.SetLeftFirmenauswahl;
begin
  tlbrFirmenauswahl.Left := Self.Width - tlbrFirmenauswahl.Width;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz