Форум: "Media";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
ВнизДелаю “skin” для TabControl помогите Найти похожие ветки
← →
Idx © (2005-10-22 07:48) [0]В общем, почти сделал, но не знаю правильно не правильно
но думаю, для начало что-то есть (Если можете, подправьте)
Вроде все рисуется как надо =) делать через WM_PAINT
Но теперь проблема моя программа сканирует все открытые
окна в системе ну что-то вроде TaskBar(а) и все получилось
почти =| Не могу вставить иконки с лева то есть они рисуются
но не так как я хотел =( Они сливаются и рисуются но что мне
надо, то есть та иконка, которая должна быть она рисуется сверху
а остальные снизу, что мне сделать, что бы, не сливались, помогите.
И ещё как мне удалить не нужный элемент? Delete не работает
как надо =( Она выдает ошибку при удалений предпоследние эл.
← →
Idx © (2005-10-22 08:47) [1]Забыл код добавить....
// А вот наши объявленные процедуры
procedure TMyTabControl.WMPAINT(var Msg: TWMPaint);
var
r : TRect; // Это нам нужно что бы знать положение кнопки
Idx : Integer; // А это номер кнопки
Procedure AlignButtonView(BtnBmpMode:TBitmap; DownUp:Boolean);
Var
Txt:String;
IcoBmp:TBitmap;
Begin
IcoBmp:=TBitmap.Create;
// Если она нажата то выпоняем наши действий
r.Bottom:=TaskBtnDown.Height; // Выровним высоту кнопки по картинке
// Выдергиваем иконку программы
Form1.ImageList1.GetBitmap(idx,IcoBmp);
// Выделяем иконку (Исключаем белый цвет)
CopyTransparentBrush(IcoBmp,BtnBmpMode,5,3, Rgb(255,255,255));
// Рисуем её туда где надо! В "r" хранится положение кнопки
Form1.TabControl1.Canvas.StretchDraw(r,BtnBmpMode);
// Ресуем надпись!
r.Top:=4; // Выровним позицию с верху вниз
// Делаем текст с обрезанием...
Txt:=Form1.TabControl1.Tabs[idx];
// Если длина текста привешает 17 символов
if Length(txt) > 17 then
// тогда обрезаем
txt:=copy(txt,1,17)+"...";
IF not DownUp Then
Self.Canvas.Font.Color := clBlack else
Self.Canvas.Font.Color := clWhite;
SetBkMode(Self.Canvas.Handle, TRANSPARENT);
Self.Canvas.TextOut(r.TopLeft.X+32,r.TopLeft.Y,Txt);
IcoBmp.Free;
end;
begin
inherited; // Эт типа мы сначало вызовим старое
if(TaskBtnDown.Handle=0)and(TaskBtnUp.Handle=0)Then exit;
// Перебигаем все кнопки на TabControl(е)
for idx:=0 to Form1.TabControl1.Tabs.Count-1 do
begin
// Берем по индексу размещение кнопки
// размещение будет хранится в переменной "r"
// которой относится тип TRECT.
r:=Form1.TabControl1.TabRect(idx);
// Здесь мы проверяем на НАЖАТУЮ И ОТЖАТУЮ КНОПКУ
if Form1.TabControl1.TabIndex = idx then // Если она нажата
AlignButtonView(TaskBtnDown,True)
else // А если отжато то подставляем другую картинку
AlignButtonView(TaskBtnUp,False);
end;
Msg.Result:=1;
end;
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c