| Autor |
Beitrag |
10Markus
      
Beiträge: 33
|
Verfasst: Di 17.06.03 10:56
Hi,
ich möchte gerne diesen Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| procedure XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word; const AValue: string); var L: Word; const {$J+} CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0); {$J-} begin L := Length(AValue); CXlsLabel[1] := 8 + L; CXlsLabel[2] := ARow; CXlsLabel[3] := ACol; CXlsLabel[5] := L; XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel)); XlsStream.WriteBuffer(Pointer(AValue)^, L); end;
function SaveAsExcelFile(AGrid: TStringGrid; AFileName: string): Boolean; const {$J+} CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); {$J-} CXlsEof: array[0..1] of Word = ($0A, 00); var FStream: TFileStream; I, J: Integer; begin Result := False; FStream := TFileStream.Create(PChar(AFileName), fmCreate or fmOpenWrite); try CXlsBof[4] := 0; FStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof)); for i := 0 to AGrid.ColCount - 1 do for j := 0 to AGrid.RowCount - 1 do XlsWriteCellLabel(FStream, I, J, AGrid.cells[i, j]); FStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof)); Result := True; finally FStream.Free; end; end; |
in eine Komponente umwandeln, bei welcher man bei den "Properties" ein Stringgrid und einen Dateinamen festlegen kann. WIe gehe ich da am besten vor?
_________________ Grüße,
Markus
|
|
Tweafis
      
Beiträge: 647
WinXP + fbsd
Delphi 5 Prof
|
Verfasst: Di 17.06.03 11:48
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56:
| TDeinObjektName = class private FGrid: TStringGrid; FFileName: string; protected public public XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word; const AValue: string); function SaveAsExcelFile: Boolean; published property Grid: TStringGrid write FGrid read FGrid; property FileName: string write FFilename read FFilename; end;
implementation
procedure TDeinObjektName.XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word; const AValue: string); var L: Word; const {$J+} CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0); {$J-} begin L := Length(AValue); CXlsLabel[1] := 8 + L; CXlsLabel[2] := ARow; CXlsLabel[3] := ACol; CXlsLabel[5] := L; XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel)); XlsStream.WriteBuffer(Pointer(AValue)^, L); end;
function TDeinObjektName.SaveAsExcelFile: Boolean; const {$J+} CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); {$J-} CXlsEof: array[0..1] of Word = ($0A, 00); var FStream: TFileStream; I, J: Integer; begin Result := False; FStream := TFileStream.Create(PChar(FileName), fmCreate or fmOpenWrite); try CXlsBof[4] := 0; FStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof)); for i := 0 to Grid.ColCount - 1 do for j := 0 to Grid.RowCount - 1 do XlsWriteCellLabel(FStream, I, J, Grid.cells[i, j]); FStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof)); Result := True; finally FStream.Free; end; end; |
Weiß aber auch nicht genau. Die Neue Komponente erstellst du über Komponenten -> Neue Komponente
_________________ .: Es wird der Tag kommen, an dem wir es nicht mehr ändern können :.
|
|
10Markus 
      
Beiträge: 33
|
Verfasst: Di 17.06.03 13:26
Titel: Da kommen jede Mege Fehlermeldungen
Hi,
da kommen jede Menge Fehlermeldungen. Könntest du mich evtl per ICQ ansprechen, da ists einfacher als im FOrum (# 169699241).
Das größte Probblem ist im Moment das er in der Zeile "FGrid: TStringrid" "TStringgrid" nicht erkennt. Muss ich da was anderes schreiben?
_________________ Grüße,
Markus
|
|
|