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

Вниз

Помогите с BitBlt !!!   Найти похожие ветки 

 
Demon[DZ]   (2003-03-25 18:14) [0]

Знатоки нужна помощь! Я написал свой компонент (DB Планеровщик) который евляется наследником от TDrawGrid. Он представляет собой таблицу из 2х столбцов и n-строк (в зависимости от кол-ва записей в таблице). В 1-ом столбце отображаются имена работников, а во 2-ом отображается занятость того или иного работника в виде прямоугольников. Ниже приведена процедура, которая выводит имена работников. Всё работает как надо, но вот я решил ускорить процесс прорисовки и начал ето далать с одной процедуры, наткнулся на грабли. Я уже запарился..., подскажите кто может!!
Заранее благодарен.

procedure TSLDBPlanner.DrawHeaderText(Sender: TObject; R: TRect; TxtType: SmallInt;
TextShift: ShortInt; Text1, Text2: string);
var H, W : integer;
DC : HDC;
Tmp : TBitMap;
begin
if (TxtType = 0) then Exit;

Tmp := TBitMap.Create;
H := R.Bottom-R.Top;
W := R.Right-R.Left;
with (Tmp.Canvas) do
begin
//Height := H;
//Width := W;
VertGradRect(R, $00E4E4E4, clWhite, Tmp.Canvas);
Brush.Style := bsClear;
Font.Name :="Times New Roman";
Font.Style := [fsBold];
Font.Size := 11;
case (TextShift) of
-1 : begin
Font.Color := HMousePressTextColor;
Pen.Color := HMousePressTextColor;
Brush.Color := $00B4B4B4;
RoundRect(R.Left+3, R.Top+3, R.Right-1, R.Bottom-1, 3, 3);
end;
0 : Font.Color := HTextColor;
1 : begin
Font.Color := HUnderMouseTextColor;
Pen.Color := HUnderMouseTextColor;
Brush.Color := $00DCCFC7;
RoundRect(R.Left+1, R.Top+1, R.Right-3, R.Bottom-3, 3, 3);
end;
end;

TextOut(R.Left+5-TextShift, R.Top+6-TextShift, Text1);
Font.Style := [];
end;
BitBlt(TDrawGrid(Sender).Handle, R.Left, R.Top, W, H, Tmp.Handle, 0, 0, SrcCopy);

Tmp.Free;
end;


 
Demon[DZ]   (2003-03-25 18:16) [1]

Ой забыл. Я решил использовать функцию BitBlt. о незнаю как на неё переделать мою процедуру....


 
MBo   (2003-03-25 18:18) [2]

>BitBlt(TDrawGrid(Sender).Handle
здесь должен быть дескриптор контекста (HDC), а не хэндл окна.
TDrawGrid(Sender).Canvas.Handle, видимо


 
icWasya   (2003-03-25 18:34) [3]

во первых почему закоментировано
//Height := H;
//Width := W;


во вторых если рисуешь на канве битмапа то наверно нужно вместо
RoundRect(R.Left+3, R.Top+3, R.Right-1, R.Bottom-1, 3, 3);
писать
RoundRect(3, 3, W-1, W-1, 3, 3);
ну и аналогично ещё в двух строчках


 
Demon[DZ]   (2003-03-25 18:55) [4]

Спасибо всеммм. Получилось!! Блин были такие глупые ошибки :))
Спасибо ещё раз всем!



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

Форум: "Основная";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
3-19445
новый
2003-03-18 16:06
2003.04.07
Как в IB(FireBird) узнать версию билда?


1-19591
Sherlock
2003-03-25 09:19
2003.04.07
Нумерация в Qreport


1-19634
val_123
2003-03-25 16:14
2003.04.07
Несбрасываемый счётчик


1-19575
апельсин==
2003-03-26 11:43
2003.04.07
как разархивировать файл из Rar-a???


3-19424
yurikon03
2003-03-16 13:24
2003.04.07
Добавление записи в дочерней таблице





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