Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Canvas - BringToFront gesucht (https://www.delphipraxis.net/114492-canvas-bringtofront-gesucht.html)

Reinhardtinho 26. Mai 2008 12:57


Canvas - BringToFront gesucht
 
Hi,

ich möchte mit Hilfe von Canvas etwas auf mein Formular zeichnen. Wenn dort aber andere Komponenten liegen, wird die Zeichnung unterhalb dieser ausgeführt.

Gibt es eine Möglichkeit, oben drauf zu zeichnen?


Danke und MFG
Lorenz

mkinzler 26. Mai 2008 12:58

Re: Canvas - BringToFront gesucht
 
TCanvas ist keine Komponente. Nimm eine TPaintBox oder ein TImage.

Luckie 26. Mai 2008 13:03

Re: Canvas - BringToFront gesucht
 
Als Canvas wird die Fläche von Fenstern bezeichnet, auf die man zeichnen kann. Du kannst dir einen Canvas (dt: Leinwand) wie eine Leinwand vorstellen. Schaltflächen, Texteingabefelder usw. besitzen auch eine Leinwand. Wenn du also solche Kontrollelemente auf deinem Fenster hast, ist das als wenn du mehrere Leinwände übereinander gelegt hast. Zeichnest du auf der untersten, wird dies natürlich von den darüber liegenden überdeckt. Du musst dir also was anderes einfallen lassen bzw. dein Konzept überarbeiten.

Nähere Informationen wären sehr hilfreich, um dir bei der Lösung deines Problems zu helfen.

Reinhardtinho 26. Mai 2008 13:18

Re: Canvas - BringToFront gesucht
 
Ich versuche mich gerade an einer Lösung des Problems.

Ich habe auch einen Ansatz über Canvas das ganze zu zeichnen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
begin

  with Canvas do
  begin
    Pen.Color  := clBlack;
    Pen.Style  := psSolid;
    Brush.Style := bsClear;
  end; (* of with *)

  for i := 1 to 5 do
  begin
    Canvas.Rectangle(50 + (i * 50), 50 + (i * 50), self.Width - (50 + (i * 50)), self.Height - (50 + (i * 50)));
    Sleep(100);
    self.Refresh;
  end; (* of for *)
end;
Bei einem leeren Formular ist das kein Problem, aber bei mir liegen viele andere Elemente wie Panels, ListBoxen, etc. auf dem Formular, so dass man gar nichts sieht.

Diese Rechtecke sollen aber auf der Oberfläche des Programms gezeichnet werden, also unabhänig davon, ob da ein weiteres Steuerelement drunterliegt oder nicht.

oki 26. Mai 2008 13:27

Re: Canvas - BringToFront gesucht
 
Hi Reinhardtinho,

ich glaube du hast zwie Post's übersehen (die meiner Vorredner). Wenndu auf den Canvas zeichnest ist das alles schön und gut, enthält dein Container (Formular) aber weitere Componenten, so werden sie beim neu zeichnen des Containers "über den Canvas" gezeichnet. Immer in der Reihenfolge Owner -> Child. Somit wird dein Zeichnen zwar ausgeführt, kurz danach die anderen Komponenten aber darüber gezeichnet.

Übriegens, dein Link hilft mir gar nicht weiter.

Wie schon gesagt, der Ansatz ist falsch. Wenn, dann mußt du eine weitere Komponente in den Vordergrund bringen und in dieser zeichnen.

Gruß oki

[edit] Fehler raus, Ergänzung rein! [/edit]

QuickAndDirty 26. Mai 2008 13:43

Re: Canvas - BringToFront gesucht
 
evtl. kannst du das die Paint Methode überschreiben so das alles wie du es brauchst läuft...ich denke allerdings nicht das
du weist was du da tust.

vielleicht macht es mehr Sinn wenn du sagst warum du über den Buttons malen willst...vielleicht haben wir dafür eine gut Lösung.

Luckie 26. Mai 2008 13:44

Re: Canvas - BringToFront gesucht
 
Der Grund steht in seinem letzten Posting verlinkt. Wenn ihr mal auf den Link klicken würdet, könntet ihr das Problem nachvollziehen und dazu noch in den Genuss einer Lösung von mir kommen. ;)

oki 26. Mai 2008 13:57

Re: Canvas - BringToFront gesucht
 
Zitat:

Zitat von Luckie
Der Grund steht in seinem letzten Posting verlinkt. Wenn ihr mal auf den Link klicken würdet, könntet ihr das Problem nachvollziehen und dazu noch in den Genuss einer Lösung von mir kommen. ;)

Ich hab mir den Link auch schon vorher angesehen. Besitze aber kein MS Word 2003 und habe nur verstanden, dass es eine Art Animation sein soll. Das du auf ein animiertes Fenster verweist hab ich auch bemerkt. Das scheint bei Lorenz nur nicht so zu sein, oder er hat es nicht verstanden.

Gruß oki

[edit] Ich hol mir hier auch mal meine Rechtschreibfehler zurück. Vielleicht kann ich die woanders noch gebrauchen. [/edit]

Reinhardtinho 26. Mai 2008 14:04

Re: Canvas - BringToFront gesucht
 
Dank Luckie's Lösung geändert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr.

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