Einzelnen Beitrag anzeigen

Christian18

Registriert seit: 9. Dez 2003
Ort: Hamburg
1.279 Beiträge
 
#3

Re: Bei dyn. erzeugten Labels die Text Farbe ändern

  Alt 23. Nov 2005, 16:03
Hallo,

da auf meine Frage noch nicht direkt geantwortet wurde, wollte ich nochmal alles Detailiert erklären. Also:

Ich habe eine Unit "UMain" und eine Unit "UProceduren". In der Unit UProceduren sind alle Proceduren drinn die ich öffters brauche als einmal. Ich habe zum Beispiel in der Unit "UProceduren" auch eine kleine Procedure drinn, die ein Menü erzeugen soll. Die erzeugung des Menüs funktioniert auch schon sehr gut. (die Procedure um das Menü zu erzeugen, hänge ich unten mit an). Jetzt wollte ich noch, das wenn man auch das Label klickt, das dann das entsprechende Label Rot wird. das wollte ich so machen. TLabel(Sender).Font.Color:=clRed; (Achso das habe ich bei dem OnClick ereignis zugewiesen. das funktioniert also auch schon) Wenn ich jetzt aber auf ein anderes Label klicke, dann wird das zwar rot, aber das andere nicht schwarz. Jetzt weiß ich das ich das andere auch erst schwarz machen muß. Da ich die Labels aber nicht direkt ansprechen kann weil sie dynamisch erstellt worden sind, habe ich ein kleines problem. ich habe hier im forum auch schon den tipp bekommen das über ein array zu machen. da finde ich aber das es nicht gerade die eleganteste lösung ist. gibt es auch noch eine andere??? Ich denke mal Ihr habt mein Problem was ich habe jetzt verstanden. Wenn nicht dann schreibt eure fragen und ich versuche dann zu antworten.

Und hier jetzt der Code:

Delphi-Quellcode:
procedure navi(a : Array of String; f : TForm; p : Array of Pointer);
  var i : Integer; // Schleifenvariable
      l : TLabel; // TLabel
      m : TMethod;
begin
  for i:=1 to Length(a) do
    begin
      l:=TLabel.Create(f);
      l.Caption:=a[i - 1];
      l.Left:=15;
      l.Top:=100 + 25 * i;
      l.Cursor:=crHandPoint;
      l.Transparent:=True;
      m.Code:=p[i - 1];
      m.Data:=l;
      l.OnClick:=TNotifyEvent(m);
      l.Parent:=f;
    end;
end;
Und so mache ich den aufruf mit dem menü (navi)
Delphi-Quellcode:
procedure TFMain.FormCreate(Sender: TObject);
  var a : Array[0..4] of String;
      p : Array[0..4] of Pointer;
begin
  a[0]:='Menu1';
  a[1]:='Menu2';
  a[2]:='Menu3';
  a[3]:='Menu4';
  a[4]:='Menu5';

  p[0]:=@TFMain.Menu1;
  p[1]:=@TFMain.Menu2;
  p[2]:=@TFMain.Menu3;
  p[3]:=@TFMain.Menu4;
  p[4]:=@TFMain.Menu5;

  navi(a, FMain, p);
end;
Mit freundlichen Grüßen

Christian18
  Mit Zitat antworten Zitat