Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

JPG Dateien aus einem Verzeichnis anzeigen

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
wsoftie
Rookie
Rookie
Beiträge: 11
Registriert: Sa, 13. Mai 2006 23:24
Wohnort: Hamburg
Kontaktdaten:

JPG Dateien aus einem Verzeichnis anzeigen

Beitrag von wsoftie » Mi, 11. Jan 2017 0:27

Hallo Kollegen(innen),

bin langsam am verzweifeln und brauche Eure Hilfe :banghead: . Über ein Waagensystem werden Dateien erstellt die unter anderem
auch die Namen der erstellten JPG-Dateien enthalten. Diese möchte ich als Vorschau mit den Wiegedaten anzeigen, alle
meine Versuche schlugen bisher fehl. Nachfolgend die Funktion :

Code: Alles auswählen

//
//---þ Anzeige der Wiege-Note
//
  @ 001,001 DCSAY "LOT-Nummer/Referenz"
  @ 001,020 DCSAY c0LOTNUMMER
  
  @ 002,001 DCSAY "Gewogen durch"
  @ 002,020 DCSAY cWaageName

  @ 004,001 DCSAY "Anzahl"
  @ 004,010 DCSAY "Netto-Gewicht"
  @ 004,025 DCSAY "Datum"
  @ 004,038 DCSAY "Bild-Datei"

  _nZeile := 6
  _nMax   := Len( _aNoten )

  For _nNext := 1 to _nMax

   @ _nZeile,001 DCSAY _aNoten[ _nNext,5 ] PICTURE "999"
   @ _nZeile,010 DCSAY _aNoten[ _nNext,8 ] PICTURE "99999"
   @ _nZeile,025 DCSAY Left( _aNoten[ _nNext,9 ], 10 )
   @ _nZeile,038 DCSAY _aNoten[ _nNext,11 ]

   _nSumme += Val( _aNoten[ _nNext,8 ] )
   _nZeile ++

  Next _nNext

  _nZeile ++

  @ _nZeile,001 DCSAY "Gesamtgewicht aller gewogenen Packstcke"
  
  _nZeile ++

  @ _nZeile,001 DCSAY _nSumme PICTURE "99999"
  @ _nZeile,007 DCSAY "KGS"
//
//---þ Bildvorschau
//
  _nMax   := Len( _aBilder )
  
  _nZeile += 2
  
  FOR _nNext := 1 TO _nMax
  
   DO CASE
   	
   	CASE _nNext == 1

       Hier soll das 1. von n Bildern angezeigt werden
    
   	
   ENDCASE
  
  NEXT _nNext
//
  _nZeile += 2
  
  @ _nZeile,003 DCPUSHBUTTON ;
                CAPTION "Ok" ;
                SIZE 14,1 ;
                ACTION { || DC_ReadGuiEvent( DCGUI_EXIT_OK, GetList ) }

  @ _nZeile,020 DCPUSHBUTTON ;
                CAPTION "Drucken" ;
                SIZE 14,1 ;
                ACTION { || _DrkWiegeNote( aApp, _aNoten ) }

  DCGETOPTIONS ;
   NORESIZE;
   NOMAXBUTTON ;
   NOMINBUTTON ;
   NOTASKBAR ;
   NOESCAPEKEY ;
   COLOR M->aSubDlgColor ;
   SAYWIDTH 0 ;
   HILITEGETS GRA_CLR_BLUE

  DCREAD GUI FIT ENTEREXIT MODAL SETAPPWINDOW ;
   OPTIONS GetOptions ;
   TITLE "Anzeige Wiege-Note" 
//
  RETURN( .T. )
In _aNoten[ _nNext,11 ] steht der Name der JPG-Datei. Für Anregungen und Lösungsansätze wäre ich dankbar.
Denke daran, es gibt ein Leben nach dem Source-Code. Entspanne und geniesse es, der FATAL-Error kommt früh genug :-))

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 10562
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: JPG Dateien aus einem Verzeichnis anzeigen

Beitrag von AUGE_OHR » Mi, 11. Jan 2017 3:59

das ist eine Frage an Express++ User wo du am schnellsten bei Roger im Forum selbst eine Antwort bekommst
http://bb.donnay-software.com/donnay/index.php

ich kann dir das nur in "pure" Xbase++ erklären wie ich es machen würde
wsoftie hat geschrieben:In _aNoten[ _nNext,11 ] steht der Name der JPG-Datei.
du kannst dir die Erklärung für "11" sparen wenn du eine "lesbare" Konstante definierst

Code: Alles auswählen

#define JPG_NAME	11
   _aNoten[ _nNext,JPG_NAME ]
zunächst musst die Bitmap (BMP,JPG,PNG,GIF) laden in ein XbpBitmap() Object.

Code: Alles auswählen

   oBMP:= XbpBitmap():new():create( oPS ) 
   oBMP:Load(_aNoten[ _nNext,JPG_NAME ])
das "oPS" lasse ich erst mal aussen vor.
! Note : für jedes Bitmap ein "neues" XbpBitmap() anfordern !

nun brauchst du aber einen Parent für ein Bitmap zur Anzeige z.b. ein XbpStatic()
ich würde, in der FOR / NEXT Schleife), für jedes Bild eine Static anlegen und das Bild als o:Caption

die Grösse der Static erhälst du aus der Bitmap

Code: Alles auswählen

   aSize[1] := oBMP:xSize
   aSize[2] := oBMP:ySize
was du in deinen "Zeilenvorschub" berücksichtigen kannst.

so nun zum Thema "oPS".
wenn du es als o:Caption auf eine (einzelne) Static setzt benötigst du kein weiten "oPS"

nun steht in der Überschrift "Vorschau" ... soll das später gedruckt werden ?
wenn ja brauchst du später ein "oPS" für den Drucker was du aber auch für die Vorschau nutzen kannst.

angenommen ist setzte alle deine "SAY" auf eine XbpStatic(), die dann ein "Scrollbaren" Dialog erzeugt wenn > o:DrawingArea:CurrentSize()

wenn ich die Static mit einem XbpPresspace(), durch

Code: Alles auswählen

   oPS := XbpPresSpace():new():create( oStat:winDevice() )
verknüpfe habe ich alles was "gemalt" wird im "oPS"

wenn ich es nun drucken will benötige ich nur ein

Code: Alles auswählen

   oPS:configure( oDC, oDC:paperSize(), GRA_PU_LOMETRIC )
um mit dem selben Source zu drucken.

wie man das mit Express++ macht kann ich dir leider nicht sagen aber bestimmt hat Roger ein "Preview" Demo für Express++

p.s. ich würde manuell alle erzeugten Bitmaps o:Destroy() nach Gebrauch. :!:
der "CG" von Xbase++ sollte das zwar "aufräumen" aber die Frage ist "wann" und in einer Druck Schleife ... :roll:
gruss by OHR
Jimmy

Antworten