Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Änderungen in Forms.pas -> Wie compilieren? (https://www.delphipraxis.net/12636-aenderungen-forms-pas-wie-compilieren.html)

unitedlb 1. Dez 2003 15:24


Änderungen in Forms.pas -> Wie compilieren?
 
Hallo!
Ich habe Änderungen in der Standard-Bibliothek Forms vorgenommen.

Delphi-Quellcode:
...
    procedure myProcessMessage;
...
procedure TApplication.myProcessMessage;
var
  Msg: TMsg;
begin
  ProcessMessage(Msg);
end;
In meinem Programm kann ich diese Funktion jedoch nicht aufrufen. Anscheinend wird
Forms.pas nicht automatisch compiliert. Wie bewege ich Delphi dazu die Forms.pas
neu zu compilieren?

Vielen Dank.

Luckie 1. Dez 2003 15:40

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.

unitedlb 1. Dez 2003 15:55

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:
procedure TApplication.ProcessMessages;
var
  Msg: TMsg;
begin
  while ProcessMessage(Msg) do {loop};
end;
ich bräuchte aber eine funktion die immer nur eine verarbeitet. deshalb wollte
das wie folgt änder:

Delphi-Quellcode:
procedure TApplication.myProcessMessages;
var
  Msg: TMsg;
begin
ProcessMessage(Msg);
end;
dafür gibt es bestimmt eine bessere lösung oder?

ein ansatz von mir sah so aus (hat aber leider nicht 100% funktioniert):

Delphi-Quellcode:
if not GetMessage(msg, 0, 0, 0) then halt;
TranslateMessage(Msg);
DispatchMessage(Msg);
danke...

OLLI_T 1. Dez 2003 16:39

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

unitedlb 1. Dez 2003 16:47

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?

scp 1. Dez 2003 17:11

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;

unitedlb 1. Dez 2003 17:15

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:
function TApplication.ProcessMessage(var Msg: TMsg): Boolean;
...
if Assigned(FOnMessage) then FOnMessage(Msg, Handled);
...
benötigt wird.
was macht das assigned genau?

ich bin echt am verzweifeln...

scp 1. Dez 2003 17:53

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 10:29 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