paule22 Geschrieben 12. Dezember 2003 Geschrieben 12. Dezember 2003 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
geloescht_JesterDay Geschrieben 12. Dezember 2003 Geschrieben 12. Dezember 2003 Hallo, also ich kapiere irgendwie nicht so ganz, was der Code überhaupt bewirken soll. Was sollte den eigentlich rauskommen?
paule22 Geschrieben 13. Dezember 2003 Autor Geschrieben 13. Dezember 2003 Hallo, also es sollen 2 oder mehrere MDIChild Forms angezeigt werden (innerhalb einer MDIForm). dann sollen die Fenster mit Linien verbunden werden - so wie man das bei Access her kennt (Beziehungen).
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden