Вот такой код:
- Код: Выделить всё
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if ComboBox1.Caption='1' then ImageList1.Draw(Image3.Canvas,0,0,1,True);
if ComboBox1.Caption='2' then ImageList1.Draw(Image3.Canvas,0,0,2,True);
if ComboBox1.Caption='3' then ImageList1.Draw(Image3.Canvas,0,0,3,True);
if ComboBox1.Caption='4' then ImageList1.Draw(Image3.Canvas,0,0,4,True);
if ComboBox1.Caption='5' then ImageList1.Draw(Image3.Canvas,0,0,5,True);
end;
Происходит следующее: при первой смене значения в ComboBox1 картинка появляется в Image3 (до этого было пусто). При последующих сменах - ничего не происходит. При этом, если поменять размеры окна программы (пошире, поуже) - картинка появляется.
Если пишу так:
- Код: Выделить всё
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
Form1.Image3.Canvas.Brush.Color:=clBtnFace;
Form1.Image3.Canvas.FillRect(0,0,Width,Height);
if ComboBox1.Caption='1' then ImageList1.Draw(Image3.Canvas,0,0,1,True);
if ComboBox1.Caption='2' then ImageList1.Draw(Image3.Canvas,0,0,2,True);
if ComboBox1.Caption='3' then ImageList1.Draw(Image3.Canvas,0,0,3,True);
if ComboBox1.Caption='4' then ImageList1.Draw(Image3.Canvas,0,0,4,True);
if ComboBox1.Caption='5' then ImageList1.Draw(Image3.Canvas,0,0,5,True);
end;
всё меняется нормально.
Вот и вопрос, чего у меня не так в первом варианте кода?
P.S. Lazarus 0.9.29 FPC 2.4.2 Ревизия SVN: 28927. Пишу под Windows Vista. В Ubuntu 10.10 компилировать еще не пробовал.
И ещё. Пробовал делать так:
- Код: Выделить всё
if ComboBox1.Caption='1' then
begin
ImageList1.Draw(Image3.Canvas,0,0,1,True);
Image3.Update;
end;
Результат работы такой же, как и при первом варианте кода.