fpspreadsheet
-
- Beiträge: 115
- Registriert: Sa 17. Mär 2007, 10:53
fpspreadsheet
Hallo,
kann mir jemand sagen, wie sich die fpspreadsheet Komponenten installieren lassen?
Meine Lazarus Version
Lazarus 1.3 r45478 FPC 2.6.2 i386-win32-win32/win64
Ich hab es mit verschiedenen Dowloads probiert (source forge oder die Hinweise bei den Lazarus Wikis). Versionen1.4 oder 1.4,2. Zuletzt mit dieser Version
svn://svn.code.sf.net/p/lazarus-ccr/svn/components/fpspreadsheet
Erst bricht die Kompilierung bei VarIsBool ab. Da fand ich einen Hinweis, man solle eine entsprechende Korrektur in der fps.inc vornehmen.
Dann brach die Kompilierung wieder ab. Dieses Mal bei
// inherited
{$IF (ENABLE_MULTI_SELECT = 1)}
{@@ Allow multiple selections}
property RangeSelectMode default rsmMulti;
{$ENDIF}
in fpspreadsheetgrid.
Weiß jemand, wie man diese spreadsheet Geschichte (laz_fpspreadsheet_visual.lpk) zum Laufen bringt?
danke
Josef
kann mir jemand sagen, wie sich die fpspreadsheet Komponenten installieren lassen?
Meine Lazarus Version
Lazarus 1.3 r45478 FPC 2.6.2 i386-win32-win32/win64
Ich hab es mit verschiedenen Dowloads probiert (source forge oder die Hinweise bei den Lazarus Wikis). Versionen1.4 oder 1.4,2. Zuletzt mit dieser Version
svn://svn.code.sf.net/p/lazarus-ccr/svn/components/fpspreadsheet
Erst bricht die Kompilierung bei VarIsBool ab. Da fand ich einen Hinweis, man solle eine entsprechende Korrektur in der fps.inc vornehmen.
Dann brach die Kompilierung wieder ab. Dieses Mal bei
// inherited
{$IF (ENABLE_MULTI_SELECT = 1)}
{@@ Allow multiple selections}
property RangeSelectMode default rsmMulti;
{$ENDIF}
in fpspreadsheetgrid.
Weiß jemand, wie man diese spreadsheet Geschichte (laz_fpspreadsheet_visual.lpk) zum Laufen bringt?
danke
Josef
Re: fpspreadsheet
Nimm einen aktuellen Lazarus, dann flutscht es. Leider bin ich keine Entwicklungsabteilung einer Softwarefirma und kann nur begrenzt alte Versionen testen. Bis Laz1.0/fpc2.6.0 müsstest du das Paket aber zum Laufen kriegen, wenn du in der besagten inc-Datei Anpassungen vornimmst: Das VarIsBool kam erst beim fpc2.6.4 rein, daher das Define FPS_VARISBOOL aktivieren. Das Define für das MultiSelect neuerer Grid-Versionen ist, glaube ich, falsch gesetzt - muss ich gleich prüfen. Lösche als erstes einfach die Bereiche, die mit den Define aktiviert werden, es sind nur ein oder zwei Stellen.
-
- Beiträge: 115
- Registriert: Sa 17. Mär 2007, 10:53
Re: fpspreadsheet
Hi,
Danke für den Hinweis.
Ich hab die entsprechenden Stellen ausgeklammert. Dann konnte ich die Komponenten installieren.
Kann aber jetzt nicht einschätzen, welche Auswirkungen das hat.
Funktioniert dann das "Markieren" mehrerer Zellen nicht???
Danke.
Josef
Danke für den Hinweis.
Ich hab die entsprechenden Stellen ausgeklammert. Dann konnte ich die Komponenten installieren.
Kann aber jetzt nicht einschätzen, welche Auswirkungen das hat.
Funktioniert dann das "Markieren" mehrerer Zellen nicht???
Danke.
Josef
-
- Beiträge: 115
- Registriert: Sa 17. Mär 2007, 10:53
Re: fpspreadsheet
Hallo,
bin grad am Rumprobieren mit dem spreadsheet. Aber selbst das einfachste Rechnen (so wie im Wiki gezeigt) funktioniert nicht.
Also in B2 eingegeben: =A1*3, z. b. In A1 steht 10.
Im Grid und in Workbooksource ist autoCalc gesetzt.
Gibt es vielleicht noch andere Komponenten in diese Richtung?
Danke
Josef
bin grad am Rumprobieren mit dem spreadsheet. Aber selbst das einfachste Rechnen (so wie im Wiki gezeigt) funktioniert nicht.
Also in B2 eingegeben: =A1*3, z. b. In A1 steht 10.
Im Grid und in Workbooksource ist autoCalc gesetzt.
Gibt es vielleicht noch andere Komponenten in diese Richtung?
Danke
Josef
Re: fpspreadsheet
Das TsWorksheetGrid ist ein Nachfahre von TCustomGrid und da kann man (ohne die neue MultiSelect-Option) nur mit SHIFT einen rechteckigen Block markieren. Erst mit dem MultiSelect geht mit CTRL mehrere Blöcke zu markieren.Kann aber jetzt nicht einschätzen, welche Auswirkungen das hat. Funktioniert dann das "Markieren" mehrerer Zellen nicht???
Oje - da hat sich ein Fehler eingeschlichen... Ich habe eben eine korrigierte Version 1.4.3 hochgeladen. Oder du nimmst Trunk, da kann das Markieren mit CTRL bei alten Lazarus-Versionen jetzt durch ein richtiges Define in fps.inc ausgeschaltet werden (FPS_NO_GRID_MULTISELECT).Aber selbst das einfachste Rechnen (so wie im Wiki gezeigt) funktioniert nicht.
OLE (http://wiki.lazarus.freepascal.org/ExcelAutomation/de - setzt installiertes Excel voraus), http://avemey.com/zexmlss/index.php?lang=en, vielleicht auch die kommerziellen Komponenten von TMS etc (weiß nicht, ob für Lazarus, und bei denen musst du löhnen, und bekommst die Fehler auch nicht an einem Nachmittag gefixt und schon gleich nicht kostenlos.)Gibt es vielleicht noch andere Komponenten in diese Richtung?
-
- Beiträge: 115
- Registriert: Sa 17. Mär 2007, 10:53
Re: fpspreadsheet
Hallo,
hab eben diese Version runtergeladen. es ist keine fpc.inc. Wie schalte ich denn mit der Version das VarIsBool zu?
Wo ist denn die trunk Version? Ist damit die svn-Geschichte gemeint?
danke.
Josef
hab eben diese Version runtergeladen. es ist keine fpc.inc. Wie schalte ich denn mit der Version das VarIsBool zu?
Wo ist denn die trunk Version? Ist damit die svn-Geschichte gemeint?
danke.
Josef
Re: fpspreadsheet
Natürlich, die gehört ja zu Trunk. Entschuldige die Verwirrung...es ist keine fpc.inc.
Ohne die inc geht das nicht. Es sei denn, du kopierts dir irgendwo diesen Code rein (z.B. in fpsUtils) (- oder du holst dir Laz1.4RC2 - du kannst das auch zusätzlich zur jetzigen Version installieren, falls du der Sache nicht traust):Wie schalte ich denn mit der Version das VarIsBool zu?
Code: Alles auswählen
function VarIsBool(const V: Variant): Boolean;
begin
Result := (TVarData(V).vType and varTypeMask) = varboolean;
end;
ja. Es gibt nichts einfacheres: Ich nehme an,du bist auf Windows? TortoiseSVN installieren, Ordner für fpspreadsheet erzeugen, Rechtsklick darauf, in dem Kontextmenü, den TortoiseSVN angelegt hat, den Eintrag "SVN Checkout" wählen, den Link zum fpspreadsheet-Repository eintragen ( svn://svn.code.sf.net/p/lazarus-ccr/svn/), warten bis alles heruntergeladen ist, Larzarus starten, die lpk-Dateien öffnen und kompilieren bzw. installieren. Wenn du später ein Update ziehen möchtest, wieder auf den Ordner klicken, "SVN Update", dann werden die geänderten Dateien geholt.Wo ist denn die trunk Version? Ist damit die svn-Geschichte gemeint?
-
- Beiträge: 115
- Registriert: Sa 17. Mär 2007, 10:53
Re: fpspreadsheet
Hi,
so, jetzt aber.
Die Verwirrung kam von den verschiedenen Downloadmöglichkeiten.
Auf
http://sourceforge.net/projects/lazarus ... readsheet/
ist eine 1.4.3 Zip-Datei. Da ist eben keine fps.inc Datei dabei.
Mit der Version von SVN ist diese Datei mit dabei.
svn://svn.code.sf.net/p/lazarus-ccr/svn/components/fpspreadsheet
Ich hab jetzt die SVN Version genommen und in der fps.inc die jeweiligen Sachen aktiviert (auch dieses Multiselect ist in der neueren Version drin).
Damit kann ich fpspreadsheet problemlos installieren. Auch die Rechnerei funktioniert soweit.
Besten Dank für die Unterstützung.
Josef
P.S.
Noch kurz eine Frage:
Wie kann ich denn einzelnen Zellen ein bestimmtes Format zuweisen? Also A1 soll string werden, z. b.
so, jetzt aber.
Die Verwirrung kam von den verschiedenen Downloadmöglichkeiten.
Auf
http://sourceforge.net/projects/lazarus ... readsheet/
ist eine 1.4.3 Zip-Datei. Da ist eben keine fps.inc Datei dabei.
Mit der Version von SVN ist diese Datei mit dabei.
svn://svn.code.sf.net/p/lazarus-ccr/svn/components/fpspreadsheet
Ich hab jetzt die SVN Version genommen und in der fps.inc die jeweiligen Sachen aktiviert (auch dieses Multiselect ist in der neueren Version drin).
Damit kann ich fpspreadsheet problemlos installieren. Auch die Rechnerei funktioniert soweit.
Besten Dank für die Unterstützung.
Josef
P.S.
Noch kurz eine Frage:
Wie kann ich denn einzelnen Zellen ein bestimmtes Format zuweisen? Also A1 soll string werden, z. b.
Re: fpspreadsheet
Einfach einen String ins Grid eintippen? Oder durch Code?
Ich sehe ich gerade, dass dieses Beispiel im Wiki fehlt. Aber schau dir die Beispiele unter "examples/read_write/" an, da wird alles mögliche ins Worksheet geschrieben.
Code: Alles auswählen
var
MyWorkbook: TsWorkbook;
MyWorksheet: TsWorksheet;
begin
MyWorkbook := TsWorkbook.Create;
MyWorksheet := MyWorkbook.AddWorksheet('My_Table');
MyWorksheet.WriteUTF8Text(0, 0, 'Dies ist ein Text'); // "A1" has row=0 and col=0
...
-
- Beiträge: 115
- Registriert: Sa 17. Mär 2007, 10:53
Re: fpspreadsheet
Hi,
Danke. Das Zuweisen hab ich schon gefunden.
Ich meinte, einer bestimmten Zelle ein bestimmtes Format zuweisen. Also Cells(0,0) soll currency werden oder eine Dezimalzahl.
Josef
Danke. Das Zuweisen hab ich schon gefunden.
Ich meinte, einer bestimmten Zelle ein bestimmtes Format zuweisen. Also Cells(0,0) soll currency werden oder eine Dezimalzahl.
Josef
Re: fpspreadsheet
Wieder die Frage: Im Grid? Oder per Code?
Im Grid brauchst du eine TsWorkbookSource, die die Daten liefert/speichert, sowie für jeden Formatierungswunsch die entsprechende Standard-Action (Actionlist aufs Formular, Rechtsklick, Neue Standard-Action, in der Liste unten kommen die Actions für FPSpreadsheet; für das Zahlenformat wäre es TsNumberFormatAction. Properties entsprechend einstellen (NumberFormat = nfCurrency bzw. nfCurrencyRed für rote negative Zahlen). Diese Action kannst du dann der entsprechenden Eigenschaft eines Buttons, Menü-Items, toolButtons, etc. zuweisen. - Siehe Tutorial http://wiki.lazarus.freepascal.org/FPSp ... pplication.
Per Code geht's mit "MyWorksheet.WriteNumberFormat"/"WriteCurrencyformat"/"WriteDateTimeFormat" etc. - siehe http://wiki.lazarus.freepascal.org/FPSp ... me_formats
Warnung: die Formatierungsmöglichkeiten gerade für Currency sind im fpspreadsheet im Vergleich zu den "Großen" etwas eingeschränkt.
Im Grid brauchst du eine TsWorkbookSource, die die Daten liefert/speichert, sowie für jeden Formatierungswunsch die entsprechende Standard-Action (Actionlist aufs Formular, Rechtsklick, Neue Standard-Action, in der Liste unten kommen die Actions für FPSpreadsheet; für das Zahlenformat wäre es TsNumberFormatAction. Properties entsprechend einstellen (NumberFormat = nfCurrency bzw. nfCurrencyRed für rote negative Zahlen). Diese Action kannst du dann der entsprechenden Eigenschaft eines Buttons, Menü-Items, toolButtons, etc. zuweisen. - Siehe Tutorial http://wiki.lazarus.freepascal.org/FPSp ... pplication.
Per Code geht's mit "MyWorksheet.WriteNumberFormat"/"WriteCurrencyformat"/"WriteDateTimeFormat" etc. - siehe http://wiki.lazarus.freepascal.org/FPSp ... me_formats
Warnung: die Formatierungsmöglichkeiten gerade für Currency sind im fpspreadsheet im Vergleich zu den "Großen" etwas eingeschränkt.
-
- Beiträge: 115
- Registriert: Sa 17. Mär 2007, 10:53
Re: fpspreadsheet
Hi,
ich trau mich ja fast nimmer zu fragen.
Die Formatierungen hab ich gefunden. Danke.
Das Selektieren von mehreren Zellen hab ich noch nicht gefunden. Also sowas wie ....A1:D5 select
um eben dann den selektierten (markierten Zellen) beispielsweise ein Currency Format zu verpassen (per code).
Das Ding schaut im Übrigen sehr gut aus.
Danke.
Josef
ich trau mich ja fast nimmer zu fragen.
Die Formatierungen hab ich gefunden. Danke.
Das Selektieren von mehreren Zellen hab ich noch nicht gefunden. Also sowas wie ....A1:D5 select
um eben dann den selektierten (markierten Zellen) beispielsweise ein Currency Format zu verpassen (per code).
Das Ding schaut im Übrigen sehr gut aus.
Danke.
Josef
Re: fpspreadsheet
Keine Angst, nur zu...ich trau mich ja fast nimmer zu fragen
Code: Alles auswählen
var
r, c: Cardinal; // r = "row", c = "column"
begin
for r := 0 to 3 do
for c := 0 to 4 do
MyWorksheet.WriteNumberFormat(r, c, nfFixedTh, 3); // Drei Kommastellen, Tausendertrenner
end;
-
- Beiträge: 115
- Registriert: Sa 17. Mär 2007, 10:53
Re: fpspreadsheet
Es wird.
Such grad mit setSelection rum.
Bei einem HeaderClick soll die gesamte column selektiert werden.
bekomm's aber nicht hin.
wie markier ich nun eine Row oder eine Column?
Danke
Josef
Such grad mit setSelection rum.
Bei einem HeaderClick soll die gesamte column selektiert werden.
bekomm's aber nicht hin.
wie markier ich nun eine Row oder eine Column?
Danke
Josef
Re: fpspreadsheet
Noch nicht implementiert.