Rahmenloses Fenster mit Hilfe des MainMenus verschieben

Rund um die LCL und andere Komponenten
Soner
Beiträge: 734
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Rahmenloses Fenster mit Hilfe des MainMenus verschieben

Beitrag von Soner »

Für eine benutzerdefinierte Titelzeile mit Hauptmenü könntest meine Toolbarmenü-Kompenente, dass ich vor vielen Jahren hier und im englischen Forum veröffentlicht hatte und ein Projekt, welches hier von einem Benutzer entwickelt wurde verwenden. Er hat sein Beispiel zu BGRA-Controls gespendet, du findest es bei BGRA-Controls-Test unter dem Namen BGRA-Ribbon.

Ich habe heute festgestellt, dass meine Kompente nicht mehr richtig funktioniert, mann muss jeden Hauptmenu-Item klicken, damit Untermenüs geöffnet wird. Ich poste es hier nochmal mit einem Beispiel. Ich glaube es funktionierte mit Lazarus 1.4/1.6 und WinXP, es ist über 10 Jahre her.
Dateianhänge
tmenutoolbar-pub.zip
(142.67 KiB) 115-mal heruntergeladen

kirchfritz
Beiträge: 227
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Rahmenloses Fenster mit Hilfe des MainMenus verschieben

Beitrag von kirchfritz »

@soner:
Deine Komponente läßt sich nicht kompilieren! (Win10, Lazarus 3.6)
Dateianhänge
Screenshot 2024-10-05 132852.png
Screenshot 2024-10-05 132852.png (94.74 KiB) 2086 mal betrachtet

Soner
Beiträge: 734
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Rahmenloses Fenster mit Hilfe des MainMenus verschieben

Beitrag von Soner »

Das ist 64Bit Problem. Ich verwende wegen ein Programm noch FPC 32 Bit.
Ich kann das mal morgen anschauen.
Falls jemand das anschauen möchte, dann installiert die Komponente nicht. Kopiert einfach toolbarmenu.pas in demo2-Ordner, dann könnt ihr die Unit debuggen.

diy
Beiträge: 7
Registriert: Mi 3. Jan 2024, 19:06
OS, Lazarus, FPC: Win10x64 / Lazarus 3.8 / FPC 3.2.2
Wohnort: PLZ 96xxx

Re: Rahmenloses Fenster mit Hilfe des MainMenus verschieben

Beitrag von diy »

Moin zusammen,

durch einfaches Ersetzen von
Pt:= SmallPointToPoint(TSmallPoint(Msg.lParam));
-> Pt:= Point(TPoint(Msg.lParam));

konnte ich das *.lpk erfolgreich unter Win64 kompilieren und installieren,
isses wirklich so simpel oder hab ich was übersehen?
Dateianhänge
tmenutoolbar-pub_demo2.jpg
tmenutoolbar-pub_demo2.jpg (21.08 KiB) 2059 mal betrachtet

kirchfritz
Beiträge: 227
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Rahmenloses Fenster mit Hilfe des MainMenus verschieben

Beitrag von kirchfritz »

diy hat geschrieben: Di 8. Okt 2024, 12:32 Moin zusammen,

durch einfaches Ersetzen von
Pt:= SmallPointToPoint(TSmallPoint(Msg.lParam));
-> Pt:= Point(TPoint(Msg.lParam));

konnte ich das *.lpk erfolgreich unter Win64 kompilieren und installieren,
isses wirklich so simpel oder hab ich was übersehen?
Hallo diy,
super, dass Du das kompilieren konntest.
Dein Screenshot zeigt aber nicht unbedingt ein "rahmenloses" Fenster, oder täuscht mich die Optik?

diy
Beiträge: 7
Registriert: Mi 3. Jan 2024, 19:06
OS, Lazarus, FPC: Win10x64 / Lazarus 3.8 / FPC 3.2.2
Wohnort: PLZ 96xxx

Re: Rahmenloses Fenster mit Hilfe des MainMenus verschieben

Beitrag von diy »

Nein, die Optik täuscht nicht.

Der Beitrag bezieht sich nur auf den vorherigen von Soner.
Soner hat geschrieben: Fr 4. Okt 2024, 23:14 ...
Ich habe heute festgestellt, dass meine Kompente nicht mehr richtig funktioniert, mann muss jeden Hauptmenu-Item klicken, damit Untermenüs geöffnet wird. Ich poste es hier nochmal mit einem Beispiel. Ich glaube es funktionierte mit Lazarus 1.4/1.6 und WinXP, es ist über 10 Jahre her.
Am rahmenlosen Fenster geschubse habe ich mich hier
viewtopic.php?p=138806#p138806
versucht - und bei mir hat das zusammengefrickelte Demo dann auch geklappt.

An einer Kombination der beiden habe ich mich nicht versucht ;-)

Soner
Beiträge: 734
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Rahmenloses Fenster mit Hilfe des MainMenus verschieben

Beitrag von Soner »

diy hat geschrieben: Di 8. Okt 2024, 12:32 Moin zusammen,

durch einfaches Ersetzen von
Pt:= SmallPointToPoint(TSmallPoint(Msg.lParam));
-> Pt:= Point(TPoint(Msg.lParam));

konnte ich das *.lpk erfolgreich unter Win64 kompilieren und installieren,
isses wirklich so simpel oder hab ich was übersehen?
Schau auf Bildschirmfoto, wenn du jetzt dein Mauszeiger auf Bearbeiten und Hilfe bewegst, dann müssten diese Menü geöffnet werden ohne ein Mausknopf zu klicken. Es funktioniert nicht mehr.

Code: Alles auswählen

function MTBarHookProc(nCode: Integer; wParam: Longint; var Msg: TMsg): Longint; stdcall;
//...
                if (TB<>HookButton) then begin
                 // folgende Zeile hat kein Effekt mehr:
                  PostMessage(Toolbar.Handle, WM_LBUTTONDOWN, MK_LBUTTON, MakeLong(Pt.x, Pt.y));
                  {Auch wenn man es durch diese ersetzt:
                  //HookButton.Click;
                  //TB.Click;
                  }
                  SendDebugEx('HOOK:'+HookButton.Caption+' _ '+TB.Caption+' _ x:'+Pt.x.ToString+' _ y:'+Pt.y.ToString,dlInformation);
                end;
//...
end;                                                                              

Soner
Beiträge: 734
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Rahmenloses Fenster mit Hilfe des MainMenus verschieben

Beitrag von Soner »

Ich veröffentliche hier mein angepasstes Beispiel aus dem Beitrag von damals.
Ich glaube, du sollstest damit etwas anfangen können.
Dateianhänge
FormOhneTitelzeileW11pub.zip
(64.24 KiB) 99-mal heruntergeladen

diy
Beiträge: 7
Registriert: Mi 3. Jan 2024, 19:06
OS, Lazarus, FPC: Win10x64 / Lazarus 3.8 / FPC 3.2.2
Wohnort: PLZ 96xxx

Re: Rahmenloses Fenster mit Hilfe des MainMenus verschieben

Beitrag von diy »

kirchfritz hat geschrieben: Di 8. Okt 2024, 18:22 Hallo diy,
super, dass Du das kompilieren konntest.
Dein Screenshot zeigt aber nicht unbedingt ein "rahmenloses" Fenster, oder täuscht mich die Optik?
An der Lösung von vorher
(...Pt:= SmallPointToPoint(TSmallPoint(Msg.lParam)) -> Pt:= Point(TPoint(Msg.lParam))...)
und dem demo2 von Soner habe ich mich erneut versucht,
da die Toolbar-Komponente MouseDown, MouseUp und MouseMove zur Verfügung stellt lässt sich auch die Verschiebung des Fensters mittels rechter Mousetaste bei Positionierung innerhalb des freien Toolbar-Bereichs realisieren.
tmenutoolbar-pub_demo2-rahmenlos-verschieben.jpg
tmenutoolbar-pub_demo2-rahmenlos-verschieben.jpg (10.8 KiB) 2029 mal betrachtet
Dateianhänge
demo2-rahmenlos-verschieben.zip
(139.39 KiB) 86-mal heruntergeladen

Antworten