![]() |
gemeinsam auf ein paintevent zugreifen!
Hallo hab ein problem das ich einfach nich gelöst bekomme und zwar will ich zur lauf zeit mehrer picturbox's erzeugen die alles auf ein gemeinsames PaintEvent zu greifen sollen.
ich habe also eine procedure geschrieben die das macht was ich will ;)
Delphi-Quellcode:
das klappt auch alles.
procedure twinform.grafik(sender: System.Object; e: System.Windows.Forms.PaintEventArgs);
var rec: rectangle; rec2: rectangle; begin self.Name := (sender as control).Name; e.Graphics.Clear(self.BackColor); e.Graphics.ScaleTransform(x,x); e.Graphics.TranslateTransform(30,30); e.Graphics.RotateTransform(winkel); rec := rectangle.Create(-22,-22,43,43); rec2 := rectangle.Create(-20,-20,43,43); e.Graphics.FillRectangle(solidbrush.Create(color.black),rec2); e.Graphics.FillRectangle(solidbrush.Create(color.gray),rec); e.Graphics.DrawRectangle(pen.create(color.Black),rec); textbox1.Text := e.ToString; e.Graphics.DrawImage(self.PictureBox1.Image, -20, -20); end; ich hab probeweiße zur entwurfszeit eine picturebox erschaffen und übergebe den sender so das die procedure weis auf welche picturebox sie das event anwenden soll.
Delphi-Quellcode:
aber auch nur weil "e" das gleiche event hat wie die prozedure
procedure TWinForm.PictureBox1_Paint(sender: System.Object; e: System.Windows.Forms.PaintEventArgs);
begin self.grafik(picturebox1, e); end; nun will ich eine neue picturebox erzeugen mittels:
Delphi-Quellcode:
was muss ich bei "HIER" übergeben damit es funktioniert????
procedure TWinForm.Button1_Click(sender: System.Object; e: System.EventArgs);
begin picbox := system.Windows.Forms.PictureBox.Create; picbox.Name := 'picturebox2'; picbox.Bounds := rectangle.Create(80,20,70,70); self.Controls.Add(picbox); include(self.picbox.Paint, grafik(picbox.Name, {HIER} ))); end; ich komm einfach nicht weiter :wall: vielen dank für eure hilfe!!!! |
Re: gemeinsam auf ein paintevent zugreifen!
MMh. Unter Win32 hat man Events so zugewiesen:
self.picbox.OnPaint:=grafik; Da werden doch noch garkeine Parameter übergeben :gruebel:. Hat sich das so grundlegend in Net geändert ... :gruebel: Vielleicht geht ja auch einfach: include(self.picbox.Paint, grafik); Die Parameter für einen Event können doch erst bekannt sein, wenn das Event auftritt ... |
Re: gemeinsam auf ein paintevent zugreifen!
Klappt leider beides nicht. aber danke...
|
Re: gemeinsam auf ein paintevent zugreifen!
Schau doch einfach in den vom Form-Editor erstellten Code, dort siehst du, wie man in Delphi.NET EventHandler zuweist.
Code:
this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.PictureBox1Paint);
|
Re: gemeinsam auf ein paintevent zugreifen!
leider kann ich mit include dem ganzen keine prozedur zuweißen da kommen dann immer fehler:
[Fehler] WinForm.pas(264): E2010 Inkompatible Typen: 'EventHandler' und 'procedure, untyped pointer or untyped parameter' was mach ich bloß mit meinem..
Delphi-Quellcode:
procedure TWinForm.MenuItem7_Click(sender: System.Object; e: System.EventArgs);
begin picbox := system.Windows.Forms.PictureBox.Create; picbox.Name := 'picturebox2'; picbox.Bounds := rectangle.Create(80,20,70,70); self.Controls.Add(picbox); Include(Self.Picbox.Paint, Self.grafik); Include(Self.Picbox.MouseEnter, maus_rein(x)); Include(Self.Picbox.MouseLeave, Self.PictureBox1_MouseLeave); end; |
Re: gemeinsam auf ein paintevent zugreifen!
Ignorierst du eigentlich alle Tipps? jim_raynor hat dir gesagt, dass man unter Win32 keine Parameter angeben muss, das ist auch unter .NET richtig. Also kann
Delphi-Quellcode:
nicht funktionieren. Ich habe dir geraten, dir die von Delphi generierten Sourcen anzuschauen, denn dort muss es ja richtig sein.
Include(Self.Picbox.MouseEnter, maus_rein(x));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 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