Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Eigenschaften mehrerer Labels mittels Sender verändern? (https://www.delphipraxis.net/183723-eigenschaften-mehrerer-labels-mittels-sender-veraendern.html)

AlexII 30. Jan 2015 19:32

Eigenschaften mehrerer Labels mittels Sender verändern?
 
Hallo,

ich habe folgende Frage wo ich nicht mehr weiterkomme. Ich habe 10 Labels die man anklicken kann und jedem Label ist ein Panel zugeordnet. Je nach dem welches Label angeklickt wird muss das Label die Farbe Blau bekommen und entsprechendes Panel erscheinen, die anderen 9 Label bekommen die Farbe schwarz und ihre Panels bleiben ausgeblendet.

Klickt man auf Label7, wird es blau, alle anderen schwarz und das Panel7 erscheint.
Klickt man auf Label8, wird es blau, alle anderen schwarz und das Panel8 erscheint.

Wie mache ich das? Muss wohl irgendwie mit dem Sender gehen, aber irgendwie stehe ich auf dem Schlauch.

Habe folgendes überlegt:
Delphi-Quellcode:
if Label(Sender) = 7 then
  Label7.Color := Blue;
  Panel7.Visible := True;
else
begin
  //den Rest etwa mit einer Schleife schwarz setzen und die Panels ausblenden? 
end;

Danke!

Sir Rufo 30. Jan 2015 19:44

AW: Eigenschaften mehrerer Labels mittels Sender verändern?
 
Pack dir alle Label in eine Liste und die zugehörigen in eine weitere Liste (ein Dictionary wäre da noch einfacher).

Jetzt suchst du in der Label-Liste den Index des ausgewählten Labels.
Jetzt gehst du durch beide Listen und setzt die Farbe bei jedem Label auf schwarz, nur wenn du an dem ermittelten Index kommst, dann blau und jedes Panel setzt du unsichtbar, nur wenn du an dem ermittelten Index kommst auf sichtbar.

AlexII 31. Jan 2015 11:18

AW: Eigenschaften mehrerer Labels mittels Sender verändern?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1288367)
Pack dir alle Label in eine Liste und die zugehörigen in eine weitere Liste (ein Dictionary wäre da noch einfacher).

Jetzt suchst du in der Label-Liste den Index des ausgewählten Labels.
Jetzt gehst du durch beide Listen und setzt die Farbe bei jedem Label auf schwarz, nur wenn du an dem ermittelten Index kommst, dann blau und jedes Panel setzt du unsichtbar, nur wenn du an dem ermittelten Index kommst auf sichtbar.

Ohee... so kompliziert... aber ich habe schon eine Idee wie ich das einfacher mache. Teile es hier später mit.

Dejan Vu 1. Feb 2015 08:09

AW: Eigenschaften mehrerer Labels mittels Sender verändern?
 
Kompliziert?
Delphi-Quellcode:
Procedure TForm1.SetExclusiveLabelAndPanelColor(aLabel : TLabel; aExclusiveColor, aDisableColor : TColor);
var
  i : Integer;
  c : TColor;

begin
  for i:=0 to myLabel.Count-1 do begin
    if myLabel[i]=aLabel then
      c := aExclusiveColor
    else
      c := aDisableColor;
    myLabel[i].Color := c;
    myPanel[i].Color := c;
  end
end;

Procedure TForm1.Label1Click (Sender : TObject);
begin
  if Sender is TLabel then
    SetExclusiveLabelAndPanelColor(TLabel(Sender), clBlue, clBlack);
end;
Allen Labeln den 'Label1Click'-Eventhandler im 'OnClick' Event zuweisen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 Uhr.

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