w poziomu kodu zmieniam index ComboBox'a
ComboBox1.ItemIndex := Random( 5 );
chciał bym, żeby ta zmiana wywołała mi event tegoż comboBoxa( pewnie OnChange ), da się jakoś to zrobić?
w poziomu kodu zmieniam index ComboBox'a
ComboBox1.ItemIndex := Random( 5 );
chciał bym, żeby ta zmiana wywołała mi event tegoż comboBoxa( pewnie OnChange ), da się jakoś to zrobić?
da się jakoś to zrobić?
Musiałbyś stworzyć własną kontrolkę dziedziczącą po TComboBox
i overloadować funkcję SetItemIndex
albo po prostu ręcznie wywoływać ten event:
Procedure CallOnChange(const Obj: TComboBox); inline;
Begin
if (Assigned(Obj.OnChange)) Then
Obj.OnChange(Obj);
End;
{...}
ComboBox1.ItemIndex := 512;
CallOnChange(ComboBox1);
Możesz OnChange wywołać "ręcznie".
ComboBox1.ItemIndex := Random( 5 );
ComboBox1Change(Sender);
W zdarzeniu OnChange odczytaj ComboBox1.ItemIndex.
Można też zmusić ComboBox aby wywołał to zdarzenie wysyłając odpowiedni komunikat:
ComboBox1.Perform(WM_COMMAND, MakeWParam(0, CBN_EDITCHANGE), ComboBox1.Handle);
Wątek przenoszę do Newbie, bo raczej się ze mną zgodzicie, że dotyczy podstaw. A i trochę mnie @TLesiu zasmucił, bo myślałem ze człowiek z takim nickiem jest raczej klasą dziedziczącą po TObject niz typem rekordowym czy wyliczeniowym i taka tematyka jak wywoływanie metod powina mu być znana ;) Ale cóż wybaczam - ja też do niedawna wywoływałem funkcję obsługi wątku w WinAPI bez 'stdcall', dziwiąc się błędnemu przekazaniu do niej parametru. Także człowiek uczy się całe życie. I nikogo nie stygmatyzuje ze względu na nick, jak kiedyś, a może i nadal uważano mnie za osobe w młodym wieku ze względu na nick. Musiałem to btw napisać, bo chciałem wiedzieć jak się postuje z pod Androida i niestety osobie nieprzyzwyczajonej do dotykowej klawiatury trochę ciężko, a poza tym wygodniejsza klawiatura w pozycji horyzontalnej tabletu zasłania uzupełnianie nicków, ale jakoś trzeba z tym żyć :-)