Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];

Вниз

Делаю “skin” для TabControl помогите   Найти похожие ветки 

 
Idx ©   (2005-10-22 07:49) [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;


 
DVM ©   (2005-10-24 10:21) [2]


> Idx ©   (22.10.05 07:49)  

Какой смысл писать то одного, то от другого имени?



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

Форум: "WinAPI";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.014 c
14-1133597407
Knight
2005-12-03 11:10
2005.12.25
Архивация файлов с русскими именам в TurboPower Abbrevia...


14-1133268593
Mike Kouzmine
2005-11-29 15:49
2005.12.25
Бедные немцы!


14-1133434723
TUser
2005-12-01 13:58
2005.12.25
СТРИМ


2-1134382530
Молодой
2005-12-12 13:15
2005.12.25
Список файлов из папки


8-1122111225
lord Zeratul
2005-07-23 13:33
2005.12.25
Длина PlayList-а в WinAmp 2.x в секундах





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский