Главная страница
    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.007 c
6-19730
юзер
2003-02-10 13:18
2003.04.07
Как проще всего распечатать то, что открыто в TWebBrowser?


7-19899
BigVova
2003-02-12 22:31
2003.04.07
Как узнать формат бумаги принтера по умолчанию?


7-19905
Seldon
2003-02-11 22:28
2003.04.07
Процессы


1-19670
I_one
2003-03-26 06:01
2003.04.07
Как можно получить всех потомков выбранного элемента TreeView..?


1-19547
Flint
2003-03-25 09:17
2003.04.07
Сохранение структур TWriter ом ?





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