Einzelnen Beitrag anzeigen

Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#3

AW: TApplicationevents.onmessage

  Alt 6. Mai 2016, 06:35
Hallo,

tschja, habe ich. Aber das ist viel zu viel zum posten.
Hier nur applicationevents.onmessage:
Delphi-Quellcode:
procedure TFHaupt.AEMessage(var Msg: tagMSG; var Handled: Boolean);
var p: tpoint;
   wc: TWinControl;
begin
  //mouse wheel scrolling for the control under the mouse
  if (Msg.message = WM_MOUSEWHEEL) then begin
    p.X:=Word(Msg.lParam);
    p.Y:=HiWord(Msg.lParam);
    wc := FindVCLWindow(p);
    if wc=nil then begin handled:=true;
      exit;
    end;
    if wc=lv then begin
      lv.setfocus;
      handled:=false;
    end else
    if wc=tree then begin
      tree.setfocus;
      handled:=false;
    end else
    if assigned(WndSearchFiles) and (wc=WndSearchFiles.searchresult) then begin
      WndSearchFiles.searchresult.setfocus;
      handled:=false
    end else
      handled:=false
  end;
//Hier sitzt das Problem
  if (msg.message>WM_MOUSEFIRST) and (msg.message<WM_MOUSELast) then begin
    handled:=false;
    SizeAbbruch:=true;
  end;
end;
Das erste ist zwar nicht relevant für mein Problem, aber ich lasse es mal drin...

SizeAbbruch wird bei der Dir-Größenberechnung in einer Schleife immer wieder abgefragt.
Wie gesagt: Abgebrochen wird ordentlich. Aber er führt die eigentliche Click-Prozedur erst beim zweiten Click aus.
Das geht bis zum "Schließen-Kreuz" des Formulars. Auch da braucht man zwei Clicks.

Gruß
Mattze
  Mit Zitat antworten Zitat