Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Dynamische Labels verschieben sich
Danny W. - Do 23.11.06 01:59
Titel: Dynamische Labels verschieben sich
Hallo,
ich habe zwei panel in die Labels geworfen werden. Das erste Label ist immer linksbündig und der rest richtet sich normal aus...was mache ich falsch?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| for i := 0 to sl.count-1 do begin MyLabel.Parent := panel1; MyLabel.Caption := ts.delimitedtext; MyLabel.Top := 20 * x; MyLabel.Left := 20; MyLabel.Font.Color := clgreen; x:=x+1; end; |
mfg,
Danny
ZeitGeist87 - Do 23.11.06 08:32
Servus Danny!
Setz nur mal das MyLabel.Pareent:= panel1; ganz an den Schluss.
Stehen deine MyLabels in nem Array of TLabeloder wie seh ich das?
Wundert mich, dass das so funktioniert.
LG
Stefan
Danny W. - Do 23.11.06 10:50
das parent ans ende zu setzen hat nichts gebracht :(
@Stefan: ich mache das einfach mit
//Edit
Im ersten Post war ja nur ein kleiner Ausschnitt des Quelltextes...hier nochmal eine komplette version :)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49:
| if db1.Connect2MysqlDB(dbhost,dbuser,dbpw,dbtable,dbport,s) then begin befehl:='SELECT buddys FROM user WHERE nick = "'+nickname.text+'"'; ts:=tstringlist.Create; db1.sendcmd(befehl,false,ts);
sl := TStringList.Create; sl.Delimiter := ','; sl.DelimitedText := ts.Text;
for i := 0 to sl.count-1 do begin MyLabel := TLabel.Create(self);
befehl:='SELECT nick FROM user WHERE id = "'+sl.strings[i]+'"'; db1.sendcmd(befehl,false,ts);
online := tstringlist.create; befehl:='SELECT online FROM user WHERE nick = "'+ts.delimitedtext+'"'; db1.sendcmd(befehl,false,online);
if online.delimitedtext = '1' then begin MyLabel.Caption := ts.delimitedtext; MyLabel.Top := 20 * x; MyLabel.Left := 20; MyLabel.Font.Color := clgreen; MyLabel.Parent := panel1; x:=x+1; end else begin MyLabel.Caption := ts.delimitedtext; MyLabel.Top := 20 *y; MyLabel.Left := 20; MyLabel.Font.Color := clred; MyLabel.Parent := panel2; y:=y+1; end;
end; db1.DisConnectMysqlDB(s); ts.free; online.free; sl.free; mylabel.free; end else showmessage('Datenbankverbindung unterbrochen!'); |
ZeitGeist87 - Do 23.11.06 10:53
hmm..
du könntest beim label autosize auf false stellen
das label so breit machen wie das panel ist
und rechtsausrichten lassen...
LG
Stefan
Danny W. - Do 23.11.06 11:03
ich will ja aber das zweite panel direkt unters erste machen..das funktinioert nur wenn ich abfrage wie groß das erste ist...wenn das statisch ist, bringt mir das ja nicht viel :/
ZeitGeist87 - Do 23.11.06 11:09
wenns die panels statisch sind geht das genauso
Delphi-Quelltext
1: 2: 3:
| .. panel2.width:= panel1.width; ... |
LG
Stefan
Danny W. - Do 23.11.06 11:59
ja ich weiß :) Aber die Länge der Namen und die Anzahl sind ja variabel
ZeitGeist87 - Do 23.11.06 12:04
ja und?
trotzdem kannst du doch dem label die breite des parents (panels) geben
LG
Stefan
Danny W. - Do 23.11.06 14:12
okay, aber wie regel ich das mit der höhe des panels? immer so hoch wie es namen beinhaltet?
mfG,
Danny
ZeitGeist87 - Do 23.11.06 14:47
richtig =)
kannst du auch so lösen, dass immer wenn du n namen hinzufügst panel.heigh:= panel.height + x; mitsetzt.
LG
Stefan
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!