AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein FreePascal [gelöst] Lazarus: StringGrid drucken
Thema durchsuchen
Ansicht
Themen-Optionen

[gelöst] Lazarus: StringGrid drucken

Ein Thema von Kralle · begonnen am 18. Feb 2015 · letzter Beitrag vom 19. Feb 2015
Antwort Antwort
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#1

AW: Lazarus: StringGrid drucken

  Alt 18. Feb 2015, 18:24

Das passiert beim Start der Anwendung, also ohne irgendetwas zu machen?
Nein, wenn ich auf den Button klicke der den Ausdruck starten soll.

Ich kann die Anwendung starten und Daten ins Grid eintragen, aber wehe ich starte den Ausdruck.
Dann zeig doch einmal den kompletten Code, WELCHER NICHT FUNKTIONIERT.

Also das GANZE Projekt.

Deine Zugriffsverletzungen kommen bestimmt wieder daher, dass Du zum x-ten mal auf etwas zugreifst, was nicht vorhanden ist.

Ich vermute hier einfach einmal wieder, dass Du RowCount oder ColCount verändert hast, was in Deinen Schleifen dafür sorgt, dass Du wieder auf eine Zeile zugreift, welche nicht da ist.

Die Vermutung bekomme ich, da in den geposteten Schleifen wieder bei 1 angefangen wird ohne Rücksicht auf FixedCols und FixedRows.

Wie soll man denn einen Fehler lokalisieren, wenn die entsprechenden Daten verheimlicht werden???
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
355 Beiträge
 
Delphi XE7 Professional
 
#2

AW: Lazarus: StringGrid drucken

  Alt 18. Feb 2015, 18:46
Moin,


Dann zeig doch einmal den kompletten Code, WELCHER NICHT FUNKTIONIERT.
Um das Problem in den Griff zu bekommen habe ich nur die Druckroutine, ein StringGrid und einen Button in ein neues Projekt gepackt.
Der Code steht in Beitrag 25:

http://www.delphipraxis.net/1290424-post25.html

Also das GANZE Projekt.
Der Code in Beitrag 25 läuft nicht und wir brauchen hier nicht über ein ganzes Projekt reden, wenn der Code schon nicht läuft.
Wenn diese minimalistische Version läuft, ich sie ins Projekt einbinde und es dann dort nicht geht, dann kommt das ganze Projekt erneut unter die Lupe.

Deine Zugriffsverletzungen kommen bestimmt wieder daher, dass Du zum x-ten mal auf etwas zugreifst, was nicht vorhanden ist.

Ich vermute hier einfach einmal wieder, dass Du RowCount oder ColCount verändert hast, was in Deinen Schleifen dafür sorgt, dass Du wieder auf eine Zeile zugreift, welche nicht da ist.
An dem Code, den wir gestern in einem anderen Thread bereinigt haben, habe ich nichts mehr geändert.
Ich hhabe nur die Druckprocedure ins Projekt kopiert und den Aufruf in Main-Menü eingebunden.

Die Vermutung bekomme ich, da in den geposteten Schleifen wieder bei 1 angefangen wird ohne Rücksicht auf FixedCols und FixedRows.
Welche Schleife in welchem Code meinst Du jetzt?

Wie soll man denn einen Fehler lokalisieren, wenn die entsprechenden Daten verheimlicht werden???
Siehe oben und Beitrag 25.

Gruß HEiko
OS: Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC)
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#3

AW: Lazarus: StringGrid drucken

  Alt 18. Feb 2015, 19:03
Jetzt noch einmal ganz von vorne:

Wenn Du den Code in #25 ausführst, dann läuft das Programm.

Das StringGrid1 ist komplett leer und
RowCount ist 5
ColCount ist 5
FixedRows ist 1
FixedCols ist 1

wenn Du nun Button1 drückst, dann kommt der Fehler?




Delphi-Quellcode:
  for F := 1 to sGrid.ColCount - 1 do // <- hier
  begin
    X1 := 0;
    for TmpI := 1 to (F - 1) do // <- hier
      X1 := X1 + 5 * (sGrid.ColWidths[TmpI]);
    Y1 := 300;
    X2 := 0;
    for TmpI := 1 to F do // <- hier
      X2 := X2 + 5 * (sGrid.ColWidths[TmpI]);
    Y2 := 450;
    TR := Types.Rect(X1, Y1, X2 - 30, Y2);
    Printer.Canvas.Font.Style := [fsBold];
    Printer.Canvas.Font.Size := 7;
    Printer.Canvas.TextRect(TR, X1 + 50, 350, sGrid.Cells[F, 0]);
    Printer.Canvas.Font.Style := [];
    for TmpI := 1 to sGrid.RowCount - 1 do // <- hier
    begin
      Y1 := 150 * TmpI + 300;
      Y2 := 150 * (TmpI + 1) + 300;
      TR := Types.Rect(X1, Y1, X2 - 30, Y2);
      Printer.Canvas.TextRect(TR, X1 + 50, Y1 + 50, sGrid.Cells[F, TmpI]);
    end;
  end;
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
355 Beiträge
 
Delphi XE7 Professional
 
#4

AW: Lazarus: StringGrid drucken

  Alt 18. Feb 2015, 19:12
N'abend,

Jetzt noch einmal ganz von vorne:

Wenn Du den Code in #25 ausführst, dann läuft das Programm.
Nein.
Das StringGrid1 ist komplett leer und
RowCount ist 5
ColCount ist 5
FixedRows ist 1
FixedCols ist 1
Ja.
wenn Du nun Button1 drückst, dann kommt der Fehler?
Ja.

Deine Quellcode-Hinweise (der Code stammt ja nicht von mir und läuft ungeändert bei anderen)
nehme ich mir nachher mal vor.

Gruß Heiko
OS: Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC)
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#5

AW: Lazarus: StringGrid drucken

  Alt 18. Feb 2015, 19:31
Sorry, entweder das Programm läuft oder es läuft nicht.

Wenn es NICHT läuft, dann kannst Du auch keinen Button drücken, bei dem ein Fehler auftreten könnte.

Beides gleichzeitig kann nicht stimmen.


Und wenn das Programm jetzt doch läuft und Du nur Code aus #25 verwendest mit dem leeren StrinGrid und dann beim Klicken der Fehler kommt, dann bin ich leider raus, denn der #25-Code läuft perfekt bei mir.


Das einzige was mir noch einfällt:
Einen Drucker als Standarddrucker hast Du aber auf dem System eingerichtet?
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Kralle

Registriert seit: 31. Okt 2004
Ort: Bremerhaven
355 Beiträge
 
Delphi XE7 Professional
 
#6

AW: Lazarus: StringGrid drucken

  Alt 18. Feb 2015, 20:01
N'abend,

Sorry, entweder das Programm läuft oder es läuft nicht.
Tja, bei mir ist das irgendwie nie Binär
Wenn es NICHT läuft, dann kannst Du auch keinen Button drücken, bei dem ein Fehler auftreten könnte.
Ist aber so. Erst der Aufruf der Druck-Procedure sorgt für einen Absturz.

Beides gleichzeitig kann nicht stimmen.
Eigentlich nicht, außer bei mir.

Und wenn das Programm jetzt doch läuft und Du nur Code aus #25 verwendest mit dem leeren StrinGrid und dann beim Klicken der Fehler kommt, dann bin ich leider raus, denn der #25-Code läuft perfekt bei mir.
Tja, dann müssten wir die Unterschiede zwischen unseren Systemen ermitteln.


Das einzige was mir noch einfällt:
Einen Drucker als Standarddrucker hast Du aber auf dem System eingerichtet?
Ja, auch der Wechsel auf einen anderen Drucker bringt nicht.

Gruß Heiko
OS: Windows 10 Professional, Delphi XE7 Pro SP1 +(Mobilpack & FireDAC)
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#7

AW: Lazarus: StringGrid drucken

  Alt 18. Feb 2015, 20:13
Oh oh Kralle,

ich glaube Du brauchst dringend eine Pause.

Du stehst gewaltig auf dem Schlauch und das logische Denken ist nicht mehr auf dem Niveau, bei dem man noch arbeiten sollte.

Überlege einmal:

Wenn das Programm startet, dann läuft es.

Wenn es nicht startet, dann läuft es nicht.

Wenn ein Programm nicht läuft, weil es nicht gestartet wurde/wird/werden kann, dann kannst Du auch keinen Button drücken, weil nichts da ist um zu drücken.

Folglich kann man den Button nur drücken, wenn das Programm läuft.


Wie aber schon gesagt: Mit XP und der gleichen Lazarus-Variante, welche Du benutzt, läuft #25.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.

Geändert von BadenPower (18. Feb 2015 um 20:16 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz