[delphi] porównanie label.caption z ComboBox i zaznaczenie

Witam… Problem dotyczy Delphi7

Mam przypisaną rozdzielczość pulpitu do Label1 w takiej formie gdzieś na zdarzeniu OnCreate formy:

Label1.Caption:=(inttostr(screen.Width)+'x'+inttostr(screen.Height));

Na tejże formie mam button i ComboBox’a. W ComboBox’ie jako Items mam 16 różnych rozdzielczości formacie jak powyżej. Jak zrobić to, żeby po naciśnięciu button’a aplikacja sprawdziła zawartość mojego Label1.Caption’a i porównała ją z zawartością listy ComboBox? Jeżeli na liście znalazła by się akurat ta rozdzielczość, która jest w Label1.Caption, to żeby się zaznaczyła, a jeżeli by jej tam nie było, to żeby zaznaczył się tam załóżmy ItemIndex[2]? – Dodane 04.05.2010 (Wt) 8:11 – Przepraszam za posta pod postem, ale sam doszedłem już do odpowiedzi na swoje pytanie. Temat do zamknięcia. Kod:

[...]

var

i : integer;

a : string;

begin

  a:=Label18.Caption;

  for i:=0 to ComboBox1.Items.Count-1 do

  ComboBox1.ItemIndex:=ComboBox1.Items.IndexOf(a);

[...]

Tylko po co Ci ta pętla tam? IndexOf zwraca indeks szukanego elementu, nie musisz tej operacji wykonywać X razy, wystarczy raz. Zresztą powinno zwrócić Twoją uwagę to że w ciele pętli for nie użyłeś iteratora i, zatem operacja wew. nie zależy od jej przebiegu - pętle do wywalenia.

Zmienna a też zbędna, suma sumarum:

[...]

  ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(Label18.Caption);

[...]

chyba prościej co nie? i na pewno szybciej :wink:

Hm, racja. Dzięki wielkie =D>

Zmienną przypisałem, bo w tym kodzie mam dość sporo captionów, i łatwiej mi jest się orientować ze swoich zmiennych.

Jeszcze raz dzięki. Pozdrawiam :wink:

Po to istnieje możliwość nadawania nazw kontrolkom. Jak zmienisz nazwę Label8 na AktualnaRozdzielczosc a ComboBox1 na ListaRozdzielczosci, to nie będziesz musiał dodatkowych zmiennych tworzyć bo od razu po ludzku się czyta:

with ListaRozdzielczosci do ItemIndex:=Items.IndexOf(AktualnaRozdzielczosc.Caption);