Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   TFRame Events während der Laufzeit erzeugen (https://www.delphipraxis.net/186982-tframe-events-waehrend-der-laufzeit-erzeugen.html)

decibel666 19. Okt 2015 08:38


TFRame Events während der Laufzeit erzeugen
 
Hallo!

Ich habe eine Form welche auf ButtonClick während der Laufzeit ein Frame erzeugt und dieses mit Elementen befüllt. Das alles funktioniert einwandfrei!
Ich hätte aber jetzt gerne auf einem erzeugten Label im Frame folgende Events:
onclick + onmouseenter + onmouseleave;

Der label wird folgendermassen erzeugt :

framelabel[i] := TLabel.Create(Frame21);
framelabel[i].Parent := Frame21;

wie kann ich auf dieses im Frame während der Laufzeit erzeugten label die events onclick + onmouseenter + onmouseleave legen ? Meine Delphi Version ist 7.0!

vielen Dank
DeCi

Sir Rufo 19. Okt 2015 08:47

AW: TFRame Events während der Laufzeit erzeugen
 
Wenn die Controls im Frame selber erzeugt werden, dann sollte der Code so aussehen:
Delphi-Quellcode:
procedure TFrameX.foo;
var
  currentLabel: TLabel;
begin
  currentLabel := TLabel.Create( Self ); // Self verwenden!
  currentLabel.Parent := Self; // Self verwenden!
  currentLabel.OnClick := ...
end;

decibel666 19. Okt 2015 09:10

AW: TFRame Events während der Laufzeit erzeugen
 
Super Danke funktioniert !

Manchmal sieht man den Wald vor lauter Bäumen nicht ;P


Eine Frage hätte ich trotzdem noch ! Wie kann ich das Mausrad (mousewheel) im erzeugten Frame aktivieren damit ich mit der Maus scrollen kann ?


DeCi

decibel666 21. Okt 2015 10:13

AW: TFRame Events während der Laufzeit erzeugen
 
Ich habe da jetzt folgendes gefunden :

Code:
type
  TMainForm = class(TForm)
  private
    procedure MouseWheelHandler(var AMessage: TMessage); override;
  public
    { Public declarations }
  end;

implementation

procedure TMainForm.MouseWheelHandler(var AMessage: TMessage);
var
  Control: TWinControl;
begin
  Control := FindVCLWindow(SmallPointToPoint(TWMMouseWheel(AMessage).Pos));
  if Assigned(Control) then
  begin
    AMessage.Result := Control.Perform(CM_MOUSEWHEEL, AMessage.WParam,
      AMessage.LParam);
    if AMessage.Result = 0 then
      Control.DefaultHandler(AMessage);
  end
  else
    inherited MouseWheelHandler(AMessage);
end;

produziert aber leider einen Stackoverflow...

Union 21. Okt 2015 10:21

AW: TFRame Events während der Laufzeit erzeugen
 
Und was hat das mit dem Thema zu tun?

decibel666 21. Okt 2015 11:23

AW: TFRame Events während der Laufzeit erzeugen
 
Ich hatte ja gerschrieben :

Eine Frage hätte ich trotzdem noch ! Wie kann ich das Mausrad (mousewheel) im erzeugten Frame aktivieren damit ich mit der Maus scrollen kann ?

Sorry, soll ich einen neuen Beitrag dazu aufmachen ?

Union 21. Okt 2015 12:15

AW: TFRame Events während der Laufzeit erzeugen
 
Ja, das wäre total lieb. Die Antworten hier im Forum dienen ja auch als Nachschlagewerk ud Dinge sind dann einfacher zu finden.


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