Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Eigene Event-Handler für Objekte zur Laufzeit (https://www.delphipraxis.net/50518-eigene-event-handler-fuer-objekte-zur-laufzeit.html)

odin1337 27. Jul 2005 00:00


Eigene Event-Handler für Objekte zur Laufzeit
 
mit dem Problem schlage ich mich nun schon einen geschlagenen Tag rum, naja komme nicht 1 Byte weiter.

die folgende Funktion ist eigentlich immer wunderbar in der Lage Mitteilungen auf dem Bildschirm auszugeben.
Sie dient mir als Antwort auf gedrückte Tastaturkürzel, wie Lautstärke lauter, leiser und sowas.

Leider habe ich das Problem, dass um die Statusmeldung ein neues Form zur Laufzeit generiert wird und wenn ich nun in einem Spiel bin und ein Lied in Winamp weiter skippe und dann zufällig auf den Bestätigungstext klicke, fliege ich aus dem Spiel raus.

Ich würde nun gerne ein generierten Form ein OnClick erereignis zuweisen, um dann sofort wieder dem Spiel SetWindowForeground() zuzuweisen, leider ist bisher alles gescheitert, meinem TempForm ein OnClick := Bla
Ereignis zuzweisen.

Ich hoffe jemand hat eine Idee für meinen Quelltext.


Lieber Gruß odin

Delphi-Quellcode:
procedure Out2Screen(X, Y, Duration : Integer; FontName : String; FontColor : TColor; FontSize : Byte; ShowText : String);
var
 TempTime : Cardinal;
 TempForm : TForm;
begin
   TempForm := TForm.Create(Form1);
   with TempForm do
    begin
     BorderStyle := bsNone;
     Brush.Style := bsClear;
     with Canvas do
      begin
        Font.Name := FontName;
        Font.Color := FontColor;
        Brush.Style := bsclear;
        Font.Size  := FontSize;
        Font.Style := [fsBold];
        Width := TextWidth(ShowText);
        Height := TextHeight(ShowText);
        Left := round(X-(Width/2));
        Top := round(Y-(Height/2));
      end;
     Show;
     SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
     TempTime := GetTickCount;
     repeat
      Canvas.TextOut(0, 0, ShowText);
     until (GetTickCount-TempTime >= Duration);
     Hide;
     FreeAndNil(TempForm);
    end;
end;

marabu 27. Jul 2005 07:26

Re: Eigene Event-Handler für Objekte zur Laufzeit
 
Hallo odin,

herzlich willkomen in der Delphi-PRAXiS.

um einer Form einen onClick() event handler zuweisen zu können, musst du einen Methodenzeiger übergeben, nicht irgendeine procedure. Am besten ist es, wenn du ein von TForm abgeleitetes Formular TMyForm entwirfst und dort den event-handler im private Abschnitt deklarierst. Im OnCreate() kannst du dann den handler der Eigenschaft OnClick zuweisen.

Grüße vom marabu


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