Главная страница
    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.04 c
4-1075794884
LiteX
2004-02-03 10:54
2004.04.11
Поиск файлов и определение доступных дисков в системе.


7-1075702265
Met
2004-02-02 09:11
2004.04.11
Игровые автоматы


1-1082370450
s_pantera
2004-04-19 14:27
2004.04.11
Как организовать цикл с датой


4-1078991879
Карелин Артем
2004-03-11 10:57
2004.04.11
Как получить права на запуск/остановку сервисов?


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