Autor Beitrag
WIng2005
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: Fr 03.03.06 14:35 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Fr 03.03.06 16:07 
1.Sender.Tag benutzen und jedem Label einen individuellen TAG verpassen

2.Suche in: Delphi-Forum, Delphi-Library FINDCOMPONENT

Was willst du den genau machen? Du kannst auch eie eigene Menüklasse ableiten und die EInträge darin selber zeichnen.
raiguen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 374

WIN 2000prof, WIN XP prof
D7EP, MSSQL, ABSDB
BeitragVerfasst: Fr 03.03.06 16:41 
user profile iconWIng2005 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:
ausblenden 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;



user profile iconWIng2005 hat folgendes geschrieben:

Wie kann eine Eigenschaft ALLER Label verändert werden (z.Bsp: Schriftfarbe aller Label auf einmal ändern).


ausblenden 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;


user profile iconWIng2005 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...


user profile icondigi_c hat folgendes geschrieben:
1.Sender.Tag benutzen und jedem Label einen individuellen TAG verpassen

2.Suche in: Delphi-Forum, Delphi-Library 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Fr 03.03.06 18:15 
user profile iconWIng2005 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

_________________
Ein Nutzer der Ecke ;-)
WIng2005 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: 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
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 04.03.06 00:19 
Die Antwort wurde dir schon im zweiten Posting gegeben.
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: 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.
WIng2005 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: So 05.03.06 13:14 
@Luckie: Richtig, hatte ich vergessen. Habe es mal mit dem:

www.delphi-forum.de/...hlight=findcomponent

probiert. Funzt super. Vielen Dank.

MFG
Steffen