Форум: "Основная";
Текущий архив: 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