AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Eigenschaften mehrerer Labels mittels Sender verändern?
Thema durchsuchen
Ansicht
Themen-Optionen

Eigenschaften mehrerer Labels mittels Sender verändern?

Ein Thema von AlexII · begonnen am 30. Jan 2015 · letzter Beitrag vom 1. Feb 2015
Antwort Antwort
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

Eigenschaften mehrerer Labels mittels Sender verändern?

  Alt 30. Jan 2015, 20:32
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!
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Eigenschaften mehrerer Labels mittels Sender verändern?

  Alt 30. Jan 2015, 20:44
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Eigenschaften mehrerer Labels mittels Sender verändern?

  Alt 31. Jan 2015, 12:18
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.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: Eigenschaften mehrerer Labels mittels Sender verändern?

  Alt 1. Feb 2015, 09:09
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 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