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

Вниз

dxDBGrid   Найти похожие ветки 

 
MakNik   (2004-11-22 10:07) [0]

Подскажите, пожалуйста, как в dxDBGrid сделать объединение ячеек, как в Excel?
Необходимо получить сетку такого вида:
---------|-----------|----------|---------|-
        | Строка 1а |Строка 1а |         |  
Строка 1 |-----------|----------| Строка 1|
        | Строка 1б |Строка 1б |         |
---------|-----------|----------|---------|-...
        | Строка 2а |Строка 2а |         |  
Строка 2 |-----------|----------| Строка 2|
        | Строка 2б |Строка 2б |         |
---------|-----------|----------|---------|-...
...


 
Garry_c   (2004-11-22 10:12) [1]

Ты посмотри тему
Много строк в одной записи! (ser_ega 22.11.04 08:03)
может поможет.


 
janb   (2004-11-22 10:35) [2]

Макник рисунок можешь не рисовать

Garry_c   (22.11.04 10:12) [1]
аха, он тебе поможеть


 
MakNik   (2004-11-23 14:04) [3]

рисую объединенную ячейку на обычном DBGrid - получается... а вот с dxDBGrid - не получается...
(вызов DrawRowButton..)

const
 ALIGN_FLAGS: array[TAlignment] of Integer =
 (DT_LEFT or DT_SINGLELINE or DT_EXPANDTABS or DT_NOPREFIX,
   DT_RIGHT or DT_SINGLELINE or DT_EXPANDTABS or DT_NOPREFIX,
   DT_CENTER or DT_SINGLELINE or DT_EXPANDTABS or DT_NOPREFIX);

procedure Paint3dRect(DC: HDC; ARect: TRect);
begin
 InflateRect(ARect, 1, 1);
 DrawEdge(DC, ARect, BDR_RAISEDINNER, BF_BOTTOMRIGHT);
 DrawEdge(DC, ARect, BDR_RAISEDINNER, BF_TOPLEFT);
end;

procedure TForm.WriteText(ACanvas: TCanvas; ARect: TRect; const Text: string; Alignment: TAlignment);
var
 DrawRect: TRect;
begin
 DrawRect := Rect(ARect.Left + 1, ARect.Top + 1, ARect.Right, ARect.Bottom);
 DrawText(ACanvas.Handle, PChar(Text), Length(Text), DrawRect,
   ALIGN_FLAGS[Alignment] or DT_VCENTER or DT_END_ELLIPSIS);
end;

procedure TTabel.DrawRowButton(Rect: TRect; Text: string; Style: TFontStyles; Alignment: TAlignment);
var
 FullRect: TRect;
 Col: TColumn;
begin
 FullRect := Rect;
 FullRect.Left := IndicatorWidth + 1;
 FullRect.Right := CalcTitleRect(Columns[Columns.Count - 1], 0, Col).Right;

 DrawCellButton(FullRect, Text, Style, [], Alignment);
end;

Procedure TForm.DrawCellButton(Rect:TRect; Text:String;Style: TFontStyles; State: TGridDrawState; Alignment:TAlignment);
Var Shift:Integer;
Begin
   //Очищаем ячейку
     Canvas.Brush.Color:=clBtnFace;
     Canvas.Font.Color:=clBtnText;
     Canvas.Font.Style:=Style;
     Canvas.FillRect(Rect);
   //Если ячейка фиксирована, то мы получим TRect меньшего размера,
   //чем для обычной ячейки. Это нужно учесть
     Shift:=-2+ORD(gdFixed in State);
   //Вписываем текст
     InFlateRect(Rect,Shift,0);
     WriteText(Canvas,Rect,Text,Alignment);
     InflateRect(Rect,(-1)*Shift,0);

   //рисуем по размеру ячейки dutton
   //только если это не фиксированная ячейка, так как для нее окантовка уже нарисована
     IF NOT (gdFixed in State) Then
     Begin
       //Рисуем аналог разделительных линий между фиксированными ячейками грида
       //(они рисуются черным цветом, в отличие от серых линий между ячейками
       //данных (grids.pas)
       InflateRect(Rect, 1, 1);
       Rect.Top:=Rect.Top + 1;
       FrameRect(Canvas.Handle, Rect, GetStockObject(BLACK_BRUSH));

       Rect.Top:=Rect.Top - 1;
       // Закончили имитацию линий между фиксированными ячейками.
       InflateRect(Rect, -2, -2);
       Paint3dRect(Canvas.Handle, Rect);
     End;
end;


 
MakNik   (2004-11-25 18:16) [4]

А как разделительную линию после каждой четной строки сделать более "жирной"?



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

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

Наверх




Память: 0.46 MB
Время: 0.05 c
14-1102311556
Чеширский Кот из Гондураса
2004-12-06 08:39
2004.12.26
Позвольте представиться


4-1099992720
syte_ser78
2004-11-09 12:32
2004.12.26
версия файла


1-1102714908
Larisa
2004-12-11 00:41
2004.12.26
По умолчанию, в Делфи используется MS San Serif,


1-1103014027
mefisto
2004-12-14 11:47
2004.12.26
Передать программе СТРОКОВЫЕ параметры !!!


8-1096363662
BALU1111
2004-09-28 13:27
2004.12.26
Построение поверхностей второго порядка в трехмерном пространстве





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