Probiere mal kleinere Schrittweiten beim rausfahren:
MoveWindow(Prop.Panel, rc.left, rc.Top + 2, //<----
Zitat:
Wieder mal völliges fehlen der Auswertung der Rückgabewerte der Windowsfunktionen.
MoveWindow..
Habe noch nie Rückgabewerte für solche triviale Dinge definiert und ist auch nicht nötig.
Klar ist das trivial, aber so kannst du doch einfach mal die grundlegenden Fehlerquellen ausschließen, wie bspw. ungültiges
Handle oder sowas.
Keine Angst, das wird dein Code auch nur um 2 Nanosekunden langsamer machen.
Zitat:
Wie ist es, wenn du hier mal TRUE schreibst?
Nein ich will kein neu zeichnen.
Hast du denn bRepaint = True einfach mal schnell ausprobiert oder magst du jetzt aus Dickköpfigkeit nicht mehr?
Wenn ich in einen kleinen Test das mal ausprobiere, sehe ich schon, dass ein Neuzeichnen nicht verkehrt wäre (siehe Bildanhang).
Delphi-Quellcode:
procedure TForm5.Panel1Click(Sender: TObject);
var
bRepaint: BOOL;
begin
bRepaint := True; //False
Panel1.Caption := 'bRepaint is ' + BoolToStr(bRepaint, True);
Win32Check(MoveWindow(Panel1.Handle, Panel1.Left + 10, Panel1.Top + 10, Panel1.Width + 10, Panel1.Height + 10, bRepaint));
end;
PS: rc und p sind keine guten Beispiele für sinnvolle Namensgebung.