Einzelnen Beitrag anzeigen

Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Frames auf PageControl oder Form ! Ich werd verrückt

  Alt 19. Jul 2004, 18:25
Hi Mirage,

habe ich gerade gemacht, dann hangelt er sich von der Action hoch bis zum TControl.WMLButtonUp
Code:
procedure TControl.DoMouseUp(var Message: TWMMouse; Button: TMouseButton);
begin
  if not (csNoStdEvents in ControlStyle) then
    with Message do MouseUp(Button, KeysToShiftState(Keys), XPos, YPos);
end;

procedure TControl.WMLButtonUp(var Message: TWMLButtonUp);
begin
  inherited;
  if csCaptureMouse in ControlStyle then MouseCapture := False;
  if csClicked in ControlState then
  begin
    Exclude(FControlState, csClicked);
    if PtInRect(ClientRect, SmallPointToPoint(Message.Pos)) then Click;
  end;
  DoMouseUp(Message, mbLeft);
end;
In dem DoMouseUp, sprint er dann von der ZEile with Message do MouseUp(Button, KeysToShiftState(Keys), XPos, YPos); in die System.pas
Code:
procedure      GetDynaMethod;
{       function       GetDynaMethod(vmt: TClass; selector: Smallint) : Pointer;      }
asm
        { ->   EAX    vmt of class           }
        {       SI     dynamic method index   }
        { <-    ESI pointer to routine }
        {       ZF = 0 if found        }
        {       trashes: EAX, ECX              }

        PUSH   EDI
        XCHG   EAX,ESI
        JMP    @@haveVMT
@@outerLoop:
        MOV    ESI,[ESI]
@@haveVMT:
        MOV    EDI,[ESI].vmtDynamicTable
        TEST   EDI,EDI
        JE     @@parent
        MOVZX  ECX,word ptr [EDI]
        PUSH   ECX
        ADD    EDI,2
        REPNE  SCASW
        JE     @@found
        POP    ECX
@@parent:
        MOV    ESI,[ESI].vmtParent
        TEST   ESI,ESI
        JNE    @@outerLoop
        JMP    @@exit

@@found:
        POP    EAX
        ADD    EAX,EAX
        SUB    EAX,ECX        { this will always clear the Z-flag ! }
        MOV    ESI,[EDI+EAX*2-4]

@@exit:
        POP    EDI
end;
MOVZX ECX,word ptr [EDI] ist die Zeile wo er crashed
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat