Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Procedur verstehen (https://www.delphipraxis.net/201221-procedur-verstehen.html)

Jumpy 3. Jul 2019 09:08

AW: Procedur verstehen
 
Zitat:

Zitat von paul.kunig (Beitrag 1435856)
Die Frage warum der Wert nicht übergeben wird, ist noch offen.
Nur falls jemand wegen des Dankes meint die Sache sei erledigt.

Weitere Frage:
Die
Delphi-Quellcode:
procedure TForm1.Layout1Paint(Sender: TObject; Canvas: TCanvas;
  const [Ref] ARect: TRectF);
erwartet als Parameter ein Canvas.

Erstelle ich in diesem onPaint-Ereignis ein Rechteck ohne vorher ein Canvas beim Aufruf der Prozedur zu übergeben, wird dennoch ein Rechteck gezeichnet.

Warum?

Gruß

Das ist doch eine Event-Prozedur die automatisch feuert, wenn Layout1 (was auch immer das ist) neu gezeichnet wird. Sender, Canvas, ARect usw. werden dadurch doch automatisch übergeben (von dem das Event auslösenden Element). Du kannst dann anschließend mit den Dingen was machen, also dafür sorgen, dass das Element so gezeichnet wird, wie du willst.

paul.kunig 3. Jul 2019 10:56

AW: Procedur verstehen
 
Danke Jumpy,

hatte da wohl ein Brett vor dem Kopf. Du hast natürlich recht.
Allerdings stellt sich mir eine weitere Frage.
Warum wird hier ARect als Konstante angegeben, obwohl diese doch in der Routine geändert werden soll, kann, darf?

Danke auch an ConnorMcLeod

Gruß

peterbelow 3. Jul 2019 11:41

AW: Procedur verstehen
 
Zitat:

Zitat von paul.kunig (Beitrag 1435856)
Die Frage warum der Wert nicht übergeben wird, ist noch offen.
Nur falls jemand wegen des Dankes meint die Sache sei erledigt.

Weitere Frage:
Die
Delphi-Quellcode:
procedure TForm1.Layout1Paint(Sender: TObject; Canvas: TCanvas;
  const [Ref] ARect: TRectF);
erwartet als Parameter ein Canvas.

Erstelle ich in diesem onPaint-Ereignis ein Rechteck ohne vorher ein Canvas beim Aufruf der Prozedur zu übergeben, wird dennoch ein Rechteck gezeichnet.

Warum?

Gruß

Die Methode sieht aus wie ein von der IDE erzeugter Handler für einen onPaint Event (FMX?). Einen solchen Event ruft man nicht selbst auf, den ruft das Framework auf wenn das Control neu gezeichnet werden muss. Man kann das erzwingen, in dem man eine Methode des Controls (Invalidate, Update, Refresh, wie immer as auch in FMX heißt) aufruft. Der übergebene Canvas ist normalerweise der des Controls, aRect der Bereich auf dem Canvas, der neu gezeichnet werden muss.

paul.kunig 3. Jul 2019 11:52

AW: Procedur verstehen
 
Hallo peterbelow,

absolut richtig was du sagst.

Gruß

Jumpy 3. Jul 2019 13:22

AW: Procedur verstehen
 
Zitat:

Zitat von paul.kunig (Beitrag 1435895)
Warum wird hier ARect als Konstante angegeben, obwohl diese doch in der Routine geändert werden soll, kann, darf?

Das Objekt ARect (oder ist es nicht ein Record?) wird als const aber by Referenz übergeben. Du kannst dann in der Variable ARect nichts anderes reinpacken, also kein anderes Object/Record. Aber du kannst mit dem Object/Record das da drin ist schon was machen!

paul.kunig 3. Jul 2019 18:11

AW: Procedur verstehen
 
Hallo Jumpy,

ja, es ist ein Record.

Nun ja, ich nehme es mal so hin. Den Sinn dahinter verstehe ich noch immer nicht.

Danke für eure Mühe und Geduld.

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:43 Uhr.
Seite 2 von 2     12   

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