fpspreadsheet

Rund um die LCL und andere Komponenten
Antworten
JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

fpspreadsheet

Beitrag von JosefKoller »

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

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: fpspreadsheet

Beitrag von wp_xyz »

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.

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: fpspreadsheet

Beitrag von JosefKoller »

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

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: fpspreadsheet

Beitrag von JosefKoller »

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

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: fpspreadsheet

Beitrag von wp_xyz »

Kann aber jetzt nicht einschätzen, welche Auswirkungen das hat. Funktioniert dann das "Markieren" mehrerer Zellen nicht???
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.
Aber selbst das einfachste Rechnen (so wie im Wiki gezeigt) funktioniert 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).
Gibt es vielleicht noch andere Komponenten in diese Richtung?
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.)

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: fpspreadsheet

Beitrag von JosefKoller »

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

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: fpspreadsheet

Beitrag von wp_xyz »

es ist keine fpc.inc.
Natürlich, die gehört ja zu Trunk. Entschuldige die Verwirrung...
Wie schalte ich denn mit der Version das VarIsBool zu?
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):

Code: Alles auswählen

 
function VarIsBool(const V: Variant): Boolean;
begin
  Result := (TVarData(V).vType and varTypeMask) = varboolean;
end;
Wo ist denn die trunk Version? Ist damit die svn-Geschichte gemeint?
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.

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: fpspreadsheet

Beitrag von JosefKoller »

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.

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: fpspreadsheet

Beitrag von wp_xyz »

Einfach einen String ins Grid eintippen? Oder durch Code?

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
  ...
 
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.

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: fpspreadsheet

Beitrag von JosefKoller »

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

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: fpspreadsheet

Beitrag von wp_xyz »

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.

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: fpspreadsheet

Beitrag von JosefKoller »

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

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: fpspreadsheet

Beitrag von wp_xyz »

ich trau mich ja fast nimmer zu fragen
Keine Angst, nur zu...

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;
 

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: fpspreadsheet

Beitrag von JosefKoller »

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

wp_xyz
Beiträge: 5153
Registriert: Fr 8. Apr 2011, 09:01

Re: fpspreadsheet

Beitrag von wp_xyz »

Noch nicht implementiert.

Antworten