| 
| 
 | Вопрос # 357/ вопрос открыт / | 
 |  Здравствуйте уважаемые эксперты!Подскажите, как получать Index подсвеченной строки в выпавшем списке компонента TComboBox при передвижении по этому списку курсора, до того как пользователь сделает выбор, т.е. до нажатия кнопки. Возможность редактирования в элементе ввода компонента должна сохраняться.
 
|  |   Вопрос задал: NickStNew (статус: Посетитель)Вопрос отправлен: 26 февраля 2007, 13:59
 Состояние вопроса: открыт, ответов: 3.
 |  Ответ #1. Отвечает эксперт: Вадим К Единственный способ, который я знаю - это сделать отрисовку вручну. Тогда в OnDrawIten вам будет приходить сообщение о необходимости перерисовать себя вы смотрите, у данного итема состояние не выделеное случайно. 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 26 февраля 2007, 14:24
 Оценка за ответ: 4
 Комментарий к оценке: Index подсвеченной строки получается, но только если выбрать Style=csOwnerDrawFixed или csOwnerDawVariable. При этом не работает редактирование в строке ввода |  Ответ #2. Отвечает эксперт: Новаковский Юрий Аврамович Здравствуйте, NickStNew!Попробуйте так:см приложение.
 Через таймер, запуск таймера когда  ComboBox получает фокус и останов когда  ComboBox его теряет. Interval = 100.
 Если пользователь ничего не выбрал остается тот индекс который был до получения фокуса.
 Удачи!
 Приложение:Переключить в обычный режим unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ESBPCSEdit, ESBPCSDbEdit, ESBPCSDbNumEdit, ExtCtrls; type  TForm1 = class(TForm)    ComboBox1: TComboBox;    Timer1: TTimer;    procedure ComboBox1Enter(Sender: TObject);    procedure Timer1Timer(Sender: TObject);    procedure ComboBox1Exit(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end; var  Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ComboBox1Enter(Sender: TObject);begin  Timer1.Enabled:=true;end; procedure TForm1.Timer1Timer(Sender: TObject);begin Caption:=IntToStr(ComboBox1.ItemIndex)end; procedure TForm1.ComboBox1Exit(Sender: TObject);begin   Timer1.Enabled:=false;end; end. 
|  | Ответ отправил: Новаковский Юрий Аврамович (статус: 4-ый класс)Время отправки: 26 февраля 2007, 17:23
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо, все работает |  Ответ #3. Отвечает эксперт: Шарайчук Сергей Олександрович Здравствуйте, NickStNew!Попробу написать код для событея ONChange, а Index получить попробуй следуйщим способом:
 i:=ComboBox1.item.itemindex
 
|  | Ответ отправил: Шарайчук Сергей Олександрович (статус: 2-ой класс)Время отправки: 26 февраля 2007, 20:17
 Оценка за ответ: 3
 Комментарий к оценке: К сожелению ответ неточен. Событие OnChange при перемещении курсора (и подсвеченной строки) по выпавшему списку компонента TComboBox не вызывается |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |