Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

TImageList   Найти похожие ветки 

 
Sphinx ©   (2004-03-22 06:27) [0]

Помогите кто сталкивался с такой же проблемой: в событии OnCreate выполняю следующий код:

  imList.Width:=50;
  imButton.Width:=imList.Width;
  imList.Height:=30;
  imButton.Height:=imList.Height;
  Temp:="StartUp.bmp";
  TempBMP.LoadFromFile(Temp);
  imList.Add(TempBMP, nil);
  Temp:="StartDown.bmp";
  TempBMP.LoadFromFile(Temp);
  imList.Add(TempBMP, nil);
  imButton.Top:=456;
  imButton.Left:=136;

где imList: TImageList;
   imButton: TImage;
   Temp: String;
   TempBMP: TBitMap;

далее по ходу выполнения программы выполняю:imList.Draw(imButton.Canvas, 0, 0, 0); и не получаю прорисовки!

При трассировке выяснил, что после выхода из процедуры OnCreate TImageList=imList очищается (?) Объясните почему, и как этого избежать.


 
Defunct ©   (2004-03-22 06:39) [1]

> При трассировке выяснил, что после выхода из процедуры OnCreate TImageList=imList очищается (?) Объясните почему, и как этого избежать.

1. попробуйте загрузить картинки статически и проверить.
2. Вы показали код загрузки картинок, но ошибка ведь не в этом коде.
3. возможно у Вас где-то есть дубликат ImageList
4. возможно вы повторно создаете ImageList
5. возможно вызываете где-то Clear.


 
Sphinx ©   (2004-03-22 06:45) [2]

> Defunct ©   (22.03.04 06:39) [1]

Это все я уже проверил. Дело именно в очистке ImageList при выходе из процедуры. При выполнении imList.Draw(imButton.Canvas, 0, 0, 0); в теле OnCreate отрисовка происходит, в других процедурах - нет.

> 5. возможно вызываете где-то Clear.
не вызываю, в этом точно уверен.


 
Defunct ©   (2004-03-22 06:55) [3]

Сам по себе список не очищается.
Вывод либо в OnCreate у вас есть нечто подобное:

Procedure FormX.FormXCreate(_);
Var imList;
Begin
 imList := TImage.Create...
 ...
 imList.Width:=50;
 ..
End;

Либо где в другом месте программы вы меняете параметры ImageList, возможно меняете ширину или высоту.

В общем проверьте все места в программе где идет работа с imList.


 
Defunct ©   (2004-03-22 07:01) [4]

имел в виду
TImageList.Create


 
Sphinx ©   (2004-03-22 07:10) [5]

> Defunct ©   (22.03.04 06:55) [3]

imList создан еще на этапе визуальной сборки формы. То есть взят с соответствующей закладки и перенесен на форму. поэтому >imList := TImage.Create... отсутствует, я его и не приводил, извиняюсь за не точность в вопросе

вот почти полный код программы:

type
 TMainForm = class(TForm)
   ...
   imList:          TImageList;
   imButton:        TImage;
   ...

   procedure FormCreate(Sender: TObject);
   procedure imButtonMouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
   ...

procedure TMainForm.FormCreate(Sender: TObject);
var
 Temp:       String;
 TempBMP:    TBitMap;
 ...
begin
 ...
 TempBMP:=TBitMap.Create;

 //Формирование кнопки
 imList.Width:=50;
 imButton.Width:=imList.Width;
 imList.Height:=30;
 imButton.Height:=imList.Height;
 Temp:="StartUp.bmp";
 TempBMP.LoadFromFile(Temp);
 imList.Add(TempBMP, nil);
 Temp:="StartDown.bmp";
 TempBMP.LoadFromFile(Temp);
 imList.Add(TempBMP, nil);
 imButton.Top:=456;
 imButton.Left:=136;
//  imList.Draw(imButton.Canvas, 0, 0, 0);   <-работает
 ...
 FreeAndNil(TempBMP);
end;

procedure TMainForm.imSkinStartMouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 imList.Draw(imButton.Canvas, 0, 0, 1);   //<-не работает
end;

procedure TMainForm.imSkinStartMouseUp(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 imList.Draw(imButton.Canvas, 0, 0, 0);   //<-не работает
end;


под сокращение попали только операции с файлом настроек (*.ini) откуда происходит считывание положений и размеров кнопки-картинки и формы в целом.


 
Sphinx ©   (2004-03-22 07:12) [6]

> Defunct ©   (22.03.04 07:01) [4]
> имел в виду
> TImageList.Create

Я понял


 
Sphinx ©   (2004-03-22 16:08) [7]

Что ни у кого идей нету???


 
Sphinx ©   (2004-03-22 19:46) [8]

Блин, я уже замучался с этим, Кто-нибудь может указать в какую сторону копать?
> Defunct ©   (22.03.04 06:39) [1]
Проверил, не помогает :(((((


 
Defunct ©   (2004-03-22 20:29) [9]

Откажитесь от ImageList, используйте массив TBitmap:

Var ImageList : Array of TBitmap

в OnCreate:

SetLength(ImageList,1);
Imagelist[0] := TBitmap.Create;


и т.д.



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
1-1082713720
Igor G
2004-04-23 13:48
2004.04.11
Диаграммы


8-1076164815
SiDr
2004-02-07 17:40
2004.04.11
Резкость BitMap а


14-1079331760
ИМХО
2004-03-15 09:22
2004.04.11
Насколько опасен MS Outlook Express


14-1079446190
awersom
2004-03-16 17:09
2004.04.11
Сенсация!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


14-1079559570
RIMMER
2004-03-18 00:39
2004.04.11
Torry жив!