Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Hilfe ( Lies X Position) (https://www.delphipraxis.net/148477-hilfe-lies-x-position.html)

xman236 2. Mär 2010 23:31


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:
procedure TFrmMain.Button5Click(Sender: TObject);
begin
     Bogen.LiesXPosition:50;
end;
So habe ich mir gedacht aber es funtioniert nicht.

Diese Function muss naemlich die aktuelle X Werte ausgeben.

Luckie 2. Mär 2010 23:40

Re: Hilfe ( Lies X Position)
 
Was heißt "funktioniert nicht"? Die Fehlermeldung kennt mein Delphi nicht.

Delphi-Quellcode:
procedure TFrmMain.Button5Click(Sender: TObject);
var
  Bogen: TBogen;
begin
  Bogen := TBogen.Create;
  try
    x := Bogen.LiesXPosition;
  finally
    Bogen.Free;
  end;
end;
Meinst du so was?

xman236 2. Mär 2010 23:51

Re: Hilfe ( Lies X Position)
 
Was macht deine Function? Was ist ihre Aufgabe?

Luckie 2. Mär 2010 23:53

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 2. Mär 2010 23:54

DP-Maintenance
 
Dieses Thema wurde von "Luckie" von "Open-Source" nach "Object-Pascal / Delphi-Language" verschoben.
Hat nichts mit OpeeSource zu tun.

Sir Rufo 2. Mär 2010 23:55

Re: Hilfe ( Lies X Position)
 
Zitat:

Zitat von xman236
Was macht deine Function? Was ist ihre Aufgabe?

was raucht ihr gerade?

Luckie zeigt dir, wie man die - von Dir vorgestellte - Funktion evtl. verwenden könnte, und Du fragst, was die Funktion macht?

und
Delphi-Quellcode:
x := Bogen.LiesXPosition:50;
steh ich jetzt im Wald oder wo kann man in Delphi das so benutzen :gruebel:

Luckie 2. Mär 2010 23:56

Re: Hilfe ( Lies X Position)
 
Copy and Paste error.

xman236 2. Mär 2010 23:57

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:
procedure TFrmMain.Button5Click(Sender: TObject);
begin
   test.LiesXPosition:=50;
end;
ist ,dass die linke Seite nicht zugewiesen werden kann.

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;

Sir Rufo 2. Mär 2010 23:58

Re: Hilfe ( Lies X Position)
 
Zitat:

Zitat von Luckie
Copy and Paste error.

ok ... ich wurde gerade schon nervös und habe mich nach VHS-Kursen zu Delphi umgesehen :mrgreen:

Sir Rufo 2. Mär 2010 23:59

Re: Hilfe ( Lies X Position)
 
Eine Funktion kann nur Werte liefern!

Luckie 2. Mär 2010 23:59

Re: Hilfe ( Lies X Position)
 
Zitat:

Zitat von xman236
Ich moechte mit Lies X Position die aktuelle X Werte meines Koerpers ausgeben.

Und genau das macht mein Code, wenn ich diese Codefragment von dir richtig verstanden habe.

xman236 3. Mär 2010 00:02

Re: Hilfe ( Lies X Position)
 
Delphi-Quellcode:
begin
  Bogen := TBogen.Create;
an dieser Stelle sagt Delphi ungenuegende Parameter.

Heisst das, dass ich alle Parameter, wie z. B
Delphi-Quellcode:
TBogen.Create (Zeichenflaeche: TForm; XPos, YPos, Breite, Hoehe :Integer; Farbe: TColor);
eingeben muss?

Sir Rufo 3. Mär 2010 00:04

Re: Hilfe ( Lies X Position)
 
Dann gib ihm doch die Werte
Delphi-Quellcode:
TBogen.Create ( EineBeliebigeForm, 1, 2, 3, 4, clBlack);
äh ... bevor du dass jetzt einfach so übernimmst, du musst natürlich die passenden Werte übergeben :mrgreen:

xman236 3. Mär 2010 00:06

Re: Hilfe ( Lies X Position)
 
Koennt ihr mir bitte erklaeren, was die aktuelle X werte auszugebe, heisst ...?

Sir Rufo 3. Mär 2010 00:07

Re: Hilfe ( Lies X Position)
 
Zitat:

Zitat von xman236
Koennt ihr mir bitte erklaeren, was die aktuelle X werte auszugebe, heisst ...?

ja warte ... :glaskugel: 42

Wir kennen den ProgrammCode nicht, wie sollen wir dir da sagen, was da rauskommen soll???
Oder was das bedeuten soll???

xman236 3. Mär 2010 00:10

Re: Hilfe ( Lies X Position)
 
Delphi-Quellcode:
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.
So sieht mein komplette Baukasten aus.
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.

Luckie 3. Mär 2010 00:11

Re: Hilfe ( Lies X Position)
 
Zitat:

Zitat von xman236
Delphi-Quellcode:
begin
  Bogen := TBogen.Create;
an dieser Stelle sagt Delphi ungenuegende Parameter.

Keine Ahnung. Du gibst uns ja immer nur irgendwelche Bruchstücke.

Sir Rufo 3. Mär 2010 00:14

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.

xman236 3. Mär 2010 00:16

Re: Hilfe ( Lies X Position)
 
Delphi-Quellcode:
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;
Meinst du das hier ? Sir Rufo?

Sir Rufo 3. Mär 2010 00:19

Re: Hilfe ( Lies X Position)
 
Auch ...

bei mir sieht eine Unit so aus:
Delphi-Quellcode:
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
Also wir hätten gerne alles zwischen "unit" und "end." inklusive der beiden.

Kann doch nicht so schwer sein, bei der Unit mBauen1 hast du es ja auch geschafft.

xman236 3. Mär 2010 00:23

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:
function TBogen.LiesXPosition: Integer;
begin
  LiesXPosition := zX  ;
end;
Diese Function moechte ich benutzen. Wie soll ich das machen?

Sir Rufo 3. Mär 2010 00:25

Re: Hilfe ( Lies X Position)
 
Zitat:

Zitat von xman236
Was ich wissen moechte ist nur wie man eine Function, die eine Werte zurueckgibt in der Klasse verwendet..

Delphi-Quellcode:
function TBogen.LiesXPosition: Integer;
begin
  LiesXPosition := zX  ;
end;
Diese Function moechte ich benutzen. Wie soll ich das machen?

Was macht denn eine "function" im Allgemeinen?

xman236 3. Mär 2010 00:29

Re: Hilfe ( Lies X Position)
 
Zum Beispiel, das was so steht :
Delphi-Quellcode:
procedure TBogen.SetzePosition (XPos, YPos: Integer);
begin
  Loeschen;
  zX := XPos; zY := YPos;
  Zeichnen;
end;
habe ich so benutzt

Delphi-Quellcode:
procedure TFrmMain.Button4Click(Sender: TObject);
begin
     test.Loeschen;
     test.SetzePosition (200, 200);
     test.Zeichnen;
end;
test ist in dem Fall TBogen.

Wie kann ich jetzt das benutzen?
Delphi-Quellcode:
function TBogen.LiesXPosition: Integer;
begin
  LiesXPosition := zX  ;
end;

Sir Rufo 3. Mär 2010 00:36

Re: Hilfe ( Lies X Position)
 
Das ist ja auch so in Ordnung, denn

SetzePosition ist eine procedure

Delphi-Quellcode:
procedure TBogen.SetzePosition( XPos, YPos : integer );
Und eine procedure führt irgendwelche Befehle aus und das wars.

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)?

xman236 3. Mär 2010 00:40

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:
Delphi-Quellcode: markieren
function TBogen.LiesXPosition: Integer;
begin
  LiesXPosition := zX  ;
end;
Diesen Befehl hier..

xman236 3. Mär 2010 00:42

Re: Hilfe ( Lies X Position)
 
Mittlerweile habe ich es versucht

Delphi-Quellcode:
procedure TFrmMain.Button5Click(Sender: TObject);
var
  test: TBogen;
  x : integer;
begin
  test := TBogen.Create(zeichenfenster,100,100,100,70,clGreen) ;

    x := test.LiesXPosition ;

  end;
Ist das ok? Aber wo kann ich die x werte eingeben?

Sir Rufo 3. Mär 2010 00:43

Re: Hilfe ( Lies X Position)
 
Zitat:

Zitat von xman236
Ohh.. erwisch :) ja ich brauche bis morgen..

In deinem letzten Beitrag hatte dir Wolfgang Mix etwas dazu gesagt:

Zitat:

Zitat von Wolfgang Mix
@xman236

Nach unserem längeren netten Chat noch einige Tipps:

- Wenn Du beim nächsten mal eine Hausaufgabe zu lösen hast, melde Dich rechtzeitig im Forum und nicht am Abend davor. Das Forum ist nicht dazu gedacht, Hausaufgaben zu lösen. Dann wird Dir auch jeder hier im Forum gerne helfen.

