Einzelnen Beitrag anzeigen

Zuckerberg

Registriert seit: 8. Okt 2010
55 Beiträge
 
Delphi XE Professional
 
#1

TLabel innerhalb TImage

  Alt 8. Okt 2010, 18:19
Hallo Liebe Community,
seid gegrüßt!

Also ich habe versucht so eine Art "GraffitiWand" zu programmieren ...

hier ist der Code ...

Delphi-Quellcode:
var
  GUI: TGUI;
  Spruch : array [1..50] of TLabel;
  //n : integer; //Anzahl der Labels

implementation

{$R *.DFM}

procedure TGUI.FormCreate(Sender: TObject);
var
   x,y : Integer;
begin
     Randomize;

     for x:=0 to GraffitiWand.Height do // Macht Leinwand weiß
     for y:=0 to GraffitiWand.Width do
     GraffitiWand.Canvas.Pixels[x,y];
end;

procedure TGUI.GErzeugenBtnClick(Sender: TObject);
var
i : Integer;
begin
     for i:=1 to 50 do
     begin
     Spruch[i]:= TLabel.Create(self);//hier habe ich es mal mit (GraffitiWand) versucht und parent:=Graffitiwand KLAPPT ABER NICHT
     Spruch[i].parent:=self as TWincontrol;

     Spruch[i].Transparent:=True; //wegen Hintergrund
     Spruch[i].Top:=Random(220); // hier ist der Bereich der Leinwand die die Position der Label eingrenzen sollte ...
     Spruch[i].Left:=Random(230);// hier ist der Bereich der Leinwand die die Position der Label eingrenzen sollte ...
     Spruch[i].Font.Size:=17;
     Spruch[i].Font.Name:='Playbill';
     Spruch[i].Caption:=GEingabeEdt.Text;
     end;
end;
NUN das programm soll auf einer Leinwand (bei mir mit "GraffitiWand" benannt ; typ TImage)
Sprüche abbilden die vorher auf einem Edit gemacht wurden ...

Das Problem :
Ich bekomme es nicht hin das ich sage das die erzeugten Labels(die die Sprüche enthalten...) der Leinwand gehören, sprich wenn sie per Zufall erzeugt werden, werden sie auch außerhalb der Leinwand positioniert ...

Ok nun könnte man einfach die perfekte Position der Leinwand raus finden, dass ist aber nicht sehr elegant ... und birgt einen Fehler nämlich wenn das Label zu weit rechts positioniert wird, überschreitet es die Leinwand ...

Wunschlösung wäre das die Labelsprüche nur innerhalb dieser Leinwand angezeigt werden ... aber dafür müsste ich die Label's abhängig zur Leinwand machen , aber wie ????

bitte um Hilfe

PS : ach ja und noch etwas ...
Wenn ich die Label dann wieder Löschen möchte geht das mit free und einer for-schleife oder eher anders ... ?

PSS: ich will einfach mal einen smiley ausprobiern und hiermit tue ich das ...

Geändert von Zuckerberg ( 8. Okt 2010 um 18:21 Uhr) Grund: noch was
  Mit Zitat antworten Zitat