AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi proceduren (Events) aus Interface
Thema durchsuchen
Ansicht
Themen-Optionen

proceduren (Events) aus Interface

Ein Thema von EWeiss · begonnen am 4. Sep 2016 · letzter Beitrag vom 12. Sep 2016
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: proceduren (Events) aus Interface

  Alt 5. Sep 2016, 07:41
Dann macht auch die VCL-Methodensignatur für deine Methoden keinen Sinn. Das müsstest du dann ja erst zusammenbauen wie es sonst die VCL tut.

Du könntest die Parameter selbst auslesen und in geeigneter Form aufbereiten. Sprich die Parameter selbst neu definieren.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#12

AW: proceduren (Events) aus Interface

  Alt 5. Sep 2016, 08:08
Dann macht auch die VCL-Methodensignatur für deine Methoden keinen Sinn. Das müsstest du dann ja erst zusammenbauen wie es sonst die VCL tut.

Du könntest die Parameter selbst auslesen und in geeigneter Form aufbereiten. Sprich die Parameter selbst neu definieren.
Ich habe es jetzt mal zum testen umgestellt.
Wenn ich dann ein Event bekomme ist es gut ansonsten .. na mal sehn.

Delphi-Quellcode:
{$REGION 'TMainApp'}
type
  TMainApp = class(TComponent)
  private
    { Private declarations }
    FHandle: HWND;
    lRes: integer;
    Background: PWideChar;
    sFileName: string;
    gBlinkCount: integer;
    UseState: integer;
    gColor: array [1 .. 33] of integer;
    gPeak: array [1 .. 100, 1 .. 2] of integer;
    // Vis
    xPos: integer;
    stepX: integer;
    C0, CB1, CB2, CB3, CG1, CG2, CG3: integer;
    nTick: integer;
    OkL, OkR: integer;
    FPScount, nFPScount: Cardinal;
    ShowMode: integer;
    hPlgRadioButton: integer;
    hSubSkinMenu: HMenu;
    Restart: BOOL;
    h_Instance: HINST;
    newItem: string;
    PaintDC: HDC;
    procedure DeleteResource;
    function GetHandle: HWND;
    procedure SetHandle(const Value: HWND);
  protected
    //
  public
    { Public declarations }
    procedure SplitRGB(Col: COLORREF; var R: Byte; var G: Byte; var b: Byte);
    procedure DrawOscillo(WinHandle: HWND; pInteger: TWaveData);
    procedure PlayListPlay(hList: HWND; nCount: integer);
    procedure RenderVis(WinHandle: HWND);
    procedure CheckPluginVisibility(nRedraw: integer);
    procedure ResizeWindow(WinHandle: HWND; ChangeBackground: integer);
    procedure ButtonBlink(ID: integer; nStop: boolean);
    procedure MovePluginButton(Offset: integer);
    procedure CheckVisiblePanel(hCtrl: HWND);
    procedure DetectBackground;
    procedure ColorInit;
    procedure WMEnterSizeMove(var Msg: TMessage); message WM_ENTERSIZEMOVE;
    procedure WMSizing(var Msg: TMessage); message WM_SIZING;
    procedure WMMoving(var Msg: TMessage); message WM_MOVING;
    procedure WMExitSizeMove(var Msg: TMessage); message WM_EXITSIZEMOVE;
    procedure WMSysCommand(var Msg: TMessage); message WM_SYSCOMMAND;
    procedure WMCommand(var Msg: TMessage); message WM_COMMAND;
    function SetRGB(colorRGB: DWORD): integer;
    function LevelColr(nLevel: integer): integer;
    function PaintCapture(WinHandle: HWND; DC: Cardinal; Action: TCaptureAction): integer;
    function SolvePeak(nValue: integer; nTotal: integer): integer;
    function FileSize(FileName: PWideChar): integer;
    function ListShuffle(hList: HWND): integer;
    function ARGBToColorRef(Color: ARGB): COLORREF;
    function GetMenuTxt(ItemId: integer; var Img: Cardinal; var ImgItem: Cardinal;
      var ImgSep: Cardinal; var SideBarImg: Cardinal): WideString;
    property Handle: HWND read GetHandle write SetHandle;
  end;
{$ENDREGION}
Ich hab jetzt ne Classe erstellt dort kann ich dann die Messagen wie unter VCL einbinden.
Nun gut bisher haben sie nicht gefeuert.. LOL
Wenn es dann geht muss ich mal sehn wie ich das mit dem Interface auf die reihe kriege.

So übergebe ich dann die Messagen, wie gesagt wenn es funktioniert
Delphi-Quellcode:
{$REGION 'procedure WMEnterSizeMove'}
procedure TMainApp.WMEnterSizeMove(var Msg: TMessage);
begin
  inherited;

  if Assigned(MagneticWndProc) then
    MagneticWndProc(Self.Handle, WM_ENTERSIZEMOVE, Msg, dummyHandled);
end;
Nochmal Danke für deine Informationen.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: proceduren (Events) aus Interface

  Alt 5. Sep 2016, 08:24
Ich hab jetzt ne Classe erstellt dort kann ich dann die Messagen wie unter VCL einbinden.
Nun gut bisher haben sie nicht gefeuert.. LOL
Wie schickst du denn dort etwas hin?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#14

AW: proceduren (Events) aus Interface

  Alt 5. Sep 2016, 08:40
Ich hab jetzt ne Classe erstellt dort kann ich dann die Messagen wie unter VCL einbinden.
Nun gut bisher haben sie nicht gefeuert.. LOL
Wie schickst du denn dort etwas hin?
Die frage wäre wie macht die TForm das?
Ich kann nicht aus meiner Winproc bei WM_EnterSizeMove die Message übergeben das geht schief.. in so etwa

