Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.05;
Скачать: CL | DM;

Вниз

Не читается из 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 вся ветка

Текущий архив: 2006.03.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.043 c
1-1138950001
Комбинатор
2006-02-03 10:00
2006.03.05
Ошибка памяти в Win98


15-1139080310
Kerk
2006-02-04 22:11
2006.03.05
IE vs FF


15-1139399785
gudzon1
2006-02-08 14:56
2006.03.05
Как отследить интернет-траффик?


2-1139741086
ZeFiR
2006-02-12 13:44
2006.03.05
MDI приложение


15-1139550534
Ega23
2006-02-10 08:48
2006.03.05
С Днём рождения! 10 февраля