Seite 1 von 1

JPG Dateien aus einem Verzeichnis anzeigen

Verfasst: Mi, 11. Jan 2017 0:27
von wsoftie
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.

Re: JPG Dateien aus einem Verzeichnis anzeigen

Verfasst: Mi, 11. Jan 2017 3:59
von AUGE_OHR
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: