![]() |
Hilfe ( Lies X Position)
Delphi-Quellcode:
function TBogen.LiesXPosition: Integer;
begin LiesXPosition := zX ; end; So heisst zuerst die Function im Baukasten. Jetzt moechte ich diese Function in meiner eigenen Klasse benutzen. Wie kann ich das machen?
Delphi-Quellcode:
So habe ich mir gedacht aber es funtioniert nicht.
procedure TFrmMain.Button5Click(Sender: TObject);
begin Bogen.LiesXPosition:50; end; Diese Function muss naemlich die aktuelle X Werte ausgeben. |
Re: Hilfe ( Lies X Position)
Was heißt "funktioniert nicht"? Die Fehlermeldung kennt mein Delphi nicht.
Delphi-Quellcode:
Meinst du so was?
procedure TFrmMain.Button5Click(Sender: TObject);
var Bogen: TBogen; begin Bogen := TBogen.Create; try x := Bogen.LiesXPosition; finally Bogen.Free; end; end; |
Re: Hilfe ( Lies X Position)
Was macht deine Function? Was ist ihre Aufgabe?
|
Re: Hilfe ( Lies X Position)
Keine Ahnung, das ist doch dein Code. Ich habe nur syntaktisch korrekt die Methode benutzt.
Aber die Fehlermeldung willst du uns beharrlich verschweigen oder? |
DP-Maintenance
Dieses Thema wurde von "Luckie" von "Open-Source" nach "Object-Pascal / Delphi-Language" verschoben.
Hat nichts mit OpeeSource zu tun. |
Re: Hilfe ( Lies X Position)
Zitat:
Luckie zeigt dir, wie man die - von Dir vorgestellte - Funktion evtl. verwenden könnte, und Du fragst, was die Funktion macht? und
Delphi-Quellcode:
steh ich jetzt im Wald oder wo kann man in Delphi das so benutzen :gruebel:
x := Bogen.LiesXPosition:50;
|
Re: Hilfe ( Lies X Position)
Copy and Paste error.
|
Re: Hilfe ( Lies X Position)
Ich glaube du hast mich falsch verstanden. Es liegt wahrscheinlich auch an meinem Deutsch :)
Ich moechte mit Lies X Position die aktuelle X Werte meines Koerpers ausgeben. Und die Fehlungmeldung, die ich kriege, wenn ich so eingebe :
Delphi-Quellcode:
ist ,dass die linke Seite nicht zugewiesen werden kann.
procedure TFrmMain.Button5Click(Sender: TObject);
begin test.LiesXPosition:=50; end; und 50 habe ich als Beispiel hingeschrieben , weil im Baukasten meine ursprungliche Function eine Integer verlangt.
Delphi-Quellcode:
function TBogen.LiesXPosition: Integer;
begin LiesXPosition := zX ; end; |
Re: Hilfe ( Lies X Position)
Zitat:
|
Re: Hilfe ( Lies X Position)
Eine Funktion kann nur Werte liefern!
|
Re: Hilfe ( Lies X Position)
Zitat:
|
Re: Hilfe ( Lies X Position)
Delphi-Quellcode:
an dieser Stelle sagt Delphi ungenuegende Parameter.
begin
Bogen := TBogen.Create; Heisst das, dass ich alle Parameter, wie z. B
Delphi-Quellcode:
eingeben muss?
TBogen.Create (Zeichenflaeche: TForm; XPos, YPos, Breite, Hoehe :Integer; Farbe: TColor);
|
Re: Hilfe ( Lies X Position)
Dann gib ihm doch die Werte
Delphi-Quellcode:
äh ... bevor du dass jetzt einfach so übernimmst, du musst natürlich die passenden Werte übergeben :mrgreen:
TBogen.Create ( EineBeliebigeForm, 1, 2, 3, 4, clBlack);
|
Re: Hilfe ( Lies X Position)
Koennt ihr mir bitte erklaeren, was die aktuelle X werte auszugebe, heisst ...?
|
Re: Hilfe ( Lies X Position)
Zitat:
Wir kennen den ProgrammCode nicht, wie sollen wir dir da sagen, was da rauskommen soll??? Oder was das bedeuten soll??? |
Re: Hilfe ( Lies X Position)
Delphi-Quellcode:
So sieht mein komplette Baukasten aus.
onstructor TBogen.Create (Zeichenflaeche: TForm; XPos, YPos, Breite, Hoehe :Integer; Farbe: TColor);
// mit diesem Befehl rufe ich TBogen auf. Aber dabei muss alles eingeben werden, was in Klammern steht. begin zZF := Zeichenflaeche; zX := XPos; zY := YPos; zB := Breite; zH := Hoehe; zFarbe := Farbe; // hier wird bestimmt, wie die Eingabe heissen. end; procedure TBogen.Zeichnen; var FarbeAlt: TColor; E1,E2,E3,E4 : TPoint; K1,K2,K3,K4,K5,K6,K7 : TPoint; // Um TBogen zu zeichnen braucht man alle diese Werte. begin zSichtbar := true; with zZF.Canvas do begin FarbeAlt := Brush.Color; Brush.Color := zFarbe; E1:= Point (zX,zY); E2:= Point (zX,zY-zH); E3:= Point (zX+zB, zY-zH); E4:= Point (zX+zB,zY); // Zuerst werden vier Punkte gezeichnet. K1 := Point (zX+Round(0.8*zB),zY); K2 := Point (zX+Round(0.7*zB),zY-Round(0.15*zB)); K3 := Point (zX+Round(0.5*zB),zY-Round(0.25*zB)); K4 := Point (zX+Round(0.3*zB),zY-Round(0.15*zB)); K5 := Point (zX+Round(0.2*zB),zY); // Danach werden weitere fuenf Punkte gezeichnet Polygon([E1,E2,E3,E4,K1,K2,K3,K4,K5]); Brush.Color:= FarbeAlt; end; end; procedure TBogen.Loeschen; var FarbeAlt: TColor; E1,E2,E3,E4 : TPoint; K1,K2,K3,K4,K5,K6,K7 : TPoint; begin zSichtbar := true; with zZF.Canvas do begin FarbeAlt := Brush.Color; Brush.Color := clWhite; Pen.Color := clWhite; E1:= Point (zX,zY); E2:= Point (zX,zY-zH); E3:= Point (zX+zB, zY-zH); E4:= Point (zX+zB,zY); K1 := Point (zX+Round(0.8*zB),zY); K2 := Point (zX+Round(0.7*zB),zY-Round(0.15*zB)); K3 := Point (zX+Round(0.5*zB),zY-Round(0.25*zB)); K4 := Point (zX+Round(0.3*zB),zY-Round(0.15*zB)); K5 := Point (zX+Round(0.2*zB),zY); Polygon([E1,E2,E3,E4,K1,K2,K3,K4,K5]); Brush.Color:= clWhite; end; end; procedure TBogen.SetzeFarbe (Farbe: TColor); begin zFarbe := Farbe; Zeichnen; end; procedure TBogen.SetzePosition (XPos, YPos: Integer); begin Loeschen; zX := XPos; zY := YPos; Zeichnen; end; function TBogen.LiesXPosition: Integer; begin LiesXPosition := zX ; end; function TBogen.LiesYPosition: Integer; begin LiesYPosition := zY ; end; end. Alles was in diesem Baukasten stehen, muessen wir in der eigenen Klasse rufen und benutzen. Bis function LiesXPosition habe ich alles geschaft.
Delphi-Quellcode:
unit mBauen1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, mZeichenfenster1, mBaukasten1, mGebaeude; type TFrmMain = class(TForm) btZeichenfenster: TButton; Button1: TButton; Button3: TButton; Button2: TButton; Button4: TButton; Button5: TButton; Button6: TButton; procedure btZeichenfensterClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); private test : TBogen; Zeichenfenster : TFrmZeichnen; public { Public-Deklarationen } end; var FrmMain: TFrmMain; implementation {$R *.DFM} procedure TFrmMain.btZeichenfensterClick(Sender: TObject); begin Zeichenfenster := TFrmZeichnen.Create (FrmMain); Zeichenfenster.Show; end; procedure TFrmMain.Button1Click(Sender: TObject); begin test := TBogen.Create(zeichenfenster,100,100,100,70,clGreen) ; test.Zeichnen; end; procedure TFrmMain.Button2Click(Sender: TObject); begin test.SetzeFarbe (clBlack); end; procedure TFrmMain.Button3Click(Sender: TObject); begin test.Loeschen; end; procedure TFrmMain.Button4Click(Sender: TObject); begin test.Loeschen; test.SetzePosition (200, 200); test.Zeichnen; end; procedure TFrmMain.Button5Click(Sender: TObject); // LiesXPosition end; procedure TFrmMain.Button6Click(Sender: TObject); begin // LiesYPosition end; end. |
Re: Hilfe ( Lies X Position)
Zitat:
|
Re: Hilfe ( Lies X Position)
Das mit dem Code-Fragment ist ja ein schöner Anfang, aber
gib uns die GESAMTE Unit, wo die Klasse TBogen definiert ist. Es sein denn, diese Unit enthält den geheimen Code zur Übernahme der Weltherrschaft, dann können wir verstehen, dass wir nur diese Schnipselchen bekommen. |
Re: Hilfe ( Lies X Position)
Delphi-Quellcode:
Meinst du das hier ? Sir Rufo?
type TBogen = class (TObject)
private zZF: TForm; zX, zY, zB, zH : Integer; zFarbe: TColor; zSichtbar: Boolean; public constructor Create (Zeichenflaeche: TForm; XPos, YPos, Breite, Hoehe:Integer; Farbe: TColor); // destructor Destroy; {geerbt} procedure Zeichnen; procedure Loeschen; procedure SetzeFarbe (Farbe: TColor); procedure SetzePosition (XPos, YPos: Integer); function LiesXPosition: Integer; function LiesYPosition: Integer; end; |
Re: Hilfe ( Lies X Position)
Auch ...
bei mir sieht eine Unit so aus:
Delphi-Quellcode:
Also wir hätten gerne alles zwischen "unit" und "end." inklusive der beiden.
unit DieUnitMitDemNamenUnit; // <-- Hier fängt die Unit an
interface type TWeltherrschaft = class private public constructor Create; end; implementation constructor TWeltherrschaft.Create; begin inherited Create; end; end. // <-- Hier hört die Unit auf Kann doch nicht so schwer sein, bei der Unit mBauen1 hast du es ja auch geschafft. |
Re: Hilfe ( Lies X Position)
Was ich wissen moechte ist nur wie man eine Function, die eine Werte zurueckgibt in der Klasse verwendet..
Delphi-Quellcode:
Diese Function moechte ich benutzen. Wie soll ich das machen?
function TBogen.LiesXPosition: Integer;
begin LiesXPosition := zX ; end; |
Re: Hilfe ( Lies X Position)
Zitat:
|
Re: Hilfe ( Lies X Position)
Zum Beispiel, das was so steht :
Delphi-Quellcode:
habe ich so benutzt
procedure TBogen.SetzePosition (XPos, YPos: Integer);
begin Loeschen; zX := XPos; zY := YPos; Zeichnen; end;
Delphi-Quellcode:
test ist in dem Fall TBogen.
procedure TFrmMain.Button4Click(Sender: TObject);
begin test.Loeschen; test.SetzePosition (200, 200); test.Zeichnen; end; Wie kann ich jetzt das benutzen?
Delphi-Quellcode:
function TBogen.LiesXPosition: Integer;
begin LiesXPosition := zX ; end; |
Re: Hilfe ( Lies X Position)
Das ist ja auch so in Ordnung, denn
SetzePosition ist eine procedure
Delphi-Quellcode:
Und eine procedure führt irgendwelche Befehle aus und das wars.
procedure TBogen.SetzePosition( XPos, YPos : integer );
Eine function führt auch irgendwelche Befehle aus ... aber gibt auch Informationen zurück! btw: kann es sein, dass du das für morgen früh brauchst (Hausaufgaben)? |
Re: Hilfe ( Lies X Position)
Ohh.. erwisch :) ja ich brauche bis morgen..
Ja SetzePosition habe ich fertig, aber wie kann ich Lies Xposition benutzen.. T.T
Delphi-Quellcode:
Diesen Befehl hier..
Delphi-Quellcode: markieren
function TBogen.LiesXPosition: Integer; begin LiesXPosition := zX ; end; |
Re: Hilfe ( Lies X Position)
Mittlerweile habe ich es versucht
Delphi-Quellcode:
Ist das ok? Aber wo kann ich die x werte eingeben?
procedure TFrmMain.Button5Click(Sender: TObject);
var test: TBogen; x : integer; begin test := TBogen.Create(zeichenfenster,100,100,100,70,clGreen) ; x := test.LiesXPosition ; end; |
Re: Hilfe ( Lies X Position)
Zitat:
![]() Zitat:
|
Re: Hilfe ( Lies X Position)
Zitat:
Darum heißt die ja auch sinnigerweise LiesXPosition und nicht SchreibXPosition! Du kannst also die X-Position des Bogens lesen und dann z.B. ausgeben lassen
Delphi-Quellcode:
procedure TFrmMain.Button5Click(Sender: TObject);
var x : integer; begin x := test.LiesXPosition; ShowMessage( IntToStr( x ) ); end; |
Re: Hilfe ( Lies X Position)
Jaaa !! Genau ich moechte die x Werte liefern.
Wie macht man das? |
Re: Hilfe ( Lies X Position)
Zitat:
|
Re: Hilfe ( Lies X Position)
Ach so ja, ich bekomme und gebe wieder.
Deswegen ist es ja eine Function oder? Und wie bekomme ich es? |
Re: Hilfe ( Lies X Position)
Zitat:
![]() |
Re: Hilfe ( Lies X Position)
DU BIST EIN GENIE!!!!!
aber bei x muss ich doch angeben, wo das gezeigt wird oder?
Delphi-Quellcode:
Wie schreibt man, damit es auf dem Zeichenfenster gezeigt wird?
ShowMessage( IntToStr( x ) );
|
Re: Hilfe ( Lies X Position)
Zitat:
Also wenn dein Label auf der Form den Namen "Label1" hat dann so:
Delphi-Quellcode:
procedure TFrmMain.Button5Click(Sender: TObject);
var x : integer; begin x := test.LiesXPosition; Label1.Caption := IntToStr( x ); end; |
Re: Hilfe ( Lies X Position)
mit Label geht es irgendwie nicht...
Wie macht man, wenn man einfach auf TFrmMain ausgeben will? |
Re: Hilfe ( Lies X Position)
Zitat:
Alles andere ist komplizierter! btw: geht irgendwie nicht ist eine super fehlerbeschreibung |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:07 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