Баг или фича с OnChange в TComboBox

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Баг или фича с OnChange в TComboBox

Сообщение Climber » 09.12.2009 09:42:17

Есть вот такой незамысловатый модуль с несколькими компонентами:
Код: Выделить всё
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics,
  Dialogs, StdCtrls, EditBtn, ExtCtrls, Grids;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    ComboBox1: TComboBox;
    DateEdit1: TDateEdit;
    Edit1: TEdit;
    LabeledEdit1: TLabeledEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
ComboBox1.Text:='11';
DateEdit1.Date:=Date;
Memo1.Text:='11';
LabeledEdit1.Text:='11';
CheckBox1.Checked:=not CheckBox1.Checked;
Edit1.Text:='11';
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  ShowMessage(Sender.ClassName);
end;

initialization
  {$I unit1.lrs}

end.
При нажатии на Button1 во все компоненты что-нибудь да заносится. У всех них на обработку события OnChange назначена процедура ComboBox1Change. Которая, как видно, показывает класс того объекта, у которого сработало событие OnChange. В итоге о своем изменении сообщили все, кроме TComboBox. Это баг или так и было задумано?
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Баг или фича с OnChange в TComboBox

Сообщение WindOfPain » 09.12.2009 11:40:32

В Delphi 7 аналогичное поведение у ComboBox. Вероятно, это особенность работы самого компонента, раз программное присвоение значений Text,Caption и ItemIndex, не рассматривается, как наступление OnChange.
Аватара пользователя
WindOfPain
новенький
 
Сообщения: 33
Зарегистрирован: 01.09.2009 21:18:23
Откуда: Санкт-Петербург

Re: Баг или фича с OnChange в TComboBox

Сообщение alexmai » 09.12.2009 14:30:28

У меня вообще была проблема с комбобоксом с одним элементом.
Как бы я на него не насnупал, не срабатывает change и естественно не происходит выбора значения из списка
Причем в винде нормально, а такая байда только в Линуксе.
Только после извращения в методе Click
procedure TMainForm.combobox1Click(Sender: TObject);
begin
combobox1.Text :=combobox1.Text+' ';
end;

метод change стал реагировать на выбор этого единственного элемента :lol:
alexmai
постоялец
 
Сообщения: 106
Зарегистрирован: 02.02.2009 14:58:42


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 54

Рейтинг@Mail.ru