Thema: Delphi Eigene Komponente......

Einzelnen Beitrag anzeigen

Benutzerbild von Vale
Vale

Registriert seit: 1. Okt 2003
Ort: Pforzheim
14 Beiträge
 
Delphi 5 Standard
 
#1

Eigene Komponente......

  Alt 27. Jan 2004, 16:48
Hi.....

so........dann mal meine Fragen!

Also ich möchte für mein Projekt ne eigene Komponente erstellen.
Das ist ein rechteckiges Panel......mit nem runden Shape drauf.
Wenn man solche drei untereinander stellt....dann siehts wie ne
ampel aus......nur zum mal vorstellen!
Des hab ich jetzt mal alles in ne eigene klasse gemacht,
hat soweit auch ganz gut geklappt.
Jetzt möchte ich eine Eigenschaft Farbe haben, wo ich
zwischen meinen sechs vorgegebenen Farben auswählen kann.
Aber irgendwie bekomm ich des mit der property nicht mehr hin!

Ich post mal meinen Quelltext......aber net erschrecken.......

Code:
unit ZeichneU;

interface

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


type
TFarbe = TColor;
TZeichnePanel = class(TPanel)
              protected
               Licht: TShape;
               fColor: TColor;
               procedure setColor(c: TColor);
               procedure myOnResize(Sender: TObject);
              public
               constructor Create(AOwner: TComponent); override;
               procedure Paint; override;
              published
               property Farbe: TColor read fcolor write setcolor;
end; // of TZeichnePanel

procedure Register;

var
rot: TFarbe;
gruen: TFarbe;
blau: TFarbe;
gelb: TFarbe;
rosa: TFarbe;
tuerkis: TFarbe;

implementation

constructor TZeichnePanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Width := 30;
Height := 30;
Top := 100;
Left := 100;
setcolor(fcolor);
Licht := TShape.Create(Self); //Shape,Kreis
Licht.Parent := Self;
Licht.Width := 29;
Licht.Height := 29;
Licht.Shape := stCircle;
Licht.Top := 1;
Licht.Left := 1;
Licht.Brush.Color := fcolor;
OnResize := myOnResize;
end;

procedure TZeichnePanel.Paint;
begin
canvas.Brush.Color := clsilver;
canvas.Pen.color := clblack;
canvas.rectangle(0,0,50,50);

end;


procedure TZeichnePanel.setColor(c: TColor);
var
x:integer;
begin

if c = rot then fcolor := clred;
if c = gruen then fcolor := cllime;
if c = gelb then fcolor := clyellow;
if c = blau then fcolor := clblue;
if c = rosa then fcolor := clfuchsia;
if c = tuerkis then fcolor := clteal;

Licht := TShape.Create(Self); //Shape,Kreis
//Licht.Parent := Self;
Licht.Brush.Color := fcolor;

Randomize;             //Zufall für Farben!! 
x := random(6);
case x of
  0: fcolor := clred;
  1: fcolor := cllime;
  2: fcolor := clblue;
  3: fcolor := clyellow;
  4: fcolor := clfuchsia;
  5: fcolor := clteal;
end;

end;



procedure TZeichnePanel.myOnResize(Sender: TObject);
begin
paint;
end;


Procedure Register;
begin
RegisterComponents('Standard',[TZeichnePanel]);
end;


end.



Ehrlich gesagt peil ich schon teilweise selber net ganz durch.
Steht teilweise absoluter schwachsinn drin.....
Ehrlich gesagt peil ich schon teilweise selber net ganz durch.
Steht teilweise absoluter schwachsinn drin.....weiß ich auch selber,
aber so macht er wenigstens irgendwas
Es geht um die TFarbe.......hab schon alles mögliche ausprobiert.
Habs auch scho mit record probiert bin aber auch net weit gekommen.

Ich möcht also nur......das wenn ich die Komponente auf meine
Oberfläche ziehe....... ich unter Farbe meine sechs zur auswahl
habe.....und das SHAPE auch dementsprechend die farbe hat!?

Hoffe mal das jmd. wenigstens geblickt hat was ich will!

Na denn..........kann mir "nixblicker" jemand helfe?
Bye bye, Vale 8)


www.vales-page.de.vu
  Mit Zitat antworten Zitat