AGB  ·  Datenschutz  ·  Impressum  







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

Komponente (?) an Funktion übergeben

Ein Thema von Eknoes · begonnen am 5. Sep 2011 · letzter Beitrag vom 5. Sep 2011
Antwort Antwort
Eknoes

Registriert seit: 5. Sep 2011
4 Beiträge
 
#1

Komponente (?) an Funktion übergeben

  Alt 5. Sep 2011, 08:26
Delphi-Version: 5
Hallo,
Ich habe, wie schon zu erwarten, eine Frage zu Delphi. In Delphi bin ich zwar ein Neuling, habe allerdigns schon einiges an Erfahrung in anderen Programmiersprachen gesammelt.

Ich habe ein Projekt, dass dass aus einer Kreuzung mit 4 Ampeln besteht, die aufeinander abgestimmt sind. Die Ampeln bestehen aus jeweils 3 TShapes, die unterschiedlich gefärbt werden.

Jetzt will ich eine Funktion basteln, die eine Ampel in die nächste Phase bringt. Das ist auch kein problem, allerdings möchte ich der Funktion übergeben, wie die Ampel "heisst". ich versuche das mal in Code zu fassen, dass es leichter verständlich ist:

Code:
function naechstePhase(Ampel)
     Ampel.brush.color := red;
Ampel kann eben Ampel1, Ampel2, usw. sein, also dass ich mit einer Funktion unterschiedliche Ampeln ansprechen kann.

Ich hoffe ihr wisst was ich meine !?

Viele Grüße & schoneinmal Danke!
Jan
  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
 
#2

AW: Komponente (?) an Funktion übergeben

  Alt 5. Sep 2011, 08:40
Wie machst du das denn, wenn du eine Integer Zahl übergeben willst?
procedure TuWas( i : integer ); Und mit einem String?
procedure TuWas( s : string ); Wen wundert es dann, wenn eine Komponente/Objekt so übergeben wird:
procedure TuWas( Ampel : TAmpel );

(Ich gehe jetzt mal davon aus, dass die Ampel-Klasse tatsächlich auch TAmpel heisst - bietet sich ja irgendwie an)

Bei Objekten (dazu zählen auch die Komponenten) werden so nur die Referenzen auf das Objekt übergeben (was zum Arbeiten mit diesem Objekt auch völlig ausreicht).
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)

Geändert von Sir Rufo ( 5. Sep 2011 um 21:19 Uhr)
  Mit Zitat antworten Zitat
Eknoes

Registriert seit: 5. Sep 2011
4 Beiträge
 
#3

AW: Komponente (?) an Funktion übergeben

  Alt 5. Sep 2011, 15:10
Ah, ok, danke. Dann kann aber das ganze ja nur Ampel1 sein, ich möchte ja aber auch Ampel1, Ampel2, usw. übergeben, weil das ja alles verschiedene Dinger sind, von denen ich die Farbe ändern möchte. Das würde ja so nicht gehen, oder?

Du meintest etwas von Klasse, ich meine aber so ein "Objekt" aus dem Design Teil, in diesem Fall ein Shape.

Viele Grüße
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Komponente (?) an Funktion übergeben

  Alt 5. Sep 2011, 15:12
Dann kann aber das ganze ja nur Ampel1 sein, ...
Wie kommst Du denn darauf? Du kannst dort alles übergeben, was von TAmpel abstammt.
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
Benutzerbild von Jacques Murell
Jacques Murell

Registriert seit: 7. Jun 2010
113 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Komponente (?) an Funktion übergeben

  Alt 5. Sep 2011, 15:27
Zitat:
Ah, ok, danke. Dann kann aber das ganze ja nur Ampel1 sein, ich möchte ja aber auch Ampel1, Ampel2, usw. übergeben, weil das ja alles verschiedene Dinger sind, von denen ich die Farbe ändern möchte. Das würde ja so nicht gehen, oder?
Doch klar.

In etwa so:
Delphi-Quellcode:
procedure FaerbeAmpel(Ampel: TAmpel; Farbe: TColor);
begin
  Ampel.Brush.Color := Farbe;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  FaerbeAmpel(Ampel1, clRed);
  FaerbeAmpel(Ampel2, clGreen);
  // etc
end
  Mit Zitat antworten Zitat
Eknoes

Registriert seit: 5. Sep 2011
4 Beiträge
 
#6

AW: Komponente (?) an Funktion übergeben

  Alt 5. Sep 2011, 15:31
Achso. Ja super, dankeschön! Ging echt schnell ^^

lg
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Komponente (?) an Funktion übergeben

  Alt 5. Sep 2011, 15:33
Du meintest etwas von Klasse, ich meine aber so ein "Objekt" aus dem Design Teil, in diesem Fall ein Shape.
Es geht alles.

Beispiel:
Delphi-Quellcode:
type
  TForm7 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure MakeItReal(ALabel : TLabel; Cap : String);
  end;

var
  Form7: TForm7;

implementation

{$R *.dfm}

procedure TForm7.Button1Click(Sender: TObject);
begin
  MakeItReal(Label1, 'erste Beschriftung');
end;

procedure TForm7.Button2Click(Sender: TObject);
begin
  MakeItReal(Label2, 'zweite Beschriftung');
end;

procedure TForm7.Button3Click(Sender: TObject);
begin
  MakeItReal(Label3, 'dritte Beschriftung');
end;

procedure TForm7.MakeItReal(ALabel : TLabel; Cap : String);
begin
  ALabel.Caption := Cap;
end;

end.
  Mit Zitat antworten Zitat
Eknoes

Registriert seit: 5. Sep 2011
4 Beiträge
 
#8

AW: Komponente (?) an Funktion übergeben

  Alt 5. Sep 2011, 19:31
Perfekt! Vielen Dank nochmal!!!
  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 19:42 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