Главная страница
    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.033 c
14-1102316680
NeyroSpace
2004-12-06 10:04
2004.12.26
Утечка памяти в ZoneAlarm вер. 4.0.ххх и 5.0.ххх


3-1101415893
serko
2004-11-25 23:51
2004.12.26
Синтаксис в SQL


1-1102417746
COOLer
2004-12-07 14:09
2004.12.26
подсветка букв в RichEdit


4-1100194977
ruzan
2004-11-11 20:42
2004.12.26
usb


3-1101967627
Death
2004-12-02 09:07
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский