Hi,
Folgende function soll rekursiv einen x-Wert ausrechnen.. z.B wenn man nen Button auf nem Panel auf nem Panel auf nem Panel auf ner Form hat und dann die Bildschirmposition haben will dann würde man mit meiner Methode so vorgehn:
GlobalX := Button.Left + GetDX(0,PanelAufDemDerButtonIst);
oder
GlobalX := GetDX(Button.Left,PanelAufDemDerButtonIst);
Das klappt irgendwie.. aber irgendwie auch nicht... wenn ich das ganze mit Breakpoints verfolge dann arbeitet alles wunderbar aber dann ist WC = nil und Result wird gesetzt.. danach die nächste Station ist ja end; und danach wird
eigentlich wieder in die Procedure gesprungen die GetDX aufgerufen hat. Komischerweise bleibt der Debugger aber 3 mal hintereinander bei end; stehn und auf einmal ist Result = 45243412 oder so -.-
Delphi-Quellcode:
function GetDX(Ax: Integer; WC: TWinControl): Integer;
begin
if WC <> nil then
GetDX(Ax+WC.Left,WC.Parent)
else
Result := AX;
end;
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."