AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Borderstyle bsNone deaktiviert Global-Hotkey?
Thema durchsuchen
Ansicht
Themen-Optionen

Borderstyle bsNone deaktiviert Global-Hotkey?

Ein Thema von Coder · begonnen am 26. Mai 2024 · letzter Beitrag vom 27. Mai 2024
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.373 Beiträge
 
Delphi 12 Athens
 
#1

AW: Borderstyle bsNone deaktiviert Global-Hotkey?

  Alt 26. Mai 2024, 23:58
Das Umschalten des FormStyle zerstört das interne HWND (Window-Handle) und generiert ein vollkommen neues Form.
Somit ist auch ALLES weg, was im OnCreate registriert wurde, und was keine Kopie im Delphi-Objekt besitzt, also nicht automatisch wiederhergestellt wird.
siehe DestroyHandle im TCustomForm.SetFormStyle

Das Selbe gilt auch für alle untergeordneten HWND (Panels, Edits, Buttons usw.)

Außerdem kann sowas passieren, wenn der PC oder der Monitor/Grafikkarte in den Standby wechselt oder wenn man sich in eine Terminal-Sitzung einloggt oder von ihr trennt, sich per RDP mit dem Rechner verbindet und in tausenden anderen Situationen.

mögliche Lösungen:
Delphi-Quellcode:
procedure CreateWindowHandle(const Params: TCreateParams); override;
procedure CreateWnd; override;
...
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (27. Mai 2024 um 00:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.960 Beiträge
 
Delphi 12 Athens
 
#2

AW: Borderstyle bsNone deaktiviert Global-Hotkey?

  Alt 27. Mai 2024, 06:21
Das Umschalten des FormStyle zerstört das interne HWND (Window-Handle) und generiert ein vollkommen neues Form.
In den alten Quelltext hatte ich nicht reingeschaut. Das erklärt dann natürlich, weshalb es dort nicht geht. Das machen aktuelle Delphiversionen nicht mehr. Die schalten wirklich nur den Style um.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.373 Beiträge
 
Delphi 12 Athens
 
#3

AW: Borderstyle bsNone deaktiviert Global-Hotkey?

  Alt 27. Mai 2024, 09:03
Die schalten wirklich nur den Style um.
Nein, Doch.

Delphi-Quellcode:
procedure TScrollBox.SetBorderStyle(Value: TBorderStyle);
begin
  if Value <> FBorderStyle then
  begin
    FBorderStyle := Value;
    RecreateWnd;
  end;
end;
Teilweise wird es aber an anderen Stellen inzwischen selektiver gehandhabt.
Und wie gesagt, es gibt auch Sitiationen, wo sowas ohne eigenes Eingreifen ausgelöst wird.

z.B. könnten theoretisch die Handles auch freigegeben werden, wenn das Fenster ausgeblendet oder minimiert wird, um Systemressourcen zu sparen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (27. Mai 2024 um 09:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Coder
Coder

Registriert seit: 27. Feb 2004
Ort: Bochum
206 Beiträge
 
Delphi 3 Professional
 
#4

AW: Borderstyle bsNone deaktiviert Global-Hotkey?

  Alt 27. Mai 2024, 10:28
danke.

mh, ja, vielleicht sollte ich doch mal 2300? € ausgeben (oder was kostet Delphi jetzt?)
(oder Community Edition, oder gleich Lazarus)
(ach, 1430, oder ... 5600 .. Oh - naja, brauch's ja nicht kommerziell)

mh, ja, sorry, ich find Delphi 5 einfach schnell, geladen und compiliert.

Vieles mach ich heut auch in Python/tkinter.
Aber für manches/ alle Fälle hab ich unter Win10 halt noch Delphi5 installiert, bei alten Programmen.


Andere Frage (dürfte aber vielleicht ähnliche Ursache haben):

Wenn ich nun OnMouseUp() in der Form mache, fängt der nur den (Mouse)Button = mbright ab.
mbleft ignoiert der.

Der Linke funktioniert nur im Form.OnMouseDown(), komischerweise..?
Oder ist das so gewollt?
Gerad getestet - bei rechter Maustaste geht er auch nur in Form.MouseUp() rein - (wtf)??

is mir vorher nie so aufgefallen/ genutzt
ICQ: 204141443
Delphi 3 Professional, Intel 2x 2,4Ghz, 3 GB-Graka, Sound-onBrd, --
außerdem D2S, D3Pro, D4S, D5S, D6S, D7S + Indy, Lazarus, VB5Std, VC++5Pro, Tasm4+5 - was braucht man mehr?
-

Geändert von Coder (27. Mai 2024 um 10:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.960 Beiträge
 
Delphi 12 Athens
 
#5

AW: Borderstyle bsNone deaktiviert Global-Hotkey?

  Alt 27. Mai 2024, 10:57
Wenn ich nun OnMouseUp() in der Form mache, fängt der nur den (Mouse)Button = mbright ab.
mbleft ignoiert der.
Das hat nichts mit der Delphiversion zu tun. Das funktionierte auch bei Delphi 5 und früher korrekt.

Da ist wohl eher dein Testquelltext nicht in Ordnung. Ein beliebter Fehler ist z.B., solche Events mit Dialogausgaben oder Haltepunkten zu debuggen. Hier bietet sich die Ausgabe auf dem Formular oder per OutputDebugString an.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Coder
Coder

Registriert seit: 27. Feb 2004
Ort: Bochum
206 Beiträge
 
Delphi 3 Professional
 
#6

AW: Borderstyle bsNone deaktiviert Global-Hotkey?

  Alt 27. Mai 2024, 11:18
öhm,
huch, jo.
hab weiter oben auch
Delphi-Quellcode:
procedure TForm1.FormMouseMove(...) ...
  ReleaseCapture; // Image verschieben
  Perform(WM_SYSCOMMAND, $F012, 0);
end;
damit ich die Form bei links-Klick simultan rumschieben kann,
da wird der wohl verschluckt.

jedenfalls geht der Links-Klick danach wohl nicht mehr in den MouseUp()
ICQ: 204141443
Delphi 3 Professional, Intel 2x 2,4Ghz, 3 GB-Graka, Sound-onBrd, --
außerdem D2S, D3Pro, D4S, D5S, D6S, D7S + Indy, Lazarus, VB5Std, VC++5Pro, Tasm4+5 - was braucht man mehr?
-
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.686 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Borderstyle bsNone deaktiviert Global-Hotkey?

  Alt 27. Mai 2024, 12:20
mh, ja, vielleicht sollte ich doch mal 2300? € ausgeben (oder was kostet Delphi jetzt?)
(oder Community Edition, oder gleich Lazarus)
(ach, 1430, oder ... 5600 .. Oh - naja, brauch's ja nicht kommerziell)

mh, ja, sorry, ich find Delphi 5 einfach schnell, geladen und compiliert.

Vieles mach ich heut auch in Python/tkinter.
Aber für manches/ alle Fälle hab ich unter Win10 halt noch Delphi5 installiert, bei alten Programmen.
Wenn Du kein Geld ausgeben willst, nimm Lazarus. Delphi 5 ist inzwischen wirklich nicht mehr zu empfehlen. Nachteil: Alte Projekte müssen konvertiert werden. Keine Ahnung, wie gut inzwischen der Import von Lazarus ist.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.373 Beiträge
 
Delphi 12 Athens
 
#8

AW: Borderstyle bsNone deaktiviert Global-Hotkey?

  Alt 27. Mai 2024, 13:30
Jupp, OnMouseUp geht natürlich immer nur an das Control, welches den Capture besitzt.

Drum kann man z.B. auf einen Button (oder sonstwo) Linksklicken, dann die Maus vom Button ziehen und Loslasen ... das Loslassen landet beim Button und nicht da, wo die Maus jetzt ist.
Nur das OnClick wird in diesem Fall nicht mehr ausgelöst, wenn der Maus nicht mehr über dem Button liegt.
Ebenso beim Drag&Drop der VCL, wo das Loslassen bei der Source landet, nicht beim Dest.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz