![]() |
Welche Nachricht muss ich abfangen?
hi,
in den letzten Tagen habe ich gelernt u. begriffen wie man auf Nachrichten von Fenstern reagiert.- Jetzt muss ich auf das Maximieren von Form reagieren, sowie auf das Verkleinern. Steht irgendwo geschrieben welche Messages wann gesendet werden? danke - Grüße |
AW: Welche Nachricht muss ich abfangen?
Bei Microsoft in der MSDN Dokumentation mal geschaut?
Die WM_ Konstanten sollten da irgendwie zu finden sein denke ich. |
AW: Welche Nachricht muss ich abfangen?
Die Microsoft MSDN Doku habe ich mir intensiv angeschaut. Leider finde ich nichts was anzeigt die Form wurde maximiert oder verkleinert. Auch in Delphi 7 ist kein Ereignis zu finden.-
Microsoft Windows Programmierung ist und bleibt ein kryptisches Geheimnis für mich, komplizierter geht es nicht. :roll: Was ich auch noch machen wollte ist: Hier wird nach einem Resize der Form eine Neuberechnung des Bildes vorgenommen, leider auch, wenn das Fenster nur verschoben wurde. Kann man letzteres verhindern?
Delphi-Quellcode:
Ich habe noch einiges zu machen an diesem Spaß-Programm, aber ich lerne dazu ...
procedure WMEXITSIZEMOVE(var Message: TMessage); message WM_EXITSIZEMOVE;
. . . procedure TForm1.WMEXITSIZEMOVE(var Message: TMessage); begin inherited; Apfelmann1Click(self); //berechne das Bild neu end; Grüße |
AW: Welche Nachricht muss ich abfangen?
Moin...:P
Zitat:
Lade dir doch die Community Edition herunter mit den neuen Sprachfeatures wie z.B. Generics. :thumb: ![]() :wink: |
AW: Welche Nachricht muss ich abfangen?
Zitat:
Grüße |
AW: Welche Nachricht muss ich abfangen?
Zitat:
Aber: * Wie wichtig sind die Projekte für evt. Kunden? * Manche Komponenten müssen getauscht werden. (weil es sie schlicht nicht mehr gibt)... Analyse, welche Features die alten hatten, die damals nicht verfügbar waren. * Wie groß sind die Projekte? * DB Anbindung modernisieren (- BDE, + Firebird etc.) Wenn es nur "Spaßprojekte" sind, kann man mit der Umstellung auch viel lernen. :thumb: |
AW: Welche Nachricht muss ich abfangen?
Zitat:
Grüß |
AW: Welche Nachricht muss ich abfangen?
Zitat:
Auch die 64 Bit Version von Delphi (in der CE enthalten) kann noch Assembler, bloß halt nicht mehr als ASM Blöcke direkt an einer beliebigen Code Stelle, sondern immer als ganze Methode/Prozedur/Funktion. Hat was mit der Aufrufkonvention oder so zu tun. Auch die IDE der CE bietet gegenüber deinem D7 weitere Vorteile. Und falls du wissen wiollst, welche Nachrichten dein Programm alle bekommt: es gibt eine nicht visuelle ApplicationEvents Komponente, die kann man auf eine Form packen und dort einen Eventhandler erzeugen der alle Nachrichten sieht bevor die der eigentliche Empfänger sieht. Und das mit "Fenster verschieben löst auch ein Resize Event aus" könntest du behandeln, in dem du beim Programmstart die Fenstergröße merkst und im Resize Event prüfst, ob sich die überhaupt geändert hat. Falls ja musst du dir natürlich die neue Größe merken ;-) Grüße TurboMagic |
AW: Welche Nachricht muss ich abfangen?
Ja danke, ich werde mich damit nochmals beschäftigen.-
Zitat:
Grüße |
AW: Welche Nachricht muss ich abfangen?
Delphi-Quellcode:
Elegant ist das nicht, aber funktioniert.:roll:
procedure WMEXITSIZEMOVE(var Message: TMessage); message WM_EXITSIZEMOVE;
. . . Form1WidthAlt:=Form1.Width; Form1HeightAlt:=Form1.Height; . . . procedure TForm1.WMEXITSIZEMOVE(var Message: TMessage); begin If (Form1.Width<>Form1WidthAlt) or (Form1.Height<>Form1HeightAlt) then begin inherited; Apfelmann1Click(self); end; end; Jetzt muss ich noch auf Form1-Maximieren und Form1-Verkleinern reagieren, dann bin ich mit dem Programm fertig. Gruß |
AW: Welche Nachricht muss ich abfangen?
Zitat:
1. Im Vergleich zur extrem stabilen und schnellen IDE von Delphi 7 ist es ein behäbiger Koloss mit einer Vielzahl von Bugs. 2. Es basiert nicht etwa auf der aktuellen Version 10.4 sondern auf der vorherigen Version 10.3 von Delphi. Ein Update ist zwar mehrfach angekündigt worden, aber inzwischen habe zumindest ich große Zweifel, ob es je kommen wird. (Gibt es für die CE eigentlich wenigstens die Updates und Bugfixes der Version 10.3? Ich habe das nicht verfolgt.) 3. Eine Lizenz ist immer nur für ein Jahr gültig, dann muss man sich eine neue besorgen. Bisher ging das wohl problemlos, aber es ist nicht garantiert, dass das auch zukünftig so bleibt. 4. wegen 3. kann es aufwändig sein, ein Projekt von Delphi 10.3 auf Delphi 7 zurückzuportieren, falls es die CE irgendwann nicht mehr gibt. Ich glaube, ich würde mir in dieser Situation (also Programmiererfahrung und diverse Projekte in Delphi 7) die CE mal ansehen, aber ob ich wirklich umsteigen würde, bezweifle ich. |
AW: Welche Nachricht muss ich abfangen?
Zitat:
Grüße |
AW: Welche Nachricht muss ich abfangen?
Tja, hättet ihr euch die Turbos geholt, dann wäre man immerhin auf dem Stand von Delphi 2006/2007 :roll:
Zitat:
Man verwendet niemals "irgendeine" globale Variable, wenn man bereits in dem Objekt drin steckt, denn in der Variable muß nicht das drin sein, was man denkt. Wer unbedingt eine Variable braucht, der hat gefälligst Self zu nutzen. [edit] OK, vielleicht ein klein bissl drastisch, diese Lösung, aber so macht man es definitiv niewieder falsch. :angle2: |
AW: Welche Nachricht muss ich abfangen?
Zitat:
Delphi-Quellcode:
Ich hoffe das ist es was Du Dir erwünschst zu machen.
unit Unit15;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs; type TForm15 = class(TForm) protected procedure WMSysCommand(var msg: TWMSysCommand); message WM_SYSCOMMAND; private { Private declarations } public { Public declarations } end; var Form15: TForm15; implementation {$R *.dfm} procedure TForm15.WMSysCommand(var msg: TWmSysCommand); begin case msg.CmdType of SC_MINIMIZE: ShowMessage('Minimize'); SC_MAXIMIZE: ShowMessage('Maximize'); end; inherited; end; end. |
AW: Welche Nachricht muss ich abfangen?
Zitat:
Zumindest sollte man noch einmal darüber nachdenken was man dort macht und wie man es macht, Hände ab ist zu drastisch, Kopf in ein Delphi/OOP Handbuch stecken genügt hier völlig. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:12 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