¿Estás seguro de que estás dispuesto a asignar todos esos objetos? Al observar la estructura del registro, parece que desea un objeto por fila, no por celda. Para hacerlo, tiene al menos 2 opciones:
- (Mi favorito debido a la libertad que brinda) Utiliza TDrawGrid en su lugar y dibuja el contenido de su celda manualmente. ¡Realmente no es tan difícil!
- Hace un objeto que encapsula este registro. Es una tarea fácil, así, como por ejemplo:
type
TMyRec= packed record
FullName : string[255];
RelativePath : boolean;
IsInvalid : boolean;
end;
TMyData = object (TObject)
private
FData: TMRec;
public
constructor Create(AData: TMyRec);
property FullName: String read FData.FullName write FData.FullName;
property RelativePath: Boolean read FData.RelativePath write FData.RelativePath;
property IsInvalid: Boolean read FData.IsInvalid write FData.IsInvalid;
end;
...
constructor TMyData.Create(AData: TMyRec);
begin
FData := AData;
end;
Ahora cada vez que desee conectar sus datos a la red que acaba de empacar en ese objeto y, a continuación, puede utilizar la colección de objetos.
Ahora, en lugar de pasar por todos los problemas, simplemente cree un controlador de eventos para TDrawGrid.DrawCell como
procedure TMainForm.GrdPathsDrawCell(Sender: Object; ...);
uso GrdPaths.Canvas.Handle con DrawText Unicode o si se necesita el uso DrawTextW (ambos vienen de API de Windows por lo que hay un montón de ejemplos de cómo usarlo) y usted usted y su cliente guardar mucha frustración, memoria y, sobre todo, tiempo.
¿Cómo está creando sus registros? Usar New (PMyRec) tomará una cantidad de tiempo similar (o cualquier otro método que los cree en el montón) –