Вниз
Скачать: CL | DM;

Skin   Найти похожие ветки 

← →
alvin   (2002-12-24 07:28) [0]

Уважаемые Мастера, подскажите как разработать программу, использующую скины (желательно пример).


← →
Separator ©   (2002-12-24 07:31) [1]

Для этого уже есть готовые компаненты, поищи внимательно


← →
alvin   (2002-12-24 19:08) [2]

Но хотелось бы ручками


← →
TCrash ©   (2002-12-24 19:27) [3]

Ручками весьма трудоемко. На кларионе я че-то подобное писал.
Все уперлось в то, что при любом используемом скине в окне должны быть те же контролы с теми же названиями.
для делфи нечто подобное может выглядеть след. образом : (подразумеваем, что данные, необходимые для формирования скина уже прочитанны из файла в Record)

procedure TForm1.ApplySkin;
begin
Button1.Cption:=SkinRec.btn1.capt;
Button1.Font:=SkinRer.btn1.fnt;
Form1.Captioin:=SkinRec.Form.Capt;
Form1.Width:=SkinRec.Form.Width;
end;

при этом

Type
TFormRec=record
capt:string;
fnt:TFont;
end;
[кусь]
TSkinRec=record
Form : FormRec;
Btn1 : Btn1Rec;
end;

как видишь процесс трудоемкий.
А вообще ничего сложного.


← →
TCrash ©   (2002-12-24 19:38) [4]

Кстати, забыл сказать. Я пользовался маленькой хитростью для изменения не только внешнего вида контролов, но и для изменения их наличия.

Button2.Visible:=False;
Check1.Visible:=True;



Вотт собсно и все.


← →
drin ©   (2002-12-25 03:49) [5]

Нужно пробовать и експкркментировать, я писал скин-движок и только раза с 3-4 получилось без багов.
Могу дать несколько советов:
1. Если обьект должен перерисовываться то блокоровать WM_EraseBkgnd;

2. Если нужно менять форму по маске то используй такую ф-ию:


function BitmapToRgn(Image: TBitmap; Mask: TColor): HRGN;
var
TmpRgn: HRGN;
x, y: integer;
ConsecutivePixels: integer;
CurrentPixel: TColor;
CreatedRgns: integer;
CurrentColor: TColor;
begin
CreatedRgns := 0;
Result := CreateRectRgn(0, 0, Image.Width, Image.Height);
inc(CreatedRgns);
if (Image.Width = 0) or (Image.Height = 0) then exit;

for y := 0 to Image.Height - 1 do
begin
CurrentColor := Image.Canvas.Pixels[0,y];
ConsecutivePixels := 1;
for x := 0 to Image.Width - 1 do
begin
CurrentPixel := Image.Canvas.Pixels[x,y];
if CurrentColor = CurrentPixel then
inc(ConsecutivePixels)
else
begin
if CurrentColor = Mask then
begin
TmpRgn := CreateRectRgn(x-ConsecutivePixels, y, x, y+1);
CombineRgn(Result, Result, TmpRgn, RGN_DIFF);
inc(CreatedRgns);
DeleteObject(TmpRgn);
end;
CurrentColor := CurrentPixel;
ConsecutivePixels := 1;
end;
end;

if (CurrentColor = Mask) and (ConsecutivePixels > 0) then
begin
TmpRgn := CreateRectRgn(x-ConsecutivePixels, y, x, y+1);
CombineRgn(Result, Result, TmpRgn, RGN_DIFF);
inc(CreatedRgns);
DeleteObject(TmpRgn);
end;
end;
end;


← →
ScableR ©   (2002-12-25 04:02) [6]

А загрузку из архива как организовать????


← →
drin ©   (2002-12-25 04:09) [7]

Используя алгоритмы или компоненты для архивирования.


← →
ScableR ©   (2002-12-25 04:33) [8]

Ну а пример знаешь какой-нибудь дла работы с архивами???
Желательно поточнее....


← →
alvin   (2002-12-25 23:45) [9]

Спасибо, Всем, с РОЖДЕСТВОМ И НОВЫМ ГОДОМ ВАС МУЖИКИ


← →
drin ©   (2002-12-26 02:36) [10]

Поищи компонент Skins Zip на Торри (www.torry.com)


← →
ScableR ©   (2002-12-26 08:46) [11]

to Drin
Ты имел в виду torry.net???
Если да, то не можешь ли точнее??? Я не смог найти :-(



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.017 c
3-24765
kav
2002-12-15 10:43
2003.01.09
Как победить тормоз в ADO?????


7-25114
dr.karter
2002-09-24 11:43
2003.01.09
Работа с командной строкой


3-24791
CPPBuilderDev
2002-12-16 16:52
2003.01.09
Коллеги подскажите как одновременно опросить несколько табклиц...


14-25043
RV
2002-12-20 11:12
2003.01.09
Вот. Нашел свой рассказик...


1-24947
karros
2002-12-26 16:27
2003.01.09
добавить пункт в поп-ап меню




   Наверх