fpspreadsheet und Rahmen

Rund um die LCL und andere Komponenten
wp_xyz
Beiträge: 5130
Registriert: Fr 8. Apr 2011, 09:01

Re: fpspreadsheet und Rahmen

Beitrag von wp_xyz »

Josef, ich habe nun alle Punkte, die du in diesem Thread angesprochen hast, in fpspreadsheet eingebaut:

Rahmen um Zellen:
Benutze die neue Methode ShowCellBorders, der man die Koordinaten der Eckzellen und die CellBorderStyle-Records für die Rand- und inneren Linien angeben kann. Wenn keine Rahmenlinie erwünscht ist, nimmt man dafür die Konstante NO_CELL_BORDER, die in fpsWorksheetGrid.pas definiert ist.

Ändern des Auswahlrechtecks:
Dafür hat das Grid eine neue Eigenschaft SelectionPen, über die man alle Parameter des Pens einstellen kann. Beachte auch das geerbte UseXORFeatures, mit dem man die Farbe des Untergrunds umkehren kann, so dass der Auswahlrahmen nie verschwinden kann.

Einlesen aus einem Stream direkt in das Grid
Das habe ich so nicht realisiert, weil die Dateiendung zur Formaterkennung nicht zur Verfügung steht. Stattdessen musst du das Workbook selbst aus dem Stream lesen, denn du weißt ja, in welchem Format die Daten in den Stream gekommen sind, und es per LoadFromWorkbook ans Grid übergeben. Wichtig ist hier, dass du das Workbook nicht selbst zerstören darfst, weil sich das Grid davon aus Performance-Gründen keine eigene Kopie erstellt. (Sehr glücklich bin ich über diese Konstruktion nicht...).

Code: Alles auswählen

procedure TForm1.Button1Click(Sender: TObject);
var
  stream: TStream;
  workbook: TsWorkbook;
begin
  stream := TFileStream.Create('test.xls', fmOpenRead);
  try
    workbook := TsWorkbook.Create;
    workbook.ReadFromStream(stream, sfidExcel8);
    sWorksheetGrid1.LoadFromWorkbook(workbook, 0);
    // Do not free workbook here, this will be done by the grid's WorkbookSource.
  finally
    stream.Free;
  end;
end; 
Weitere Änderungen:
Der Zugriff auf die wesentlichen Daten kann nun genauso erfolgen wie bei einem StringGrid. Es gibt eine Property Cells, mit der man Zelldaten auslesen bzw. schreiben kann. In der Regel braucht man den Umweg über Worksheet und Workbook nicht mehr.

Siehe generell dazu die neue wiki-Seite http://wiki.lazarus.freepascal.org/TsWorksheetGrid

Antworten