- Arbeite die Tutorials von Delphi-Treff durch. Dann wirst Du die Grundlagen schneller verstehen.

- Arbeite anfangs nur mit einfachen Objekten. Fast alle einfachen Aufgaben lassen sich mit TButton, TLabel und TEdit erledigen.

- Beschreibe Dein Vorhaben genauer. Kaum einer hat hier wirklich begriffen, was Du wirklich vorhattest.

- Wenn das Deine erste Hausaufgabe ist, bestelle Deinem Lehrer schöne Grüße. Der muß Euch mehr Grundlagen auf den Weg geben.

-- Lasse Dich nicht einschüchtern, wir haben alle einmal ganz klein angefangen.

-- Komme bald rechtzeitig wieder, wir helfen gerne. ;-)

Gruß

Wolfgang


Sir Rufo 3. Mär 2010 00:45

Re: Hilfe ( Lies X Position)
 
Zitat:

Zitat von xman236
Mittlerweile habe ich es versucht

Delphi-Quellcode:
procedure TFrmMain.Button5Click(Sender: TObject);
var
  test: TBogen;
  x : integer;
begin
  test := TBogen.Create(zeichenfenster,100,100,100,70,clGreen) ;

    x := test.LiesXPosition ;

  end;
Ist das ok? Aber wo kann ich die x werte eingeben?

Die Function LiesXPosition liefert Dir einen Wert ... du kannst dort nichts eintragen.
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;

xman236 3. Mär 2010 00:47

Re: Hilfe ( Lies X Position)
 
Jaaa !! Genau ich moechte die x Werte liefern.
Wie macht man das?

Sir Rufo 3. Mär 2010 00:49

Re: Hilfe ( Lies X Position)
 
Zitat:

Zitat von xman236
Jaaa !! Genau ich moechte die x Werte liefern.
Wie macht man das?

NEIN NICHT DU LIEFERST SONDERN DU BEKOMMST!

xman236 3. Mär 2010 00:52

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?

Sir Rufo 3. Mär 2010 00:54

Re: Hilfe ( Lies X Position)
 
Zitat:

Zitat von xman236
Ach so ja, ich bekomme und gebe wieder.
Deswegen ist es ja eine Function oder?
Und wie bekomme ich es?

Augen auf und hier klicken

xman236 3. Mär 2010 00:57

Re: Hilfe ( Lies X Position)
 
DU BIST EIN GENIE!!!!!
aber bei x muss ich doch angeben, wo das gezeigt wird oder?
Delphi-Quellcode:
 ShowMessage( IntToStr( x ) );
Wie schreibt man, damit es auf dem Zeichenfenster gezeigt wird?

Sir Rufo 3. Mär 2010 01:00

Re: Hilfe ( Lies X Position)
 
Zitat:

Zitat von xman236
DU BIST EIN GENIE!!!!!
aber bei x muss ich doch angeben, wo das gezeigt wird oder?
Delphi-Quellcode:
 ShowMessage( IntToStr( x ) );
Wie schreibt man, damit es auf dem Zeichenfenster gezeigt wird?

Setze auf die Form ein Label und dann weise der Eigenschaft Caption einen Wert zu.

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;

xman236 3. Mär 2010 01:08

Re: Hilfe ( Lies X Position)
 
mit Label geht es irgendwie nicht...
Wie macht man, wenn man einfach auf TFrmMain ausgeben will?

Sir Rufo 3. Mär 2010 01:15

Re: Hilfe ( Lies X Position)
 
Zitat:

Zitat von xman236
mit Label geht es irgendwie nicht...
Wie macht man, wenn man einfach auf TFrmMain ausgeben will?

Man nimmt ein TLabel aus der Komponenten-Palette, klatscht es auf die Form und weist der Eigenschaft Caption einen String-Wert zu (so wie gezeigt).

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