Beispiel:
Delphi-Quellcode:
var
  Message_: TMessage;
---------------
WM_EnterSizeMove:
  begin
    Message_.WParam := wP;
    Message_.LParam := lP;
    Message_.Result := 0;
    MainApp.WMEnterSizeMove(Message_);
    Result := DefWindowProc(WinHandle, Msg, wP, lP);
    exit;
  end;
Von was musste ich denn meine Classe ableiten damit WMEnterSizeMove automatisch abfeuert?
Ich habe eigentlich gedacht das TMainApp = class(TComponent) ausreicht.

gruss

Geändert von EWeiss ( 5. Sep 2016 um 08:42 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#15

AW: proceduren (Events) aus Interface

  Alt 5. Sep 2016, 20:59
Ich habe mal auf die schnelle das Sample von Luckie angepasst das die TMagnetic Unit verwendet.
Das erste Sample ist Original im Window Folder
Das zweite mit TMagnetic.

Die Unit selbst funktioniert einwandfrei mit VCL aber nicht mit NonVcl.
Das Hauptfenster wird blockiert nach dem öffnen des zweiten Window das erste lässt sich dann nicht mehr schließen.

EDIT:
Ok jetzt geht soweit alles wenn ich die TMagnetic normal einbinde ohne Interface.
Damit werde ich mich jetzt beschäftigen.

gruss

Geändert von EWeiss ( 6. Sep 2016 um 01:28 Uhr)
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: proceduren (Events) aus Interface

  Alt 6. Sep 2016, 19:09
Habe mir mal Deine Sourcen angeschaut.
Für das was Du erreichen willst benötigts Du kein Interface.
Dazu reicht eine function.
Habe das spasseshalber mal geändert, so das es funktioniert.
Schau es Dir mal an.
Angehängte Dateien
Dateityp: zip Window_Mag.zip (337,6 KB, 2x aufgerufen)
Fritz Westermann
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#17

AW: proceduren (Events) aus Interface

  Alt 6. Sep 2016, 23:50
Habe mir mal Deine Sourcen angeschaut.
Für das was Du erreichen willst benötigts Du kein Interface.
Dazu reicht eine function.
Habe das spasseshalber mal geändert, so das es funktioniert.
Schau es Dir mal an.
Doch ich brauche ein Interface weil meine DLL die TMagnetic enthalten soll so das ich diese nicht in jedem Projekt separat einbinden muss.
Das Problem das es beim mir nicht Funktioniert ist gerade der umbau zum Interface.

Hast du mal versucht wenn du nun mit der TMagnetic bsp.. 10 VCL Formen startest
die alle gegenseitig an die Parentform andocken und sich damit verschieben lassen.. das ganze noch funktioniert?

Danke für das reinschauen..

gruss

Geändert von EWeiss ( 7. Sep 2016 um 02:23 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#18

AW: proceduren (Events) aus Interface

  Alt 7. Sep 2016, 00:13
Mein Problem ist halt nur das du die TMAgnetic Formatiert hast..
Dadurch kann ich sie nicht vergleichen und die geänderten Funktionen identifizieren.

Was nicht geht das du die TMagnetic in der TMagnetic selbst erstellst.
Auch die setter und getter sollten von außen gesetzt werden.
Delphi-Quellcode:
  if MagneticWnd = nil then
    begin
      MagneticWnd := TMagnetic.Create;
      MagneticWnd.SnapWidth := 15;
    end;

  result := MagneticWnd.AddWindow(Handle, hWndParent)
Der Anwender soll festlegen ab welcher weite das Window andockt.
Hingegen der Ansatz die TSubClass_Proc umzuleiten sieht sehr gut aus.
Werde damit mal etwas experimentieren.

Danke!

EDIT:
Bin das jetzt nochmal durchgegangen habe die angesprochenen dinge zurück gesetzt.
Funktioniert ohne Interface recht gut. (Das ist aber mein Problem was ich noch ändern muss DLL bedingt).

Zitat:
Hast du mal versucht wenn du nun mit der TMagnetic bsp.. 10 VCL Formen startest
die alle gegenseitig an die Parentform andocken und sich damit verschieben lassen.. das ganze noch funktioniert?
Nach meinen Änderungen getestet und funktioniert noch.

EDIT2:
Interface implementiert und funktioniert jetzt alles.
Jetzt kann ich mein Spectragram Window mit ziehen und muss da nicht immer von Hand nachhelfen.

Danke für eure Hilfe.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#19

AW: proceduren (Events) aus Interface

  Alt 7. Sep 2016, 05:20
Mein Problem ist halt nur das du die TMAgnetic Formatiert hast..
Dadurch kann ich sie nicht vergleichen und die geänderten Funktionen identifizieren.
Einer der Gründe weshalb ich empfehle grundsätzlich die eigenen Units von Zeit zu Zeit durch den integrierten Formatter zu jagen. Zum Vergleich kannst du das aber auch temporär machen und dann nur die Änderungen übernehmen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: proceduren (Events) aus Interface

  Alt 7. Sep 2016, 10:52
etwas OT: (werden die meisten eh wissen, aber vielleicht nicht jeder)

Word hat auch eine sehr gute Vergleichsfunktion (mit optional Leerzeichen und Leerzeilen ignorieren usw.).
Also wenn man Quelltexte nicht einheitlich formatieren kann und Word verfügbar hat ist das durchaus nutzbar.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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 05:23 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