Форум: "KOL";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
ВнизНе читается из ini-файла, не рисуется иконка... Найти похожие ветки
← →
micron (2005-07-06 00:47) [0]Уже 2й день мучаюсь - не могу заставить делать сабж...
Выкладываю сразу весь код проекта...
program p1;
uses Windows, Messages, KOL;
{* Variables}
var
Ini : PIniFile;
Applet, FMain: PControl;
Icons: Array[1..32] of PIcon;
Left, Top, Width, Height : Integer;
{* Code}
BEGIN
{-----}
Applet := NewApplet("");
FMain := NewForm(Applet, "Finder");
Ini := OpenIniFile(IniFilePathName);
ini.Mode := ifmRead;
Ini.Section := "Window";
Left := Ini.ValueInteger("Left", Left);
FMain.Left := Left;
Icons[1] := NewIcon;
Icons[1].LoadFromFile("cd.ico");
Icons[1].Draw(FMain.Canvas.Handle,5,5);
Run(Applet);
{-----}
END.
Даже не могу понять в чем проблема, переменная Left сразу после создания равна 1, и так и не меняется... Вот текст ini файла.
[Window]
Left=200
Top=100
Width=500
Height=500
Иконка тоже не рисуется - при запуске программы на месте иконки 1 раз мигает черный квадрат.
Помогите, я уже и не знаю что делать... Все перепробовал. Может ошибка не в коде работы с ini и рисования иконки, а где-то в другом месте?
ЗЫ: D7, KOL 2.09, замена System, Classes. Пробовал без замены - разницы нет.
← →
Davlegov (2005-07-06 01:21) [1]Пути к иконке и ini-файлу, насколько я понимаю, должны быть правильные. У вас так есть?
← →
micron (2005-07-06 05:14) [2]Ну естественно правильные.
ЗЫ: не в тему, но по поводу: иконка может быть любая? кол-во цветов или наличие альфа-канала имеют значение? Насколько я понял из kol.pas, то нет.
← →
Thaddy (2005-07-06 10:03) [3]You have to keep drawing it!
You need to assign the OnPaint event, like:
procedure IconPaint(dummy:pointer;Ctr:Pcontrol;DC:HCD);
begin
Icons[1].Draw(dc,0,0);
end;
Fmain.OnPaint:=TOnPaint(MakeMethod( etc.
← →
ECM © (2005-07-06 14:10) [4]...З.Ы...По поводу отрисовки...
В любом случае для правильной отрисовки в любых ситуациях какого либо объекта, необходимо чтобы он (объект) всегда прорисовывался в полном объеме при приходе WM_PAINT (можно и WM_ERASEBKGND - в некоторых случаях это позволяет уменьшить ненужные "перемаргивания"). Thaddy это и имел ввиду....
...а в первом посте - этого нет Icons[1] рисуется на канве (это обертка вокруг DC) окна которое еще не появилось на экране. WM_PAINT - и вся прорисовка случится уже в цикле Run(Applet)..
А каким боком окно узнает что при прорисовке надо и Icons[1] рисовать?. В детях у FMain - Icons[1] не числится - значит рисовать "руками" перехватывая WM_PAINT (OnPaint)
← →
micron (2005-07-07 02:29) [5]Хм... Извиняюсь за глупый вопрос, но как создать child объекта? Насколько я понял для этого предназначена ф-ция CreateParented, но она принимает только PControl, иконка же - PIcon. Или проще грузить ее и потом конвертить в битмап?
← →
ECM © (2005-07-07 19:08) [6]PIcon - это не оконный объект... Для его того чтобы загнать его отображение в child-объект проще всего (ИМХО) воспользоваться
PImageShow объектом...в функции NewImageShow первый параметр
AParent - родитель...
← →
micron (2005-07-08 00:51) [7]Теперь все ясно. Вообще сказывается отсутвие детального описания по многим функциям...
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c