tabla quitar punteadas lineas las eliminar desactivar cuadricula como color cambiar cocoa

cocoa - las - quitar lineas punteadas en excel



¿Dibujar líneas de cuadrícula en NSTableView solo para filas pobladas? (3)

Creo que tendrás que subclasificar NSTableView y anular drawRow:clipRect: Otra posibilidad sería anular drawGridInClipRect: pero eso es un poco más difícil de manejar, porque tendrás que seleccionar manualmente las filas.

Esto debería llevarte en la dirección correcta:

- (void)drawRow:(NSInteger)rowIndex clipRect:(NSRect)clipRect { // First do the default drawing [super drawRow:rowIndex clipRect:clipRect]; // Check if there''s content in any of the cells in this row BOOL doesHaveContent = NO; int numCols = [self numberOfColumns]; int colIndex; for( colIndex = 0; colIndex < numCols; colIndex++ ){ NSCell * cell = [self preparedCellAtColumn:colIndex row:rowIndex]; if( [cell objectValue] != nil ){ doesHaveContent = YES; break; } } if( doesHaveContent ){ NSRect rowRect = [self rectOfRow:rowIndex]; NSBezierPath * gridPath = [NSBezierPath bezierPath]; // Ignoring clipRect because this isn''t a lot of drawing [gridPath moveToPoint:rowRect.origin]; [gridPath lineToPoint:NSMakePoint(rowRect.origin.x + rowRect.size.width, rowRect.origin.y)]; [gridPath moveToPoint:NSMakePoint(rowRect.origin.x, rowRect.origin.y + rowRect.size.height)]; [gridPath lineToPoint:NSMakePoint(rowRect.origin.x + rowRect.size.width, rowRect.origin.y + rowRect.size.height)]; [myGridColor set]; [gridPath stroke]; // You could also just do: // [myGridColor set]; // [[NSBezierPath bezierPathWithRect:rowRect] stroke]; } }

Otra posibilidad más sería tener un NSCell personalizado; Cada celda podría dibujar un borde especial alrededor de sí misma si tuviera contenido. Sin embargo, esto no dibujaría una línea en toda la fila, si hubiera algunas celdas en la fila que estuvieran vacías.

¿Cómo puedo dibujar líneas de cuadrícula en un NSTableView solo para las filas que se rellenan? Cuando configuro la máscara de estilo de cuadrícula en NSTableViewSolidHorizontalGridStyleMask, dibuja líneas de cuadrícula para todas las filas, ya sean pobladas o no.

Estoy buscando un poco de código de ejemplo para hacer esto.


En Swift 3.1 esto es todo lo que necesitas:

import Cocoa class GridClipTableView: NSTableView { override func drawGrid(inClipRect clipRect: NSRect) { } }


Lo que encontré que funciona mejor para mí hasta ahora es el siguiente código. Simplemente engañe al código de dibujo de la cuadrícula original para dibujar solo en filas pobladas.

Subclase NSTableView, si es necesario, e invalide drawGridInClipRect: (NSRect) clipRect como sigue:

- (void)drawGridInClipRect:(NSRect)clipRect { NSRect lastRowRect = [self rectOfRow:[self numberOfRows]-1]; NSRect myClipRect = NSMakeRect(0, 0, lastRowRect.size.width, NSMaxY(lastRowRect)); NSRect finalClipRect = NSIntersectionRect(clipRect, myClipRect); [super drawGridInClipRect:finalClipRect]; }