AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Eigene Komponente......

Eigene Komponente......

Ein Thema von Vale · begonnen am 27. Jan 2004 · letzter Beitrag vom 27. Jan 2004
Antwort Antwort
Benutzerbild von Vale
Vale

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

Eigene Komponente......

  Alt 27. Jan 2004, 17: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
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Eigene Komponente......

  Alt 27. Jan 2004, 18:19
Servus Valeri !

Ehrlich gesagt, hab ich nicht verstanden was du möchtest ?
Was willst du mit der property verändern ?

die Farbe der Ampel, oder die "Random-Farben" ?
falls letzteres, so brauchst du 6 propertis,
eine pro Farbe !
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: Eigene Komponente......

  Alt 27. Jan 2004, 18:24
Du versuchst viel zu viel auf einmal. Ein Panel, ein Shape, die Farben etc. Und das alles mit einer neuen Komponente und möglichst im OI einstellbar. Auf Anhieb sehe ich zwar keinen Fehler, aber ich würde zuerst mal versuchen NUR das Panel einzufärben und DANACH Schritt für Schritt weiterzumachen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Eigene Komponente......

  Alt 27. Jan 2004, 18:32
Hallo Vale,
es sieht so aus, als ob Du Deine erste Komponente entwickeln möchtest.
In deinem Source sind soviele Ungereimtheiten, dass Dir nur raten kann:
Arbeite ein Komponententutorial durch.
Komponententutorial
  Mit Zitat antworten Zitat
Benutzerbild von Vale
Vale

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

Re: Eigene Komponente......

  Alt 27. Jan 2004, 22:37
Hi.....

erstmal danke für die Tipps!

@MrKnogge
Ich möchte mit der Property Farbe, das Shape auf meinem Panel umfärben.
Und zwar sollen da die sechs Farben zur auswahl stehn, die ich ausgewählt habe.


Müsste eigentlich so gehn, habs scho so ähnlich gemacht, nur habe ich die Farbe
dann mit ner Combobox ausgewählt, jetzt möcht ich es aber direkt als Eigenschaft
ansprechen können.

Sollt ichs dann vielleicht doch lieber so machen....
Code:
type
TFarbe = record
      rot: TColor;
      blau: TColor;
      gelb: TColor;
      ....
end;

....oder hat jemand nen besseren Vorschlag?
Bye bye, Vale 8)


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

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#6

Re: Eigene Komponente......

  Alt 27. Jan 2004, 22:49
Also am einfachsten kann man einen Enumtyp für den OI verwenden:
Delphi-Quellcode:
type
  TFarbe = (fbRot, fbGruen, fbBlau, fbGelb, fbRosa, fbTuerkis);
const
  Farben : array[TFarbe] Of TColor = (clRed, clLime, clBlue, clYellow, clFuchsia, clTeal);

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

//...

procedure TZeichnePanel.setColor(c: TFarbe);
begin
  fFarbe := c;
  fcolor := Farben[c];
end;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:18 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