AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FPC / Custom TPaintbox: Onpaint deklarieren

Ein Thema von hochundweit · begonnen am 16. Mär 2016 · letzter Beitrag vom 17. Mär 2016
Antwort Antwort
hochundweit

Registriert seit: 9. Mär 2014
14 Beiträge
 
#1

FPC / Custom TPaintbox: Onpaint deklarieren

  Alt 16. Mär 2016, 14:45
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.

Geändert von hochundweit (16. Mär 2016 um 14:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: FPC / Custom TPaintbox: Onpaint deklarieren

  Alt 16. Mär 2016, 15:07
Wenn du nicht im Delphimodus, sondern mit objfpc programmierst, dann musst du bei der Zuweisung ein @ davor machen:
OnPaint := @Mypaint;
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
hochundweit

Registriert seit: 9. Mär 2014
14 Beiträge
 
#3

AW: FPC / Custom TPaintbox: Onpaint deklarieren

  Alt 16. Mär 2016, 15:23
@Baumina: uff, so simpel... Herzlichen Dank ! Ich hatte den Code aus einem meiner alten Delphi-Programme rueberkopiert und mich gewundert,
warum es nicht klappt.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: FPC / Custom TPaintbox: Onpaint deklarieren

  Alt 16. Mär 2016, 17:39
Es empfiehlt sich bei der Ableitung von TPaintBox die protected Methode Delphi-Referenz durchsuchenTPaintBox.Paint zu überschreiben und nicht die Eigenschaft Delphi-Referenz durchsuchenTPaintBox.OnPaint intern zu belegen.

Die Eigenschaft ist published und kann von aussen neu belegt werden und schwupps wird der eigene Code nicht mehr ausgeführt.
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;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
hochundweit

Registriert seit: 9. Mär 2014
14 Beiträge
 
#5

AW: FPC / Custom TPaintbox: Onpaint deklarieren

  Alt 17. Mär 2016, 11:59
@SirRufo Merci, werde ich ausprobieren !
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15: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