Zum Inhalt springen

Delphi und MDI und Paint


paule22

Empfohlene Beiträge

Hallo

ich habe ein MDI Fenster (Form1), in dem ich dann zwei weitere MDIChild Fenster (Form2) öffne.

Wenn ich nun per Form1.Repaint in Form2.WindowPosChange (TMessage) mache, wird

a) Canvas.FillRect(ClientRect) nicht ordentlich gezeichnet, erst wenn ich das Fenster (Form1) Maxi und dann Minimire oder umgekehrt wird der Canvas richtig gemalt.

Der Canvas wird immer vom MDIChild Fenster Left,Top aus und dann 200,300 Pixel weit gezeichnet. und nicht von 0,0 an bis Width, Height (Form1).

Wenn ich nun das MDIChild Fenster Form2 verschiebe, dann wird auch nicht die Linie so gezeichent wie sie sein soll, erst wieder beim Maxi und Miniminimiren wird odnungsgemäß gezeichnet.

Hier der Code den ich verwende:

procedure TForm1.FormPaint(Sender: TObject);

begin

if MDIChildCount > 1 then

begin

Canvas.Pen.Color := clRed;

Canvas.Brush.Color := clRed;

Canvas.FillRect(Rect(0,0,Form1.Width,Form1.Height));

1.Canvas.Pen.Color := clBlack;

Canvas.MoveTo((MDIChildren[0] as TForm2).Left-20,(MDIChildren[0] as TForm2).Top-20);

Canvas.LineTo((MDIChildren[0] as TForm2).Left-20,(MDIChildren[0] as TForm2).Top-20);

Canvas.LineTo((MDIChildren[1] as TForm2).Left-20,(MDIChildren[1] as TForm2).Top-20);

end else

begin

Canvas.Pen.Color := clRed;

Canvas.Brush.Color := clRed;

Canvas.FillRect(Rect(0,0,Form1.Width,Form1.Height));

Canvas.Pen.Color := clBlack;

Canvas.MoveTo(100,100);

Canvas.LineTo((MDIChildren[0] as TForm2).Left-20,(MDIChildren[0] as TForm2).Top-20);

end;

end;

Tform2 Klasse:

private:

procedure WMPosChange(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING;

procedure TForm2.WMPosChange(var Message: TWMWindowPosChanging);

begin

// with PWindowPos(TMessage(Message).lParam)^ do

// Flags:=Flags or SWP_NOMOVE;

Form1.Repaint;

end;

Für Lösungen für dieses doofe Problem (also das ordnungsgemäße Zeichnen) bin ich euch Dankbar

Mfg

paule

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...