![]() |
Prozedur eines anderen Type aufrufen
Hallo,
ich habe ein Programm (Delphi XE10.3) /Windows10) in dem ich eigene Typen deklariert habe. Nun möchte ich aus der Prozedur TExtShape9.MouseDown die Prozedur TExtShape10.Paint aufrufen. Ich weiß aber nicht wie????????????? Danke für die Hilfe. Gruß Jürgen
Delphi-Quellcode:
type
TExtShape9 = class(TShape) protected procedure Paint; override; procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; published property Caption; property Font; end; TExtShape10 = class(TShape) protected procedure Paint; override; procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; published property Caption; property Font; end; var Shcol9: TColor; Shcol10: TColor; procedure TExtShape9.Paint; begin inherited Paint; ....... Canvas.Brush.Color:=Shcol9; Brush.Color:=Shcol9; .......... end; procedure TExtShape10.Paint; begin inherited Paint; ....... Canvas.Brush.Color:=Shcol10; Brush.Color:=Shcol10; .......... end; procedure TExtShape9.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin inherited MouseDown(Button, Shift, X, Y); ....... Shcol10:=clYellow; TExtShape10.Paint; // dieser Befehl geht nicht end; procedure TExtShape10.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin inherited MouseDown(Button, Shift, X, Y); ....... end; procedure TForm1.FormActivate(Sender: TObject); begin ...... with TExtShape9.Create(Form1) do begin parent:=Form1; Caption:='Einzahlen'; end; with TExtShape10.Create(Form1) do begin parent:=Form1; Caption:='Auszahlen'; end; ...... end; |
AW: Prozedur eines anderen Type aufrufen
Du kannst nicht von der einen Klasse in der Anderen reinpfuschen, aus gutem Grund.
Ausserdem sind die Paint Funktionen keine "class procedures", die brauchen also ein Object das Du ändern möchtest. Entweder Du machst das extern, z.B. im OnMouseDown Event mit MyObjectInstance.Repaint, oder Du übergibst dem TExShape9 das Object des TExShap10. Generell weiss ich aber nicht was Du überhaupt erreichen möchtest, ich denke das geht etwas in die falsche Richtung. |
AW: Prozedur eines anderen Type aufrufen
In der Prozedur Paint setzte ich unter anderem die Farbe des Shape.
Also in TExtShape9 ändere ich die Farbe von TExtShape10. Nun müsste ich Paint von TExtShape10 aufrufen, damit die Farbänderung wirksam wird. |
AW: Prozedur eines anderen Type aufrufen
Farbänderungen zur Farbauswahl sollte man aber eigentlich von aussen machen.
Höchstens das setzen eines Pinsels wäre in Paint Ok. Das erst beim Malen zu Ändern macht wenig Sinn. Man setzt den Shapes vorher eine Farbe und dann malen die sich selbst. Die Farbe eines Objekter beim Malen eines Anderen zu ändern leuchtet mir nicht ein. Wenn Du das möchtest dann besser einen eigenen OnColorChange Event in die Klasse einbauen, der die Farbänerung an Andere weiterreicht. Was genau willst Du erreichen ? |
AW: Prozedur eines anderen Type aufrufen
ich habe das Shape als Button benutzt.
Wenn man nun den Shape9 drückt, so soll sich auch die Farbe von Shape10 ändern. |
AW: Prozedur eines anderen Type aufrufen
Vielleicht bist Du da an einer ganz falschen Stelle.
Schau Dir mal Events und Actions an, wie hier in dem Video von generic schön erklärt. ![]() Bin gerade nicht am PC, such mal nach den Begriffen zusammen mit Delphi. Da müsste es genug Info geben. |
AW: Prozedur eines anderen Type aufrufen
OK
ich habe es gefunden. Anstatt: TExtShape10.Paint; die Befehle: Form1.Repaint; Form1.Refresh; Gruß Jürgen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 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