AGB  ·  Datenschutz  ·  Impressum  







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

Ampel komponete

Ein Thema von fox67 · begonnen am 15. Feb 2011 · letzter Beitrag vom 16. Feb 2011
Antwort Antwort
fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#1

Ampel komponete

  Alt 15. Feb 2011, 17:49
Hallo ich würde gerne eine ampel komponete erstellen. bis jetzt habe ich noch nie eigene komponenten erstellt, deshalb habe ich mir von allenmöglichen seiten tutorials angeschaut doch keins hatt mir so wirklich geholfen.
Delphi-Quellcode:
unit GraphicControl1;

interface

uses
  SysUtils, Classes, Controls;

type
  TAmpel = class(TGraphicControl)
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Additional', [TAmpel]);
end;

end.
Wo muß hier die paint routine rein
Kann ich in die paint routine diesen quelltext eingeben?
Delphi-Quellcode:
canvas.pen.color := clwindowframe;
canvas.brush.color := clwindowframe;
canvas.rectangle(0,0,TAmbel.hight,TAmpel.width);//Ampelkasten
canvas.pen.color := clblack;
canvas.brush.color := clblack;
canvas.circle(5,40,35,35); //Ampelleuchten im auszustand
canvas.circle(5,80,35,35);
canvas.circle(5,120,35,35);
Die ampel sollte im objekinspektor 2 eigenschaften haben
einmal wo man die ampelphasen auswählen kann und einmal bei dem man die ausschält und sie dann gelb blinkt. wie kann ich dass alles verwirklichen?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Ampel komponete

  Alt 15. Feb 2011, 18:01
Die Paint-Methode sollte im protected-Abschnitt überschrieben werden. Eigenschaften, die im OI erscheinen sollen, gehören in den published-Abschnitt. Und den Code kannst Du natürlich ins Paint schreiben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Ampel komponete

  Alt 15. Feb 2011, 18:04
danke für deine antwort
  Mit Zitat antworten Zitat
fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Ampel komponete

  Alt 15. Feb 2011, 18:33
Wie kriege ich es jetzt hin das man im objektinspector die verschiedenen phasen auswählen kann?
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#5

AW: Ampel komponete

  Alt 15. Feb 2011, 18:59
Mit einer Enumeration:
Du deklarierst über deiner Klasse den Typ
Delphi-Quellcode:
type
  TAmpelphase=(apErstePhase, apZweitePhase, ..);
dann ein published-property in deiner Klasse:
property Ampelphase: TAmpelphase read FAmpelphase write SetAmpelphase; //die Setter-methode kannst du auch weglassen Natürlich musst du noch FAmpelphase in private deklarieren, sowie die Setter-Methode
Beides sollte auch die Klassenvervollständigung Strg-Shift-C machen.

Die Setter Methode:
procedure SetAmpelphase(const value: TAmpelphase);
  Mit Zitat antworten Zitat
fox67

Registriert seit: 6. Okt 2010
Ort: 72661 Grafenberg
181 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Ampel komponete

  Alt 15. Feb 2011, 20:34
und was mus jetzt in die setter methode kann ich da jetzt die einzelnen ampelphasen zeichnen lassen?
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

AW: Ampel komponete

  Alt 15. Feb 2011, 20:38
In die Settermethode kommt
1. Setzen des privaten Felds
2. ein Invalidate()
Letzteres bewirkt - im Gegensatz zu einem Paint() Aufruf - dass das Control nciht sofort neu gezeichnet wird, sondern nur wenn wieder "Zeit ist"
  Mit Zitat antworten Zitat
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#8

AW: Ampel komponete

  Alt 16. Feb 2011, 09:03
Du mußt dann natürlich auch in der Paint Methode die Phasen abfragen und entsprechend die Kreise zeichnen. Und damit das beim Erstellen der Komponente auch wohldefiniert ist muß beim Create die Phase gesetzt sein, oder du gibst der Property ein default.
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#9

AW: Ampel komponete

  Alt 16. Feb 2011, 11:00
In die Settermethode kommt [...]
Als erstes sollte man dazu noch abfragen, ob der neue Wert auch wirklich anders ist als der aktuelle, damit man nicht sinnlos neu zeichnen muss.
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  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 10:29 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