Главная страница
    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.012 c
3-19475
zloy_dima
2003-03-19 14:16
2003.04.07
ADO


1-19527
laptev
2003-03-26 15:55
2003.04.07
Memory&DLL


9-19402
Карлсон
2002-11-03 21:03
2003.04.07
NetWalk


14-19819
Deonis_L
2003-03-20 12:17
2003.04.07
Как включить скаченный компонент в Delphi?


1-19602
Visit
2003-03-24 13:11
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский