![]() |
FPC / Custom TPaintbox: Onpaint deklarieren
Hallo liebe Delphi/FPC Freunde,
ich habe eine Frage bzgl. der Onpaint Methode der TPaintbox in FPC. Der Code unten soll mir eine eigene TPaintbox Klasse namens TMyPB erstellen. Das Onpaint definiere ich ueber die procedure Mypaint. Beim Kompilieren bekomme ich die Rueckmeldung: mypaintbox.pas(49,15) Error: Wrong number of parameters specified for call to "Mypaint" mypaintbox.pas(17,15) Error: Found declaration: Mypaint(TObject); Wo liegt der Fehler ? (FPC 3.0.0) Besten Dank im voraus fuer Euere Inputs ! LG, Wolfgang
Delphi-Quellcode:
unit Mypaintbox;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, Grids, ExtCtrls, FGL; type TMyPB = class(TPaintBox) private x, y: Integer; binnum: Integer; [COLOR="Yellow"] procedure Mypaint(Sender: TObject);[/COLOR] public constructor Create(AOwner: TComponent); overload; constructor Create(AOwner: TComponent; TLeft,TTop,TWidth,THeight: Integer; xco,yco: Integer; bin: Integer; bincolor: TColor); overload; destructor Destroy; override; end; implementation //////////////////////////////////////////////////////////////////////////////// constructor TMyPB.Create(AOwner: TComponent); begin inherited Create(AOwner); end; //////////////////////////////////////////////////////////////////////////////// constructor TMyPB.Create(AOwner: TComponent; TLeft,TTop,TWidth,THeight: Integer; xco,yco: Integer; bin: Integer; bincolor: TColor); begin inherited Create(AOwner); Left :=TLeft; Top :=TTop; Width :=TWidth; Height :=THeight; Color :=bincolor; x :=xco; y :=yco; [COLOR="Yellow"] OnPaint :=Mypaint;[/COLOR] end; //////////////////////////////////////////////////////////////////////////////// destructor TMyPB.Destroy; begin inherited Destroy; end; //////////////////////////////////////////////////////////////////////////////// procedure TMyPB.Mypaint(Sender: TObject); begin TMyPB(Sender).Canvas.FillRect(TMyPB(Sender).Canvas.ClipRect); end; end. |
AW: FPC / Custom TPaintbox: Onpaint deklarieren
Wenn du nicht im Delphimodus, sondern mit objfpc programmierst, dann musst du bei der Zuweisung ein @ davor machen:
Delphi-Quellcode:
OnPaint := @Mypaint;
|
AW: FPC / Custom TPaintbox: Onpaint deklarieren
@Baumina: uff, so simpel... Herzlichen Dank ! Ich hatte den Code aus einem meiner alten Delphi-Programme rueberkopiert und mich gewundert,
warum es nicht klappt. |
AW: FPC / Custom TPaintbox: Onpaint deklarieren
Es empfiehlt sich bei der Ableitung von
Delphi-Quellcode:
die
TPaintBox
Delphi-Quellcode:
Methode
protected
![]() ![]() Die Eigenschaft ist
Delphi-Quellcode:
und kann von aussen neu belegt werden und schwupps wird der eigene Code nicht mehr ausgeführt.
published
Delphi-Quellcode:
procedure TMyPaintBox.Paint;
begin // Hier eigener Code vor dem Aufruf von OnPaint inherited; // Auskommentieren, wenn OnPaint gar nicht aufgerufen werden soll // Hier eigener Code nach dem Aufruf von OnPaint end; |
AW: FPC / Custom TPaintbox: Onpaint deklarieren
@SirRufo Merci, werde ich ausprobieren !
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04: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