Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Index von fokusiertem TLabel ermitteln
WIng2005 - Fr 03.03.06 14:35
Titel: Index von fokusiertem TLabel ermitteln
Hallo,
ich möchte Label anstelle von Buttons nutzen. Hierzu habe ich meine Label entsprechend angeordnet und die
OnClick-Eireignisse alle auf LabelClick gelegt. Wie kann ich nun in dieser einen Prozedur herausfinden, welches Label angeklickt wurde?
Wie kann eine Eigenschaft ALLER Label verändert werden (z.Bsp: Schriftfarbe aller Label auf einmal ändern).
Oder anders: Gibt es eventl. eine bessere Möglchkeit, eine Art "Menübaum" zu erzeugen? Ein "aufklappen" ist mit Label-Komponenten allein eher schwer zu realisieren (sollte doch nur über wilde Positionsänderungen funktionieren,oder?)
Vielen Dank für eure Hilfe!!!
MFG
Steffen
digi_c - Fr 03.03.06 16:07
1.Sender.Tag benutzen und jedem Label einen individuellen TAG verpassen
2.
FINDCOMPONENT
Was willst du den genau machen? Du kannst auch eie eigene Menüklasse ableiten und die EInträge darin selber zeichnen.
raiguen - Fr 03.03.06 16:41
Titel: Re: Index von fokusiertem TLabel ermitteln
WIng2005 hat folgendes geschrieben: |
Hallo,
ich möchte Label anstelle von Buttons nutzen. Hierzu habe ich meine Label entsprechend angeordnet und die
OnClick-Eireignisse alle auf LabelClick gelegt. Wie kann ich nun in dieser einen Prozedur herausfinden, welches Label angeklickt wurde?
|
Moin :-)
So könnte das aussehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.LabelClick(Sender: TObject); begin if Sender = Label1 then ... if Sender = Label2 then ... if Sender = Label3 then ... end; |
WIng2005 hat folgendes geschrieben: |
Wie kann eine Eigenschaft ALLER Label verändert werden (z.Bsp: Schriftfarbe aller Label auf einmal ändern).
|
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.LabelFaerben; var MyLabel: TLabel; i: Integer; begin for i := 0 to AnzahlDerLabels do begin mYLabel := TLabel(FindComponent('Label'+IntToStr(i))); if MyLabel <> nil then MyLabel.Font.Color := IrgendeineFarbe; end;
end; |
WIng2005 hat folgendes geschrieben: |
Oder anders: Gibt es eventl. eine bessere Möglchkeit, eine Art "Menübaum" zu erzeugen? Ein "aufklappen" ist mit Label-Komponenten allein eher schwer zu realisieren (sollte doch nur über wilde Positionsänderungen funktionieren,oder?)
Vielen Dank für eure Hilfe!!!
MFG
Steffen |
Ne Art Menübaum? Nimm doch TreeView ;-) Alle MenuOberpunkte als RootNode, die MenüUnterpukte entsprechend als Child erstellen...
digi_c hat folgendes geschrieben: |
1.Sender.Tag benutzen und jedem Label einen individuellen TAG verpassen
2. FINDCOMPONENT
Was willst du den genau machen? Du kannst auch eie eigene Menüklasse ableiten und die EInträge darin selber zeichnen. |
Mit Tags ist das auch ne Möglichkeit...
Viele Wege führen zum Ziel ;-)
Gruß
WIng2005 - Fr 03.03.06 18:07
Hallo,
vielen Dank für die schnellen Antworten.
Die TreeView-Komponente habe ich völlig übersehen......
Ich möchte einen Menübaum auf der linken Seite meines Fensters anzeigen, der verschiedene Frames
(rechts davon) aktiviert bzw. deaktiviert.
Die Label haben sich damit erledigt.Ich dachte an ne Art "Label.font.color" (also ohne Index) oder so, was alle Label anspricht. Unter VB gabs (glaub ich, ist lange her) nen Mehrfachzugriff durch die With-Anweisung.
Wenn ich also ein Element im Baum anklicke, soll nur der zugehörige Frame angezeigt werden (alle gleich groß, alle gleiche Position)
Kann man hierzu einfach den entsprechenden Frame über alle anderen legen, oder müssen diese auf visible:=false gesetzt werden?
Das Problem was dabei entsteht ist, dass meine Frames nicht Frame[x] heißen, sondern Namen haben (z.B Rechnung_schreiben, Kundendaten_anlegen).
Somit funzt die Schleife nicht.
Vielen Dank
MFG
Steffen
Martin1966 - Fr 03.03.06 18:15
WIng2005 hat folgendes geschrieben: |
Kann man hierzu einfach den entsprechenden Frame über alle anderen legen, oder müssen diese auf visible:=false gesetzt werden? |
Ich würde die TNotebook Komponente verwenden. In ihr, natürlich auf jeder einzelnen Seite der TNotebook Komponente, platzierst Du jeden einzelnen Frame.
Über entsprechende Eingeschaft kannst du dann einzelne Seiten der TNotebook Komponente aktivieren.
Lg Martin
WIng2005 - Sa 04.03.06 00:08
Super Idee, funzt....Danke.
Aber nochmal zur Frage (nur noch so aus Interesse): Gibt es die Möglichkeit,
den Index einer Komponente wegzulassen (also statt Label1 nur label oder label[x]) und so alle Elemente dieses Typs anzusprechen?
MFG
Steffen
Delete - Sa 04.03.06 00:19
Die Antwort wurde dir schon im zweiten Posting gegeben.
digi_c - Sa 04.03.06 09:49
Ja also bei solchen Geschichten macht man das eigentlich mit einem Treeview oder mit einer Outlook ähnlichen Sidebar. Die Tabpages wären natürlich auch eine Möglichkeit, werden aber recht schnell unübersichtlich. Man sollte sich ja schon ein wenig an die Standarts halten und sich nicht wegen Kleinigkeiten selber was zusammenstricken. Einfach mal öfter schauen wie das bei Programmen gelöst wurde, die man selber hat.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!