Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi beim zweiten Aufruf der Procedure wird nichtmehr gezeichnet (https://www.delphipraxis.net/113979-beim-zweiten-aufruf-der-procedure-wird-nichtmehr-gezeichnet.html)

punker-lili 17. Mai 2008 17:33


beim zweiten Aufruf der Procedure wird nichtmehr gezeichnet
 
Hi Leute!

Als o ich hab ne Procedure entworfen, welche Notenlinien zeichne. Beim ersten Aufruf auf nem Image funktioniert alles noch, aber beim zweitenmal zeichnet er nicht. Woran kann das liegen?
Delphi-Quellcode:
procedure notenlinie_zeichnen(shape:Timage;abstand:integer;canvas:Tcanvas);
var nl,x1,x2,y:integer;
begin
for nl:=1 to 5 do
 begin
  y:= shape.top + 6*abstand + (nl-1)*abstand;
  // 6 * Abstand = freier Abstand nach oben für Töne Oberhalb d. Notensystems -->shape1.top= oberer x,yWert von c'''' = 1 bei Schnittstellendatei
  x1:= shape.left;
  x2:=shape.left + shape.width;
   Canvas.Brush.Color:=clblack;
   Canvas.PolyLine([Point(x1,y),Point(x2,y)]);
  end;
 end;
Ich erstelle das zweite Image zwar dynamisch, aber acuh wenn ich ein zweites statisch erstelle, zfunktiniert nichts..*grumel*

HDanke schon einmal im voraus!

Anna

DeddyH 17. Mai 2008 17:35

Re: beim zweiten Aufruf der Procedure wird nichtmehr gezeich
 
Überleg Dir mal, auf wessen Canvas Du zeichnest.

mkinzler 17. Mai 2008 17:35

Re: beim zweiten Aufruf der Procedure wird nichtmehr gezeich
 
Wie erzeugst du die Imgages? Wo rufst du die Methode auf?

punker-lili 17. Mai 2008 17:42

Re: beim zweiten Aufruf der Procedure wird nichtmehr gezeich
 
@DeddyH: auf wessen Canvas?.. na ich sag ihm doch bei der Parameterübergabe, wie das Image heißt... Oder was muss ich da noch berücksichtigen? *komisch guck*

@mkinzle: Naja.. ich hab den Aufruf nicht als MEthode gespeichert, da ich 1. nur an einer Stelle brauche u. 2. nicht weiß wie das mache. :angel:
Also erstell ich die neuen Images wie folgt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 image_neu: Timage;
begin
 image_neu:=Timage.Create(Self);
 with image_neu do
 begin
     Parent:=Form1;
     Left:=100;
     Top:=100;
 end;
end;
Und die notenlinie_zeichnen Procedure rufe ich wie eine normale Procedure auf...

MfG Anna

mkinzler 17. Mai 2008 17:46

Re: beim zweiten Aufruf der Procedure wird nichtmehr gezeich
 
Und wo?

punker-lili 17. Mai 2008 17:48

Re: beim zweiten Aufruf der Procedure wird nichtmehr gezeich
 
na im Hauptprogramm..unit1 beim Buttonclick..oder wie meisnt du das wo?

DeddyH 17. Mai 2008 17:50

Re: beim zweiten Aufruf der Procedure wird nichtmehr gezeich
 
Versuch es mal mit
Delphi-Quellcode:
shape.Canvas.Brush.Color:=clblack;
shape.Canvas.PolyLine([Point(x1,y),Point(x2,y)]);

Die Muhkuh 17. Mai 2008 17:50

Re: beim zweiten Aufruf der Procedure wird nichtmehr gezeich
 
Er möchte den Aufruf sehen. :zwinker:

mkinzler 17. Mai 2008 17:51

Re: beim zweiten Aufruf der Procedure wird nichtmehr gezeich
 
Irgendwie hast du einen Instinkt dafür, das wichtige wegzulassen.

punker-lili 17. Mai 2008 17:58

Re: beim zweiten Aufruf der Procedure wird nichtmehr gezeich
 
@mkinzler
*komisch guck*...
Delphi-Quellcode:
      with image_neu do
      begin
        Parent:=ScrollBox1;
        Left:=image_alt.left;
        Top:=image_alt.Top+image_alt.Height+c_zwischen;
        width:=image_alt.Width;
        height:=image_alt.Height;
       end;
      image_alt:=image_neu;
    notenlinie_zeichnen(image_alt,c_abstand,canvas);
    with image2 do
 [b]  notenlinie_zeichnen(image_alt,c_abstand,canvas)[/b]
   end;
... sry... nur den aufruf finde ich nicht spektakulär... ich hab die werte eingesetzt...

@DeddyH
Das habe ich schon ausprobiert... zudem setzte ich im gesamtenprogramm, die Farbe nur auf Schwarz, aber nicht aud weiß...


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:51 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