Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eigene Prozeduren... (https://www.delphipraxis.net/25078-eigene-prozeduren.html)

creek 30. Jun 2004 22:08


Eigene Prozeduren...
 
Hallo allerseits,

ich programmiere schon seit einigen Monaten auch mit Delphi. Bisher verwendete ich allerdings wenig grafische Funktionen. Die meisten Dinge konnten mit Memokomponeten, diversen Editkomponenten, etc. erledigt werden.
Jetzt habe ich allerdings ein anderes Projekt vor mir, für das ich viel Grafisches brauche. Was diese Dinge angeht, bin ich ein Anfänger.

Dabei stieß ich zunächst auf folgendes Problem:

Ich will ein Koordinatensystem in eine PaintBox zeichnen. Das geht auch ganz gut, wenn ich diesen Ablauf in einer Prozedur wie Button1.Click(Sender: TObject) ausführe. Da ich diesen Ablauf aber auch in anderen Komponenten benötige, wollte ich dafür eine eigene Prozedur schreiben, die nicht erst durch einen Event ausgelöst werden muss, sonderen aufgerufen werden kann.
Wenn ich den Ablauf allerdings so ablegen will:

Delphi-Quellcode:
procedure graph;
begin
{hier kommt der Ablauf}
end;
Dann meldet er einen Fehler, sobald ich die Methode Paintbox1.canvas... verwenden will.
Wie kann ich die Canvas-Methoden auch in dieser Prozedur benutzen, bzw. wie muss ich die Prozedur deklarieren, um sie nutzen zu können?

Danke im Vorraus!

Gruß,

Timo

MCeddy 30. Jun 2004 22:12

Re: Eigene Prozeduren...
 
Hi. Versuche es mal so:
Delphi-Quellcode:
procedure TForm1.graph;
begin
{hier kommt der Ablauf}
end;
viele Grüße

MCeddy02

phXql 30. Jun 2004 22:12

Re: Eigene Prozeduren...
 
was kommt den für ein fehler?

ich schätze mal, da diese funktion global is, musst du form1.paintbox.canvas ansprechen...

neolithos 30. Jun 2004 22:14

Re: Eigene Prozeduren...
 
Zitat:

Zitat von MCeddy02
Hi. Versuche es mal so:
Delphi-Quellcode:
procedure TForm1.graph;
begin
{hier kommt der Ablauf}
end;
viele Grüße

MCeddy02

Dazu muss die Procedure in der Klasse erst einmal definiert werden.


ca so

Delphi-Quellcode:
  TForm =
    ...
  private
    procedure Graph;
  ...
  end;

MCeddy 30. Jun 2004 22:16

Re: Eigene Prozeduren...
 
Zitat:

Zitat von neolithos
Dazu muss die Procedure in der Klasse erst einmal definiert werden.

(...)

Danke, Stimmt :wall:
- Schon lang nicht mehr mit Delphi gearbeitet :wink:

S2B 30. Jun 2004 22:16

Re: Eigene Prozeduren...
 
Zitat:

Zitat von MCeddy02
Delphi-Quellcode:
procedure TForm1.graph;
begin
{hier kommt der Ablauf}
end;

Es müsste aber auch ohne das TForm1 gehen! :wink:

creek 30. Jun 2004 22:20

Re: Eigene Prozeduren...
 
zum Fehler an sich: es kommt, dass der Bezeichner paintbox1 unbekannt sei.

Aber deine Lösung ist korrekt. Die hatte ich auch schon versucht. Allerdings hatte ich TForm1.PaintBox... verwendet.
Was ist der Unterschied zwischen TForm1 und Form1? Denn mit dem T davor geht's nicht. Ohne geht's.

Andere Frage:
Wenn ich eine Funktion zeichnen lasse und das in einer Schleife machen lasse, bei der ich den sleep-Befehl verwende und das zu verlangsamen, damit man den Verlauf beobachten kann, reagiert das Fenster erst wieder, wenn er fertig ist. Kann ich dem Nutzer eine Abbruch-Möglichkeit oder eine Pause-Möglichkeit geben?

Gruß,

Timo

Edit: Da inzwischen so viele Beiträge kamen:

Es geht bei mir so:
Delphi-Quellcode:
procedure graph;
begin
Form1.Paintbox1.Canvas...
end;

phXql 30. Jun 2004 22:22

Re: Eigene Prozeduren...
 
TForm1 ist der Objekttyp und Form1 die Variable vom Typ TForm1...

zu dem abbruch:
mach ein
Delphi-Quellcode:
Application.ProcessMessages
rein

Luckie 1. Jul 2004 06:33

Re: Eigene Prozeduren...
 
Wenn du schon auf Elemente deiner TForm-Klasse zugreifen musst, dann mach doch die Prozedur zu einer Methode selbiger. Ist etwas eleganter als überall Form1 davor zuschreiben. Macht das ganze dann auch stimmiger, finde ich.

Nicodius 1. Jul 2004 06:58

Re: Eigene Prozeduren...
 
eigene proceduren ohne TFORM musst du "über" den restlichen die auf die proceduer zurückgreifen hinschreiben


also

Delphi-Quellcode:
//FALSCH
procedure TForm1.BewegeKreis(var Kreis : TKreis);
begin
  ClearMyHome;
end;

procedure ClearMyHome;
begin
  Form1.Canvas.Refresh;
end;

Delphi-Quellcode:
//RICHTIG

procedure ClearMyHome;
begin
  Form1.Canvas.Refresh;
end;

procedure TForm1.BewegeKreis(var Kreis : TKreis);
begin
  ClearMyHome;
end;
mfg

Nicodius


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:56 Uhr.
Seite 1 von 2  1 2      

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