![]() |
Änderungen in Forms.pas -> Wie compilieren?
Hallo!
Ich habe Änderungen in der Standard-Bibliothek Forms vorgenommen.
Delphi-Quellcode:
In meinem Programm kann ich diese Funktion jedoch nicht aufrufen. Anscheinend wird
...
procedure myProcessMessage; ... procedure TApplication.myProcessMessage; var Msg: TMsg; begin ProcessMessage(Msg); end; Forms.pas nicht automatisch compiliert. Wie bewege ich Delphi dazu die Forms.pas neu zu compilieren? Vielen Dank. |
Re: Änderungen in Forms.pas -> Wie compilieren?
Du musst die dcu löschen und die pas-Datei in den Ordner der dcu kopieren. Aber so was macht man normalerweise nicht die original Dateien ändern. Man pakt sich das in eine eigene Unit und ruft die Funktion aus selbiger auf. Grund: Wenn man die Sourcen weitergibt, kann man die eigene Unit mitgeben. Die Unit von Borland darf man nämlich nicht weitergeben und nicht jeder hat die Sourcen, um die Änderung vorzunehmen.
|
Re: Änderungen in Forms.pas -> Wie compilieren?
danke für die antwort.
mein problem ist folgendes: die in forms.pas implementierte processmessages verarbeitet die messages solange bis keine mehr da sind (while):
Delphi-Quellcode:
ich bräuchte aber eine funktion die immer nur eine verarbeitet. deshalb wollte
procedure TApplication.ProcessMessages;
var Msg: TMsg; begin while ProcessMessage(Msg) do {loop}; end; das wie folgt änder:
Delphi-Quellcode:
dafür gibt es bestimmt eine bessere lösung oder?
procedure TApplication.myProcessMessages;
var Msg: TMsg; begin ProcessMessage(Msg); end; ein ansatz von mir sah so aus (hat aber leider nicht 100% funktioniert):
Delphi-Quellcode:
danke...
if not GetMessage(msg, 0, 0, 0) then halt;
TranslateMessage(Msg); DispatchMessage(Msg); |
Re: Änderungen in Forms.pas -> Wie compilieren?
Gegenfrage:
Wozu brauchst Du dieses genau? Vielleicht findet sich eine andere Lösung für Dein Prob. Denke mal es wird in Richtung Thread gehen ... :zwinker: Viele Grüsse OLLI |
Re: Änderungen in Forms.pas -> Wie compilieren?
ich gebe window-messages an eine dll weiter, und lese den rückgabewert
einer funktion aus der dll aus um dann entsprechend zu reagieren. mit dem aufruf application.processmessages gehen nachrichten verloren, da die funktion erst zurück kommt wenn die gesamte message queue bearbeitet ist und nicht nach jeder bearbeitung... ein thread bringt hier leider nicht weiter. gibt es noch einen ansatz? |
Re: Änderungen in Forms.pas -> Wie compilieren?
Delphi-Quellcode:
procedure myProcessMessage;
Var M : TMsg; Begin If PeekMessage(M, 0, 0, 0, pm_Remove) then Begin TranslateMessage(M); DispatchMessage(M); End; End; |
Re: Änderungen in Forms.pas -> Wie compilieren?
ja das ist die kurzfassung der processmessage aus der forms.pas.
das hat ich auch schon probiert, ich habe aber irgendwie das gefühl das der passus
Delphi-Quellcode:
benötigt wird.
function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
... if Assigned(FOnMessage) then FOnMessage(Msg, Handled); ... was macht das assigned genau? ich bin echt am verzweifeln... |
Re: Änderungen in Forms.pas -> Wie compilieren?
Das ist nur für den Fall, das du dem Ergeinis Application.OnMessage eine Prozedure zugewiesen hast. Er prüft das dann und wenn sie zugewiesen (assigned) ist, führt er sie aus.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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