AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Mit Message bestimmte Aktionen bei Komponenten ausführen
Thema durchsuchen
Ansicht
Themen-Optionen

Mit Message bestimmte Aktionen bei Komponenten ausführen

Ein Thema von RWarnecke · begonnen am 23. Aug 2008 · letzter Beitrag vom 23. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

Mit Message bestimmte Aktionen bei Komponenten ausführen

  Alt 23. Aug 2008, 00:08
Hallo zusammen,

ich würde gerne über Messages dementsprechend bei Buttons reagieren. Ich habe schon ein paar Beiträge zu Messages gelesen und schonmal soweit dieses Beispiel erstellt.
Delphi-Quellcode:
type
  TForm3 = class(TForm)
    Memo1: TMemo;
    SpeedButton1: TSpeedButton;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    procedure MyMessages(var Msg: TMsg; var Handled: Boolean);
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.FormCreate(Sender: TObject);
begin
  Application.OnMessage := MyMessages;
end;

procedure TForm3.MyMessages(var Msg: tagMSG; var Handled: Boolean);
var
  I: Integer;
begin
  case Msg.message of
    WM_LBUTTONDOWN:
      begin
        Memo1.Lines.Add('TestButton');
      end;
  end;
end;
Funktioniert auch alles soweit. Jetzt möchte ich aber zum Beispiel bei bestimmten Buttons das gleiche ausführen. Dazu ändere ich die Procedure MyMessages so ab :
Delphi-Quellcode:
procedure TForm3.MyMessages(var Msg: tagMSG; var Handled: Boolean);
var
  I: Integer;
begin
  case Msg.message of
    WM_LBUTTONDOWN:
      begin
        if TSpeedButton(Sender).Name = 'SpeedButton1then
          Memo1.Lines.Add('TestButton');
      end;
  end;
end;
Dann kommt immer undefinierter Bezeichner 'Sender'. Hier stellt sich mir die Frage wieso ?

Für eine Erklärung, einen Hinweis oder Links zu passenden Tutorials wäre ich dankbar.

Edit: Titel geändert
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Mit Message bestimmte Aktionen bei Komponenten ausführen

  Alt 23. Aug 2008, 01:49
Zitat von RWarnecke:
procedure TForm3.MyMessages(var Msg: tagMSG; var Handled: Boolean); Dann kommt immer undefinierter Bezeichner 'Sender'. Hier stellt sich mir die Frage wieso ?
Siehst du es jetzt? Die Methode MyMessages hat keinen Übergabeparameter namens Sender.
Bei Windows Messages gibt es nur Handles.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

Re: Mit Message bestimmte Aktionen bei Komponenten ausführen

  Alt 23. Aug 2008, 08:50
Zitat von sx2008:
Siehst du es jetzt? Die Methode MyMessages hat keinen Übergabeparameter namens Sender.
Ok, das habe ich jetzt kapiert. Ich muss den Sender immer übergeben, um dann damit arbeiten zu können.
Zitat von sx2008:
Bei Windows Messages gibt es nur Handles.
Jetzt stellt sich mir nur die Frage, wie mache ich das ganze über Handles ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#4

Re: Mit Message bestimmte Aktionen bei Komponenten ausführen

  Alt 23. Aug 2008, 09:38
Zitat von RWarnecke:
Jetzt stellt sich mir nur die Frage, wie mache ich das ganze über Handles ?
TSpeedButton haben kein Handle. Kannst Du nicht OnMouseDown verwenden?

Nachtrag:

Anstelle von TSpeedButton(Sender).Name kannst Du auch TSpeedButton(Sender).Tag verwenden.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#5

Re: Mit Message bestimmte Aktionen bei Komponenten ausführen

  Alt 23. Aug 2008, 13:33
Zitat von Garfield:
TSpeedButton haben kein Handle. Kannst Du nicht OnMouseDown verwenden?
Dann müsste ich dass aber für jeden Button einzeln machen.

Zitat von Garfield:
Anstelle von TSpeedButton(Sender).Name kannst Du auch TSpeedButton(Sender).Tag verwenden.
Geht doch nicht, da er den Sender nicht kennt.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

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

Re: Mit Message bestimmte Aktionen bei Komponenten ausführen

  Alt 23. Aug 2008, 13:51
Du kannst ja allen Buttons das gleiche OnMouseDown Ereignis zuweisen.
Thomas
  Mit Zitat antworten Zitat
Sidewinder
(Gast)

n/a Beiträge
 
#7

Re: Mit Message bestimmte Aktionen bei Komponenten ausführen

  Alt 23. Aug 2008, 14:15
ich denke er stellt sich das so vor:
Zitat:
Du kannst ja allen Buttons das gleiche OnMouseDown Ereignis zuweisen
Delphi-Quellcode:
Procedure onmousedown(Sender: TObject; Button: TMouseButton;
                      Shift: TShiftState; X, Y: Integer);
begin
  if (sender is Tspeedbutton) then
  begin
    case (sender as Tspeedbutton).Tag of
      0: {dosomething};
      1: {dosomething};
      2: {dosomething};
    else

    end;
  end;
end;
damit kann man auf die messages verzichten...
aber nicht vergessen... jeder speedbutton braucht
einen anderen tag-wert...
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#8

Re: Mit Message bestimmte Aktionen bei Komponenten ausführen

  Alt 23. Aug 2008, 14:35
Ja, so ungefähr stelle ich es mir vor. Nur möchte ich das ganze über die Messages machen, da ich auch eigene Messages verarbeiten will. Wenn mich nicht alles täuscht, hat doch die Komponente TButton ein Handle oder irre ich mich da ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

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

Re: Mit Message bestimmte Aktionen bei Komponenten ausführen

  Alt 23. Aug 2008, 14:59
Zitat von RWarnecke:
Wenn mich nicht alles täuscht, hat doch die Komponente TButton ein Handle oder irre ich mich da ?
Ja, hat es.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#10

Re: Mit Message bestimmte Aktionen bei Komponenten ausführen

  Alt 23. Aug 2008, 15:34
Ok, dass mit den Handle's habe ich jetzt hinbekommen. Da sage ich schonmal danke. Jetzt ist nur noch die Frage, ob ich genau in der Procedure MyMessages eine Message abfangen kann und nicht an die Komponente weiterleite. Wenn ja, wie mache ich das ? Ausgangspunkt sind TButtons.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:30 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