![]() |
Wie schreibe ich eine Funktion?
Ich bn ein Delphi Anfänger und habe eine generelle Frage:
Wie schreibe ich eine Funktion in Delphi (Delphi7)? Und wie rufe ich sie wieder auf? Aktuelles Beispiel: Ich programmiere z.Z. ein Fomular, dass nach verschiedenen Algorythmen eine Zahl von Binär in Dezimalwert umrechnet und umgekehrt. Gleichzeitig habe ich 8 TShapes eingefügt, die einen 8 Bit-Controller simulieren sollen. Ich könnte nun immer wieder hinter jedem Mousedown - Event jedes einzelnen Tshapes eine Prozedur hinterlegen, damit ein Binärwert aus den 8 Thsapes entsteht, die wie folgt arbeitet (Thshape1-8 Brush.Color=Rot -->1, Brush.Color=clblack -->0): Prozedur Tshape1.Mousedown Binärwert='' Binärstelle='' If Tshape1 = rot then Binärstelle = 1 Binärwert = Binärwert+Binärstelle else Binärstelle = 0 Binärwert = Binärwert+Binärstelle If Tshape2 = rot then Binärstelle = 1 Binärwert = Binärwert+Binärstelle else Binärstelle = 0 Binärwert = Binärwert+Binärstelle . . . bis einschliesslich TShape8 Das hinter jeden Mousedown nervt extrem und macht den Code nicht wirklich netter ... Ich würde gerne nur eine Funktion schreiben, die dann bei Mousedown einfach einmal aufgerufen wird. Wie schreibt man in Delphi eine Funktion und wie rufe ich diese auf? Nicht vergessen: Ein Delphi - Anfänger!! |
Re: Wie schreibe ich eine Funktion?
Ach ja:
Sollte es ein gutes Tutorial geben, in dem Erstellung von Funktionen und ähnlich Themen gut erklärt werden, freue ich mich über einen Link :-D |
Re: Wie schreibe ich eine Funktion?
Was Du möchtest, ist nicht das Schreiben einer Funktion, sondern das einer allgemein anwendbaren Methode. Dazu musst Du nur den Sender-Parameter auswerten. Beispiel:
Delphi-Quellcode:
Diese Methode kannst Du per Objektinspektor jedem Button auf Deinem Formular im OnClick-Event zuweisen.
procedure TFormBla.ButtonBlubbClick(Sender: TObject);
begin if Sender is TButton then ShowMessage(TButton(Sender).Name); end; |
Re: Wie schreibe ich eine Funktion?
Nun ist die Verwirrung perfekt ... ich möchte, dass je nach Steuerlementnamen des TShapes nun die Coloreigenschaften geändert werden. Der Compiler leuchtet wie ein Weihnachtsbaum ... hat jemand ne Idee?
Delphi-Quellcode:
procedure TForm1.SHAPEClick(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var TheShape: TComponentname; begin if Sender is TShape then begin TheShape:=TShape(Sender).Name; if TheShape.Brush.Color = Clmaroon then begin TheShape.Brush.Color := ClBlack; exit; end else begin Tshape.TheShape.Brush.Color := Clmaroon; exit; end; end; end; end; |
Re: Wie schreibe ich eine Funktion?
Hallo, psd-sign.
Delphi-Quellcode:
Was du hier deklarierst, ist nur der Name einer Komponente - nichts anderes als ein String. Der Name hilft dir hier aber nicht weiter, sondern du brauchst das Objekt selbst - vom Typ TShape.
TheShape: TComponentname;
Deshalb muss die Deklaration so lauten:
Delphi-Quellcode:
Wenn du jetzt noch die Zeile
TheShape: TShape
Delphi-Quellcode:
in
TheShape:=TShape(Sender).Name;
Delphi-Quellcode:
umänderst, müsste es eigentlich klappen!
TheShape:=TShape(Sender);
|
Re: Wie schreibe ich eine Funktion?
So funktioniert es ... 2 Zigaretten und nen Kaffee später :D
Delphi-Quellcode:
procedure TForm1.SHAPEClick(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if Sender is TShape then begin if TShape(Sender).Brush.Color = Clmaroon then begin TShape(Sender).Brush.Color := ClBlack; exit; end else begin TShape(Sender).Brush.Color := ClMaroon; exit; end; end; end; |
Re: Wie schreibe ich eine Funktion?
Oh ...sehe gerade, es wurde nochmal geantwortet, während ich meine Eigenlösung getippt hatte ...
Wie immer: Dankeschön an euch!! :) |
Re: Wie schreibe ich eine Funktion?
Noch etwas kürzer:
Delphi-Quellcode:
Ich empfehle dir aber, die "Funktion von der Darstellung zu trennen", also in diesem Falle, nicht die Information direkt in den Farbinformationen der Shapes abzuspeichern, sondern zur Datenspeicherung, ein Array of Boolean zu benutzen, und die Shapes selbst nur zur Darstellung dieses Arrays zu benutzen.
procedure TForm1.SHAPEClick(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if Sender is TShape then begin with TShape(Sender).Brush do begin if Color = clMaroon then Color := clBlack else Color := clMaroon; end; end; end; |
Re: Wie schreibe ich eine Funktion?
Es geht noch kürzer:
Delphi-Quellcode:
Unter der Prämisse dass die Farbe zu beginn Schwarz oder clMaroon ist.
procedure TForm1.SHAPEClick(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if Sender is TShape then begin TShape(Sender).Brush.Color := TShape(Sender).Brush.Color xor clMaroon; end; end; |
Re: Wie schreibe ich eine Funktion?
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz