Главная страница
    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.043 c
14-1082119853
syte_ser78
2004-04-16 16:50
2004.04.11
Разделение значения в ячейке


1-1082450584
Романов Р.В.
2004-04-20 12:43
2004.04.11
Организовать последовательное выполнение приложений


9-1065013171
ZLODey
2003-10-01 16:59
2004.04.11
Баги при компиляции игры или примера...


7-1079816431
DEMON_XXX
2004-03-21 00:00
2004.04.11
Как отследить дискету в A:


14-1079691434
zzzzzzzzzz
2004-03-19 13:17
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский