Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

proceduren (Events) aus Interface

  Alt 4. Sep 2016, 12:51
Um nicht raten zu müssen welche Events für ein Fenster verwendet werden müssen
möchte ich die Proceduren für die Events über mein Interface veröffentlichen.

Geht das?

Das funktioniert nicht.
Nur als Beispiel..

Delphi-Quellcode:
  ISkinBrowseForFile = interface
    // Ctrl + Shift + G
    ['{5CED6197-09C2-4A83-B679-A97430C670BD}']
    function GetHandle: HWND;
    function GetUseVistaBlur: BOOL;
    function GetUseVistaCrystal: BOOL;
    procedure WMEnterSizeMove(var Msg: TMessage); message WM_ENTERSIZEMOVE;
    procedure WMSizing(var Msg: TMessage); message WM_SIZING;
    procedure WMMoving(var Msg: TMessage); message WM_MOVING;
Sagen wir das Interface wurde erstellt.
Dann möchte ich in meiner Proc bei WM_MOVING: die Message verarbeiten können.

procedure WMMoving(var Msg: TMessage); message WM_MOVING;

Ist ja eigentlich für VCL oder?


Hoffe hab das jetzt nicht zu blöd erfragt\erklärt..

EDIT:
Ok vielleicht noch etwas anders erklärt.
In der Beschreibung der Komponente wird mir mitgeteilt das ich 1 Event in meiner Form erstellen muss damit die Events aus der Komponente weitergeleitet werden können.
VCL!

Delphi-Quellcode:
type
  TfrmChild2 = class(TForm)
public
  procedure WMMoving(var Msg: TMessage); message WM_MOVING;
end;
Delphi-Quellcode:
procedure TfrmChild2.WMMoving(var Msg: TMessage);
begin
  // Hier werden jetzt die Messagen verarbeitet.
end;
1. Wenn ich jetzt keine Beschreibung der Komponente habe weiß ich auch nicht das ich das Event erstellen muss.
2. Leite ich WMMoving über mein Interface weiter und möchte dieses unter NONVCL verwenden dann funktioniert das nicht.

Beispiel:
Delphi-Quellcode:
SkinBrowseForFile := TSkinBrowseForFile.create; // Interface erstellen

procedure SkinBrowseForFile.WMMoving(var Msg: TMessage); message WM_MOVING;
begin

end;
message WM_MOVING; ist unbekannt usw...

Würde nicht funktionieren.
Welche Lösung gäbe es dafür?

gruss

Geändert von EWeiss ( 4. Sep 2016 um 13:19 Uhr)
  Mit Zitat antworten Zitat