Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.041 c
6-1079458114
mbgmz
2004-03-16 20:28
2004.04.11
Есть ди способы подключиться к MySQL базе напрямую.


14-1079623523
Dimman
2004-03-18 18:25
2004.04.11
Поцарапал экран


4-1078871731
demonyator
2004-03-10 01:35
2004.04.11
Необходимо знать о каждом созданном процессе в системе


14-1082288623
Sur
2004-04-18 15:43
2004.04.11
Почему русскому программисту судит американский суд?


4-1075643387
Suport1
2004-02-01 16:49
2004.04.11
Как глобально перехватить нажатия на клаву....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский