Autor Beitrag
bruder jonas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: Sa 13.07.02 21:37 
hallo,

habe ein problem.
ich habe 20 labels. bei programmstart lese ich aus einer ini-datei den labelnamen aus.

ich möchte per onclick auf das label eine webseite öffnen. die url muss vorhere eingelesen werden.
wie kann ich das mit einer for schleife machen, das für jedes der 20 label bei onclick die richtige url ausgelesen wird?

danke


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mo 29.03.2010 um 22:55
Pit
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 160



BeitragVerfasst: Sa 13.07.02 22:05 


Zuletzt bearbeitet von Pit am Sa 05.10.02 07:29, insgesamt 1-mal bearbeitet
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: So 14.07.02 08:53 
Moin,

beim erstellen der Labels einfach ein OnClick-Event zuweisen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
With tLable.Create (Self) Do
  Begin
    Parent := Self;
    {...}
    OnClick := DoURLLabelClick;
  End;

Die Procedure DoURLLabelClick definierst Du einfach in der Privat-Sektion des Forms:
ausblenden Delphi-Quelltext
1:
2:
private
  procedure DoURLLabelClick (aSender: tObject);

Die Implementerierung sollte in etwa so sein:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure tForm1.DoURLLabelClick (aSender: tObject);
Var
  URL: String;
Begin
  URL := tLabel (aSender).Caption;
  // Hier die URL öffnen
End;


Gruß
gnomecoder
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51
Erhaltene Danke: 5



BeitragVerfasst: Mo 29.03.10 14:06 
sorry dass ich diesen 8 Jahre alten Thread ausgrabe, aber brauche mal hilfe.
hab ein label array und hab das mit dem onclick ereignis bei der zuweisung so gemacht wie hier beschrieben. funktioniert auch super.
Nur ist es irgendwie möglich beim onclickereignis an die Indexzahl des labels zu kommen?

Beispiel: Ich klicke auf das label MyLabel[3] und lade die zahl 3 irgwie in nen label.


irgwie so in der art:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure tmain.DoLabelClick(aSender: TObject);
Begin
  label1.caption:= inttostr(tlabel(aSender).???);
End;

hoffe ihr habt mein Problem verstanden.
danke schonmal.

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Mo 29.03.10 14:13 
Delphi ist kein VB :D
Du bekommst mit dem Sender einen Verweis auf das entsprechende Label geliefert. Wenn Du die Indexzahl brauchst, musst Du das Element im Array suchen. Oder Du missbrauchst dafür z.B. die Tag-Eigenschaft und schreibst schon beim Erstellen der Labels den Index ins Tag. Dann kannst Du mit TLabel(Sender).Tag das ganze wieder auslesen.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
gnomecoder
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51
Erhaltene Danke: 5



BeitragVerfasst: Mo 29.03.10 14:20 
danke für die Antwort.
habs grad anders hinbekommen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure tmain.DoLabelClick(aSender: TObject);
Var
i, indexzahl  : integer;
Begin
  for i := 0 to anzahl - 1 do
  begin
    if tlabel(aSender) = labels[i] then
    indexzahl:= i;
  end;
  label1.caption := inttostr(indexzahl);
End;

nicht besonders elegant, aber funktioniert :D

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Mo 29.03.10 14:27 
user profile icongnomecoder hat folgendes geschrieben Zum zitierten Posting springen:
danke für die Antwort.
habs grad anders hinbekommen:

Wieso "anders"? Ist doch genauso, wie ich es gesagt hatte...
Zitat:
Wenn Du die Indexzahl brauchst, musst Du das Element im Array suchen.


Wobei ich noch etwas verbessern würde. Wenn das erste Element im Array schon das ist, das Du suchst, vergleicht Deine Schleife einfach weiter die anderen Element. Ist doch gar nicht mehr nötig, Du hast doch schon gefunden, was Du suchst.
Mach es vielleicht so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var i, indexzahl  : integer;
Begin
  i := 0;
  Indexzahl := -1;
  while (i <= anzahl - 1and (Indexzahl < 0)
  begin
    if tlabel(aSender) = labels[i] then
      indexzahl:= i;
    inc(i);
  end;
  label1.caption := inttostr(indexzahl);
End;

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)