Главная страница
    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.034 c
8-1096140394
hgd
2004-09-25 23:26
2004.12.26
Как быстрее всего вывести на Image Bitmap?


8-1096036237
4МО
2004-09-24 18:30
2004.12.26
Как выдрать title из jpeg a?


14-1102083278
Igor_thief
2004-12-03 17:14
2004.12.26
Delphi 2005 и RAVE


3-1101888350
Black
2004-12-01 11:05
2004.12.26
Как программно отключить клиента от сервера?


1-1101979607
stud
2004-12-02 12:26
2004.12.26
array [] of tstrings;





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