![]() |
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:
Dann meldet er einen Fehler, sobald ich die Methode Paintbox1.canvas... verwenden will.
procedure graph;
begin {hier kommt der Ablauf} end; 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 |
Re: Eigene Prozeduren...
Hi. Versuche es mal so:
Delphi-Quellcode:
viele Grüße
procedure TForm1.graph;
begin {hier kommt der Ablauf} end; MCeddy02 |
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... |
Re: Eigene Prozeduren...
Zitat:
ca so
Delphi-Quellcode:
TForm =
... private procedure Graph; ... end; |
Re: Eigene Prozeduren...
Zitat:
- Schon lang nicht mehr mit Delphi gearbeitet :wink: |
Re: Eigene Prozeduren...
Zitat:
|
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; |
Re: Eigene Prozeduren...
TForm1 ist der Objekttyp und Form1 die Variable vom Typ TForm1...
zu dem abbruch: mach ein
Delphi-Quellcode:
rein
Application.ProcessMessages
|
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.
|
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:
mfg
//RICHTIG
procedure ClearMyHome; begin Form1.Canvas.Refresh; end; procedure TForm1.BewegeKreis(var Kreis : TKreis); begin ClearMyHome; end; Nicodius |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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 by Thomas Breitkreuz