Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem mit ShowModal (https://www.delphipraxis.net/151914-problem-mit-showmodal.html)

Silk 6. Jun 2010 19:57

Problem mit ShowModal
 
Hallo,

ich habe Delphi 2005 PE und folgendes Problem:

Ich will ein Formular mit showModal anzeigen.
Auf das Formular will ich vorher auch etwas zeichnen (canvas).
Leider funktioniert das zeichnen/positionieren nur nach myForm.Show.
Und danach funktioniert kein myForm.ShowModal mehr (Fenster bereits sichtbar).
Mache ich am Anfang myForm.ShowModal, kann ich ja nichts mehr zeichnen.

Code:
   // ..

   breite:=900;
   hoehe:=670;
   myForm:=TForm.create(nil);
   myForm.Width:=breite;
   myForm.Height:=hoehe;
   myForm.Show; // sonst funktioniert das zeichnen nicht
   myForm.Left:=(Screen.Width - myForm.Width) div 2;
   myForm.Top:=20;
   myForm.Color:=clWhite;
   myForm.BorderIcons:=[];
   myForm.BorderStyle:=bsNone;

   MyForm.Canvas.Pen.Color:=clBlack;
   MyForm.Canvas.RoundRect(5,5,MyForm.Width-5,myForm.Height-5,20,20);

   // weiteres zeichnen
   // ..

   myForm.OnClick:=CloseMyForm;

   // MyForm.ShowModal();   // hier sollte eigentlich ShowModal stehen,
                             // funktioniert aber nicht, da das Fenster bereits sichtabr ist

   // ..
Was mache ich hier falsch?

himitsu 6. Jun 2010 20:11

AW: Problem mit ShowModal
 
Wenn das Formular nicht sichtbar ist, dann malst du ins nix.

Sobald die Form dann angezeigt wird, wird sie das erstmal komplett neu gezeichnet.

im OnPaint der Form kannst du auf diese draufmalen, sobald sie angezeigt, bzw. jedesmal wenn neu gezeichnet wird.

Bernhard Geyer 6. Jun 2010 20:12

AW: Problem mit ShowModal
 
Zitat:

Zitat von Silk (Beitrag 1026126)
Was mache ich hier falsch?

Du mußt deine Zeichenoperationen ins OnDraw/OnPaint des Formulars verlegen. Am besten an entsprechender Positon eine TPaintbox legen und deren OnDraw/OnPaint-Event verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz