AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Brush- und Pen-Farbe wird nicht angenommen
Thema durchsuchen
Ansicht
Themen-Optionen

Brush- und Pen-Farbe wird nicht angenommen

Ein Thema von Alexander86 · begonnen am 7. Apr 2005 · letzter Beitrag vom 8. Apr 2005
Antwort Antwort
Alexander86

Registriert seit: 7. Apr 2005
4 Beiträge
 
#1

Brush- und Pen-Farbe wird nicht angenommen

  Alt 7. Apr 2005, 17:34
Hallo,

ich versuche seit kurzem mir die Programmiersprache Delphi beizubringen. Zur Hilfestellung stehen mir ein paar Computerbild-Artikel, die sich an Delphi-Anfänger richtet, also genau das Richtig für mich.

Nun hänge ich aber an folgendem Code:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TGrafikobjekt=class
    x,y:integer;
    fuellfarbe:tcolor;
    randfarbe:tcolor;
    procedure anzeigen;virtual;
  end;

  TKreis=class(TGrafikobjekt)
    radius:integer;
    procedure anzeigen;override;
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TKreis.anzeigen;
begin
  form1.Canvas.Ellipse(x,y,x+radius*2,y+radius*2);
end;

procedure TGrafikobjekt.anzeigen;
begin
  form1.Canvas.Pen.Color:=randfarbe;
  form1.Canvas.Brush.Color:=fuellfarbe;
end;

procedure TForm1.Button1Click(Sender: TObject);
var Kreis:TKreis;
begin
  Kreis:=TKreis.Create;
  Kreis.x:=50;
  Kreis.y:=60;
  Kreis.radius:=100;
  Kreis.randfarbe:=clGreen;
  Kreis.fuellfarbe:=clYellow;
  Kreis.anzeigen;
  Kreis.Destroy;
end;

end.
Bei diesem Code wird nach einem Klick auf den Button Button1 ein Kreis auf das Formular gezeichnet. Dabei sollte der Rand des Kreises grün und die Innenfläche gelb angezeigt werden. Leider werden die übergebenen Farben aber nicht angenommen, sondern die Standartfarben angezeigt: Rand: schwarz, Innenfläche: durchsichtig

Kann mir bitte einer erklären, wo der Fehler liegt?

Mfg Alexander
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Brush- und Pen-Farbe wird nicht angenommen

  Alt 7. Apr 2005, 18:00
Die Methode TKreis.Anzeigen sieht bei dir so aus:
Delphi-Quellcode:
procedure TKreis.anzeigen;
begin
  form1.Canvas.Ellipse(x,y,x+radius*2,y+radius*2);
end;
Sie sollte so aussehen:
Delphi-Quellcode:
procedure TKreis.anzeigen;
begin
  inherited;
  form1.Canvas.Ellipse(x,y,x+radius*2,y+radius*2);
end;
  Mit Zitat antworten Zitat
Alexander86

Registriert seit: 7. Apr 2005
4 Beiträge
 
#3

Re: Brush- und Pen-Farbe wird nicht angenommen

  Alt 7. Apr 2005, 18:29
Hallo marabu,

vielen Dank, nun geht es

Mfg Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Brush- und Pen-Farbe wird nicht angenommen

  Alt 7. Apr 2005, 18:30
Weißt du auch warum es jetzt geht?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Alexander86

Registriert seit: 7. Apr 2005
4 Beiträge
 
#5

Re: Brush- und Pen-Farbe wird nicht angenommen

  Alt 8. Apr 2005, 18:10
Hallo Luckie,

ich vermute mal, dass der Befehl "inherited" dafür sorgt, dass bei der Haupt-Klasse auch die Methode "anzeigen" ausgeführt wird. Lieg ich da richtig?
Hab beim Googeln schon festgestellt, dass der Befehl "inherited" auch Parameter annehmen und einen Rückgabewert zurückgeben kann.

Wäre bestimmt sehr hilfreich, wenn ihr mir den Befehl etwas erklären könntet

Mfg Alexander
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#6

Re: Brush- und Pen-Farbe wird nicht angenommen

  Alt 8. Apr 2005, 18:18
Zitat:
dass der Befehl "inherited" auch Parameter annehmen und einen Rückgabewert zurückgeben kann.
Die Direktive "inherited" ruft die Vorgänger-Prozedur/Funktion der Vorgängerklasse auf.

D.h eine Prozedur die den selben Name hat wie die aktuelle Prozedur und keine Parameter hat sieht so aus:

Delphi-Quellcode:
procedure TNachfolgerKlasse.EineProzedur;
  inherited; // Ruft "EineProzedur" der Vorgängerklasse auf
end;
Eine Prozedur die einen Parameter weitergibt so:

Delphi-Quellcode:
procedure TNachfolgerKlasse.EineProzedur(AParam: string);
  inherited EineProzedur(AParam); // Ruft "EineProzedur" der Vorgängerklasse auf und übergibt den Parameter
end;
Bei einer Funktion ohne Parameter sieht das so aus:

Delphi-Quellcode:
function TNachfolgerKlasse.EineFunktion;
  Result := inherited; // Ruft "EineFunktion" der Vorgängerklasse auf
end;
Eine Funktion die einen Parameter weitergibt:

Delphi-Quellcode:
function TNachfolgerKlasse.EineFunktion(AParam: string);
  Result := inherited EineFunktion(AParam); // Ruft "EineFunktion" der Vorgängerklasse auf
end;

Bye


Btw: Wenn du in deiner abgeleiteten Klasse eine Funktion bzw Prozedur aufrufen möchtest die nicht den gleichen Namen hat wie der in der du dich befindest, reicht "inherited" allein nicht, sondern der prozedur/funktion-name muss dahinter.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Alexander86

Registriert seit: 7. Apr 2005
4 Beiträge
 
#7

Re: Brush- und Pen-Farbe wird nicht angenommen

  Alt 8. Apr 2005, 22:03
Hallo Pseudemys Nelsoni,

vielen Dank für deine Bemühungen.
Ist ja ziemlich interessant, was man alles in Delphi machen kann. Bei Visual Basic 6.0 ist dies nicht möglich.

Mfg Alexander
  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 01:15 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