vladman
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору rdenk1 Цитата: И в результате граница между ячейками строки видна. Я что-то упустил? | Пропустили, всего навсего, код слияния ячеек. Попробуйте за основу использовать вот этот код: Код: procedure <YorForm>.<YourcxGridDBTableView>CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); var vRect: TRect; vPreviousViewInfo: TcxGridTableDataCellViewInfo; vTextAreaBounds: TRect; vMargedColumn1, vMargedColumn2: TcxGridDBColumn; vBorderColor: TColor; begin vMargedColumn1 := <YourcxGridDBTableView>Column1; vMargedColumn2 := <YourcxGridDBTableView>Column2; if (AViewInfo.Item.Index in [vMargedColumn1.Index, vMargedColumn2.Index]) and (AViewInfo.GridRecord.Values[vMargedColumn1.Index] = AViewInfo.GridRecord.Values[vMargedColumn2.Index]) then begin AViewInfo.Borders := []; if AViewInfo.Item.Index = vMargedColumn2.Index then begin vPreviousViewInfo := Sender.ViewInfo.RecordsViewInfo.Items[vMargedColumn1.Index].GetCellViewInfoByItem(vMargedColumn1); vTextAreaBounds := AViewInfo.TextAreaBounds; vTextAreaBounds.Left := vPreviousViewInfo.TextAreaBounds.Left; ACanvas.DrawTexT(AViewInfo.Text, vTextAreaBounds, cxAlignHCenter); vRect := AViewInfo.Bounds; vRect.Left := vPreviousViewInfo.Bounds.Left - 1; vRect.Top := vRect.Top - 1; vBorderColor := AViewInfo.BorderColor[bLeft]; ACanvas.DrawComplexFrame(vRect, vBorderColor, vBorderColor, [bTop, bLeft, bBottom, bRight], 1); end; ADone := True; end; end; |
|