Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.04 c
4-1136835524
ArtemESC
2006-01-09 22:38
2006.03.26
Помогите с регионами


15-1141654342
Igorek
2006-03-06 17:12
2006.03.26
Линейка для экрана


2-1141937403
redlord
2006-03-09 23:50
2006.03.26
Аттрибуты файла


15-1141233568
Piter
2006-03-01 20:19
2006.03.26
Радио-интернет и телефония


2-1141714608
dera
2006-03-07 09:56
2006.03.26
Как select ом выбрать уникальные (неповторяющиеся записи)?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский