AGB  ·  Datenschutz  ·  Impressum  







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

Wie schreibe ich eine Funktion?

Ein Thema von psd-sign · begonnen am 22. Nov 2008 · letzter Beitrag vom 23. Nov 2008
Antwort Antwort
psd-sign

Registriert seit: 3. Nov 2008
31 Beiträge
 
#1

Wie schreibe ich eine Funktion?

  Alt 22. Nov 2008, 18:04
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!!
  Mit Zitat antworten Zitat
psd-sign

Registriert seit: 3. Nov 2008
31 Beiträge
 
#2

Re: Wie schreibe ich eine Funktion?

  Alt 22. Nov 2008, 18:06
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Wie schreibe ich eine Funktion?

  Alt 22. Nov 2008, 18:11
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:
procedure TFormBla.ButtonBlubbClick(Sender: TObject);
begin
  if Sender is TButton then
    ShowMessage(TButton(Sender).Name);
end;
Diese Methode kannst Du per Objektinspektor jedem Button auf Deinem Formular im OnClick-Event zuweisen.
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
psd-sign

Registriert seit: 3. Nov 2008
31 Beiträge
 
#4

Re: Wie schreibe ich eine Funktion?

  Alt 22. Nov 2008, 19:18
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;
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Wie schreibe ich eine Funktion?

  Alt 22. Nov 2008, 19:40
Hallo, psd-sign.

TheShape: TComponentname; 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.
Deshalb muss die Deklaration so lauten:
TheShape: TShape Wenn du jetzt noch die Zeile
TheShape:=TShape(Sender).Name; in
TheShape:=TShape(Sender); umänderst, müsste es eigentlich klappen!
  Mit Zitat antworten Zitat
psd-sign

Registriert seit: 3. Nov 2008
31 Beiträge
 
#6

Re: Wie schreibe ich eine Funktion?

  Alt 22. Nov 2008, 19:42
So funktioniert es ... 2 Zigaretten und nen Kaffee später

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;
  Mit Zitat antworten Zitat
psd-sign

Registriert seit: 3. Nov 2008
31 Beiträge
 
#7

Re: Wie schreibe ich eine Funktion?

  Alt 22. Nov 2008, 20:10
Oh ...sehe gerade, es wurde nochmal geantwortet, während ich meine Eigenlösung getippt hatte ...

Wie immer:
Dankeschön an euch!!
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Wie schreibe ich eine Funktion?

  Alt 22. Nov 2008, 20:19
Noch etwas kürzer:
Delphi-Quellcode:
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;
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.
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Wie schreibe ich eine Funktion?

  Alt 22. Nov 2008, 22:03
Es geht noch kürzer:
Delphi-Quellcode:
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;
Unter der Prämisse dass die Farbe zu beginn Schwarz oder clMaroon ist.
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#10

Re: Wie schreibe ich eine Funktion?

  Alt 23. Nov 2008, 15:56
Zitat von psd-sign:
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
http://www.delphi-treff.de/sprachen/...und-funktionen
  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 21:04 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