Announcement

Collapse
No announcement yet.

Schon wieder Delphi->Excel

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Schon wieder Delphi->Excel

    Hallo alle miteinander,<br>
    Ich habe ein Probleme beim Schreiben eines Excel-Arbeitsblattes<br>
    von Delphi aus. Bisher ist es mir ( mit Hilfe der Bücher von<br>
    Andreas Kosch und des Forums hier ) gelungen, aus einer Master-<br>
    Detailtabelle ein doch recht ordentliches und selbstrechnendes<br>
    Arbeitsblatt zu erzeugen. Nun möchte ich, zur besseren Lesbarkeit des<br> Arbeitsblattes dicke Linien in bestimmte Zeilen ( Zellen ) einfügen.<br>
    Mein Problem ist es nun, dass sich die Breite des Sheets in Abhängigkeit<br>von dem Inhalt eines Memofeldes ändert. Die Linien <br>
    müssten also dynamisch sein. Ich möchte auch das Rechenergebnis dann <br> unterstreichen. Ich werkel jetzt 'ne Woche daran herum, ohne Erfolg.<br> Hat wer 'ne Idee, wie ich das realisieren kann ? ( VBA war bisher wenig <br> hilfreich )<br> <p> Greetz Jürgen

  • #2
    Hallo Jürgen,

    Meinst Du Gitternetzlinien oder das Zeichnenelement Linie?

    Für Gitternetzlinien hab ich eine einfache Lösung:
    Hier ein Auszug aus einem meiner Programme:
    <blockquote>
    aRange :=ExcelWorkSheet1.Range[Format('%s%d',[spalte,zeile]),Format('%s%d',[spalte,zeile])]; <p>
    aRange.Value := 'NAME:';<p>
    aRange.Font.Size :=14;<p>
    aRange.BorderAround(xlContinuous, xlThin,xlAutomatic,emptyParam);<p>
    aRange :=ExcelWorkSheet1.Range[Format('%s%d',[spalte,zeile+1]),Format('%s%d',[spalte,zeile+1])];<p>
    aRange.Value := 'Datum:';<p>
    aRange.Font.Size :=14;<p>
    aRange.BorderAround(xlContinuous, xlThin,xlAutomatic,emptyParam);<p>
    aRange :=ExcelWorkSheet1.Range[Format('%s%d',[spalte,zeile+3]),Format('%s%d',[spalte,zeile+3])];<p>
    aRange.Value := 'Gesamtstunden:';<p>
    aRange.Font.Size :=14;<p>
    aRange.BorderAround(xlContinuous, xlThin,xlAutomatic,emptyParam);<p>
    aRange := ExcelWorksheet1.Range['A2','A2'];<p>
    </blockquote>
    das zeichnet ein Gitter um die selectierten Zellen/Zelle.
    Für einzelne Seiten sieht das ganze so aus:

    ARange.Borders.Item[xlEdgeLeft].LineStyle := xlContinuous;<p>
    item= xlEdgeLeft, xlEdgeRight, xlEdgeTop, xlEdgeBottom, xlEdgeDiagonalUp, xlEdgeDiagonalDown <p>

    ARange.Borders.item[...].Weight := xlThin;<p>
    ARange.Borders.item[...].ColorIndex := xlAutomatic;<p>

    Der Auszug funktioniert ganz bestimmt, den Teil mit den einzelnen Seiten hab ich aus dem Gedächtnis gemacht da ich in auf Grund der vielen Programmzeilen eher selten bis gar nicht verwende.
    Das ganze funktioniert wenn Du die Exel-Komponenten von der Serverseite benutzt und

    var aRange : Range;

    Wobei ich mit der Bibliothek dcloffice2k50.bpl arbeite.
    Lg
    Pete

    Comment


    • #3
      Hallo Peter,<br>
      danke für Deine Hilfe.Ich habe mir Deine Zeilen mal ausgedruckt<br> und ein wenig damit experimentiert.Es klappte eigentlich auf An-<br>hieb.Die Kommandos und Parameter dafür waren mir unbekannt.<br> Vielen Dank für Deine schnelle Hilfe.Ich bin jetzt ein grosses<br> Stück weiter.Dank auch an die vielen anderen hier,bei deren <br> Beiträgen ich mir das nötige Rüstzeug holen konnte,um dieses <br> Teilchen überhaupt zu realisieren.Ich bin mal gespannt,wann mein <br>Chef auf die Idee kommt,sowas wieder einzulesen.Der schiebt <br>sich das Zeugs auf'm Palm,ändert da irgendetwas und so ist <br>alles weitere schon vorherzusehen :-(( . Mir graust davor !! <br><p><p>Grüsse und Danke <p> Jürge

      Comment

      Working...
      X