Главная страница
    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
1-1082613339
Alexey
2004-04-22 09:55
2004.04.11
Файлы


9-1070321522
MrAngel
2003-12-02 02:32
2004.04.11
Тайна вокруг координаты W


14-1079836948
Думкин
2004-03-21 05:42
2004.04.11
С днем рождения! 21 марта


1-1079709346
xobbit
2004-03-19 18:15
2004.04.11
PopupMenu и хэндл


3-1081331855
July
2004-04-07 13:57
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский