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

JPG Dateien aus einem Verzeichnis anzeigen

Beitragvon wsoftie » Mi, 11. Jan 2017 1: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 :-))
wsoftie
Rookie
Rookie
 
Beiträge: 11
Registriert: Sa, 13. Mai 2006 23:24
Wohnort: Hamburg

Re: JPG Dateien aus einem Verzeichnis anzeigen

Beitragvon AUGE_OHR » Mi, 11. Jan 2017 4: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
Benutzeravatar
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10276
Registriert: Do, 16. Mär 2006 8:55
Wohnort: Hamburg


Zurück zu Programmierung allgemein

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste