Главная страница
    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.037 c
14-1102590544
DiamondShark
2004-12-09 14:09
2004.12.26
Радикальное решение.


14-1102058586
КаПиБаРа
2004-12-03 10:23
2004.12.26
Есть ссылки на расписание поездов из Самары в сторону Челябинска?


4-1100252261
Cosinus
2004-11-12 12:37
2004.12.26
Как получить Handle окна, находящегося под курсором?


3-1101968688
speed
2004-12-02 09:24
2004.12.26
информационно-поисковая система.


3-1101757521
Hmm
2004-11-29 22:45
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский