probs combobox und label

maddi

Grünschnabel
Hi Leute,

ich habe folgende Probleme in Delphi:
1.) Ich habe 2 Comboboxen mit folgenden Einträgen:
1. Combobox: d , eng , ma , ges , ch
2. Combobox: d , eng , bio , phy, frz
Nun möchte ich wenn ich irgendwo was auswähle, dass das was ich auswähle in der anderen Combo verschwindet, aber auch wieder auftaucht wenn ich was anderes auswähle, ein Bsp:
In Combo 1 wähle ich d aus, dann soll in Combo 2 d gelöscht werden
aber wenn ich jetzt in Combo 1 z.b. eng auswähle soll in Combo 2 d wieder dazu, jetzt aber eng weg. usw. (also: nichts Doppeltes und nichts verschwinden)

2.) ich habe 10 Label:

l1
l2
l3
...
l10

Jeder dieser Label soll einen text bekommen und dieser Text ist abhängig von einer Variablen also etwa so:
Code:
for i:=1 to 10 do
l[i].caption:=a[i];

Ich hoffe dass mir jemand helfen kann,

bis denn, cu
 
Zuletzt bearbeitet:

Patrick Kamin

Erfahrenes Mitglied
-

Hallo Maddi!
Du könntest dir eine Variable vom Typ String deklarieren und dort immer den Wert drinnen speichern, den du gerade gelöscht hast. Wenn du nun etwas anderes auswählst, dann schreibst du den gespeicherten Wert erstmal wieder in die Combobox und löscht dann den anderen Wert, zuvor natürlich noch zwischenspeichern.
Andere Möglichkeit wäre eine Variable vom Typ TString zu deklarieren, in der du Anfangsstringliste speicherst. Wenn du dann etwas gelöscht hast und möchtest nun etwas anderes verschwinden lassen, initialisiert du deine ComboBox erst wieder mit der gespeicherten Variablen und löscht dann den Wert.

Du könntest deine Label alle in einer GroupBox zusammenfassen und dann über die Eigenschaft Controls auf diese untergeordneten Komponenten, die sich in der GroupBox befinden, zugreifen. (Nachzulesen in der Delphi-Hilfe.)
Oder du gehst über die WinApi und suchst die Komponente per FindWindow. Da müsstest du allerdings in der MSDN nachlesen, wie du dort vorgehen musst.
 

maddi

Grünschnabel
Hallo,

erstmal zu dem Problem mit der Combobox, das ist alles schön und gut was du mir da sagst, aber da ich nur Bahnhof verstehe wäre mir Quelltext lieber, denn sonst kann ich damit nix anfangen.
 

derGugi

Erfahrenes Mitglied
wenn du mit dieser Beschreibung nix anfangen kannst, würd ich mir mal überlegen, ob du dir nicht ein anderes Hobby suchst... Dazu wird dir sicherlich keiner einen Quelltext liefern, denn das ist wirklich simpel, vorallem wenn du schon genug vorschläge hast(temporärer string, TStringlist, ...). Also bitte mal etwas selber denken!

das zweite Problem ist schon nicht mehr ganz so einfach, darum hab ich dir hier die Lösung:
Code:
var
i    : Integer;
Ctrl : TControl;
begin
  for i:= 0 to GroupBox1.ControlCount-1 do
  begin
    Ctrl := GroupBox1.Controls[i];
    //1. Möglichkeit, wenn alles labels sind:
    if Ctrl is TLabel then
       Ctrl.SetTextBuf(PChar('lala'+IntToStr(i)));
    //2. Möglichkeit, wenn es nicht nur labels sind:
       changetext(Ctrl, 'lala'+IntToStr(i));
end;

procedure TForm1.changetext(Ctrl: TControl; txt: string);
begin
Ctrl.Perform(WM_SETTEXT, 0, Longint(PChar(Txt)));
Ctrl.Perform(CM_TEXTCHANGED,0,0);
end;
Die Prozedur Changetext brauchst du nur, wenn du auch andere Komponenten als labels ändern willst.