Bitmaps als Maskenhintergrund
Moderator: Moderatoren
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Bitmaps als Maskenhintergrund
Hallo,
ich verwende als Hintergrund für die Erfassung von Formularen die entsprechenden Formulare als Bitmap.
Diese sind fest in's Programm eingebunden. Die Bitmaps haben zwischen 1 und 4.5 MB
Nun "bläht" das die Größe der Exe ja ganz schön auf.
Ist es sinnvoller die Bitmaps beim öffnen der Masken von Festplatte zu laden?
Gibt's andere Alternativen?
Gruß Stefan
ich verwende als Hintergrund für die Erfassung von Formularen die entsprechenden Formulare als Bitmap.
Diese sind fest in's Programm eingebunden. Die Bitmaps haben zwischen 1 und 4.5 MB
Nun "bläht" das die Größe der Exe ja ganz schön auf.
Ist es sinnvoller die Bitmaps beim öffnen der Masken von Festplatte zu laden?
Gibt's andere Alternativen?
Gruß Stefan
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Bitmaps als Maskenhintergrund
eine Resource.DLL
siehe \SOURCE\samples\basics\Resource\
gruss by OHR
Jimmy
Jimmy
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Bitmaps als Maskenhintergrund
Stefan,
das Problem kommt mir sehr bekannt vor. Hatte ich auch schon mit zu kämpfen.
Der Vorteil davon, die Bitmaps einzubinden, ist ja, das die nicht frei verfügbar auf der Festplatte rumliegen. Kann also keiner versehentlich oder absichtlich löschen. Der Nachteil ist natürlich, das die in der exe Platz weg nehmen.
Aber Du kannst Bitmaps ja auch als eigenständige Dateien von der Festplatte laden. Ich weiß jetzt nicht, wie Du die Grafiken holst und anzeigst. Aber XbpBitmap() als Beispiel bietet über :loadFile() die Möglichkeit, eine externe Datei einzulesen. Die Du dann ja ebenfalls als Hintergrund anzeigen kannst. Wie das in Deiner Situation aussieht müsste man extra betrachten.
Jan
das Problem kommt mir sehr bekannt vor. Hatte ich auch schon mit zu kämpfen.
Der Vorteil davon, die Bitmaps einzubinden, ist ja, das die nicht frei verfügbar auf der Festplatte rumliegen. Kann also keiner versehentlich oder absichtlich löschen. Der Nachteil ist natürlich, das die in der exe Platz weg nehmen.
Aber Du kannst Bitmaps ja auch als eigenständige Dateien von der Festplatte laden. Ich weiß jetzt nicht, wie Du die Grafiken holst und anzeigst. Aber XbpBitmap() als Beispiel bietet über :loadFile() die Möglichkeit, eine externe Datei einzulesen. Die Du dann ja ebenfalls als Hintergrund anzeigen kannst. Wie das in Deiner Situation aussieht müsste man extra betrachten.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Bitmaps als Maskenhintergrund
Gibt Es für die DLL-variante ein verständliches Beispiel?
ergibt die Meldung:
methode ist für dieses Objekt unbekannt
Operation load
Gruß Stefan
Code: Alles auswählen
oDlg := XbpDialog():new( Appdesktop(), , aPos, aSize, , .F.)
oDlg:taskList := .T.
oDlg:title := "mein Fenster"
oDlg:create()
oDlg:load( ["meineDLL.DLL"], 5006 )
SetAppFocus( oDlg )
methode ist für dieses Objekt unbekannt
Operation load
Gruß Stefan
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Bitmaps als Maskenhintergrund
Stefan,
XbpDialog() kennt kein :load. Das muß scheitern.
Wie stellst Du denn jetzt das Hintergrundbild dar? Wenn Du da ein wenig Code postest, können wir das eventuell anpassen.
Jan
XbpDialog() kennt kein :load. Das muß scheitern.
Wie stellst Du denn jetzt das Hintergrundbild dar? Wenn Du da ein wenig Code postest, können wir das eventuell anpassen.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Bitmaps als Maskenhintergrund
Code: Alles auswählen
oDlg := XbpDialog():new( Appdesktop(), , aPos, aSize, , .F.)
oDlg:taskList := .T.
oDlg:title := "mein Fenster"
oDlg:drawingArea:bitmap := 100
oDlg:icon := ICON_STAT32
oDlg:create()
SetAppFocus( oDlg )
Gruß Stefan
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: Bitmaps als Maskenhintergrund
Hallo Stefan !
Geht da nicht ein anders Format mit zb. weniger Farben?
Müssen die Bitmaps denn überhaupt 1 bis 4,5 MB groß sein?Ist es sinnvoller die Bitmaps beim öffnen der Masken von Festplatte zu laden?
Gibt's andere Alternativen?
Geht da nicht ein anders Format mit zb. weniger Farben?
--
Hans-Peter
Hans-Peter
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Bitmaps als Maskenhintergrund
Leider nein.
Zu 90% sind es ärztliche Formulare wie AU, Rezepte, Überweisungen etc.
Die Anwender arbeiten mit dem "richtigen" Formular lieber als mit einem abstrakt dargestellten...
Gruß Stefan
Zu 90% sind es ärztliche Formulare wie AU, Rezepte, Überweisungen etc.
Die Anwender arbeiten mit dem "richtigen" Formular lieber als mit einem abstrakt dargestellten...
Gruß Stefan
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: Bitmaps als Maskenhintergrund
Hallo Stefan !
Lass mir doch mal dein 4,5 MB Bitmap zukommen, da kann man an der Auflösung bestimmt was drehen ohne dass der Anwender davon etwas merkt.
Klar, aber muss zb. ein Schwarz/Weiß-Formular 32bit-Farben haben oder so.Die Anwender arbeiten mit dem "richtigen" Formular lieber als mit einem abstrakt dargestellten...
Lass mir doch mal dein 4,5 MB Bitmap zukommen, da kann man an der Auflösung bestimmt was drehen ohne dass der Anwender davon etwas merkt.
--
Hans-Peter
Hans-Peter
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Bitmaps als Maskenhintergrund
@HaPe:
manchmal hat man Riesenbretter vor den Augen. Gerade die großen Bilddateien waren schwarz-weiß.
Farbtiefe geändert. Statt 4,6MB nun noch 1.5MB
Trotzdem bleibt das Problem bestehen. Es sind ca. 95 Formulare zwischen A6 (ca 700KB) und A4 (ca. 1.5MB)
Offen ablegen und bei Bedarf laden möchte ich nicht, da das Problem DAU real existiert....
Gruß Stefan
manchmal hat man Riesenbretter vor den Augen. Gerade die großen Bilddateien waren schwarz-weiß.
Farbtiefe geändert. Statt 4,6MB nun noch 1.5MB
Trotzdem bleibt das Problem bestehen. Es sind ca. 95 Formulare zwischen A6 (ca 700KB) und A4 (ca. 1.5MB)
Offen ablegen und bei Bedarf laden möchte ich nicht, da das Problem DAU real existiert....
Gruß Stefan
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: Bitmaps als Maskenhintergrund
Hallo Stefan !
... und bei Bedarf laden möchte ich nicht, da das Problem DAU real existiert....
... die von einem Service-Programm immer geöffnet ist damit die auch keiner weglöschen kannPack sie doch in eine Tabelle.
--
Hans-Peter
Hans-Peter
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Bitmaps als Maskenhintergrund
wenn du die Bilder in eine seperate DLL packst ist der Aufruf mit der Resource ID der selbe.
wenn du über XbpBitmap():Load() gehst muss statt NIL der Name der DLL angegeben werden.
---
ein Bitmap auf der o:DrawingArea hat IMHO re-paint Probleme.
probiere mal aus was passiert wenn du auf eine andere App gehst die über deiner App läuft und dann wieder zurück.
ich nehme immer erst eine XbpStatic und da den o:Paint Slot was auch bei einem "resize" funktioniert
gruss by OHR
Jimmy
Jimmy
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Bitmaps als Maskenhintergrund
Wenn ich das so mache kommt kein Bild....
Muss ich die DLL vorher mit DLLOAD() laden?
Gruß Stefan
Code: Alles auswählen
oDlg := XbpDialog():new( Appdesktop(), , aPos, aSize, , .F.)
oDlg:taskList := .T.
oDlg:title := "Mein Programm"
oDlg:drawingArea:bitmap := ("MEINEDLL.DLL", 5006 )
oDlg:create()
SetAppFocus( oDlg )
Gruß Stefan
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2934
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Bitmaps als Maskenhintergrund
Da fehlt was:
müsste sein:
Code: Alles auswählen
oDlg:drawingArea:bitmap := ("MEINEDLL.DLL", 5006 )
Code: Alles auswählen
oDlg:drawingArea:bitmap := XbpBitmap:load("MEINEDLL.DLL", 5006 )
Viele Grüße
Wolfgang
Wolfgang
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Bitmaps als Maskenhintergrund
Hallo Wolfgang,
nein, funktioniert leider nicht.
unbekannte Variable XbpBitmap
verwende ich XbpBitmap() dann kommt ein Fehler:
Zugriff auf Instanz Methode nicht erlaubt
Operation:load
gruß Stefan
nein, funktioniert leider nicht.
unbekannte Variable XbpBitmap
verwende ich XbpBitmap() dann kommt ein Fehler:
Zugriff auf Instanz Methode nicht erlaubt
Operation:load
gruß Stefan
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Bitmaps als Maskenhintergrund
Stefan,
klar. XbpBitmap ist ja auch keine Variable, sondern eine Klasse. Schau mal in der Hilfe unter XbpBitmap() nach.
Jan
klar. XbpBitmap ist ja auch keine Variable, sondern eine Klasse. Schau mal in der Hilfe unter XbpBitmap() nach.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Bitmaps als Maskenhintergrund
Jimmy,
was hat das Laden einer Grafik aus einer DLL mit der ARC zu tun? Genau davon möchte Stefan ja gerade weg.
Jan
was hat das Laden einer Grafik aus einer DLL mit der ARC zu tun? Genau davon möchte Stefan ja gerade weg.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Bitmaps als Maskenhintergrund
habe mit oDlg:drawingArea:Bitmap mal weiter getestet
in den Demos lege ich das Object vorher an
diese beiden Syntax Version funktionieren NICHT
bei diese beiden Syntax Version funktionieren es
man MUSS die Syntax in 2 Schritten ausführen da
in den Demos lege ich das Object vorher an
Code: Alles auswählen
LOCAL oBmp := XbpBitmap():New():Create()
Code: Alles auswählen
* oDlg:drawingArea:Bitmap := oBmp:Load(,1234 )
oDlg:drawingArea:Bitmap := oBmp:Load("Resource.DLL",1234 )
oDlg:create()
Code: Alles auswählen
* oBmp:Load(,1234 )
oBmp:Load("Resource.DLL",1234 )
oDlg:drawingArea:Bitmap := oBmp
oDlg:create()
ein logischen Wert zurück gibto:load( [<cDLLname>], <nID> ) --> lSuccess
gruss by OHR
Jimmy
Jimmy
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Bitmaps als Maskenhintergrund
@Jimmy:
Vielen Dank! Genau das war's
Die Lösung sieht nun so aus:
Für XbpDialog:
Für XbpStatic:
Das Ergebnis:
Exe Grafiken mit ARC eingebunden: 96 MB
EXE Grafiken über DLL 27 MB
Größe DLL-Datei 69 MB
Schönen Sonntag noch....
Gruß Stefan
Vielen Dank! Genau das war's
Die Lösung sieht nun so aus:
Für XbpDialog:
Code: Alles auswählen
oBmp:Load("PRISMA32.DLL", 5006 )
oDlg := XbpDialog():new( Appdesktop(), , aPos, aSize, , .F.)
oDlg:taskList := .T.
oDlg:title := "PRISMA32 Statistik"
oDlg:drawingArea:Bitmap := oBmp
oDlg:icon := ICON_STAT32
oDlg:create()
SetAppFocus( oDlg )
Code: Alles auswählen
oFormular := XbpStatic():new( odlg, , {0,0}, {613,470} )
oFormular:caption:= NIL
oFormular:DLLNAME:="PRISMA32.DLL"
oFormular:clipSiblings := .T.
oFormular:type := XBPSTATIC_TYPE_BITMAP
oFormular:create()
oFormular:SetCaption( FMUSTER55 )
Exe Grafiken mit ARC eingebunden: 96 MB
EXE Grafiken über DLL 27 MB
Größe DLL-Datei 69 MB
Schönen Sonntag noch....
Gruß Stefan
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Bitmaps als Maskenhintergrund
was istmini990 hat geschrieben: ↑So, 08. Jul 2018 10:39 Für XbpStatic:Code: Alles auswählen
oFormular := XbpStatic():new( odlg, , {0,0}, {613,470} ) oFormular:caption:= NIL oFormular:DLLNAME:="PRISMA32.DLL" oFormular:clipSiblings := .T. oFormular:type := XBPSTATIC_TYPE_BITMAP oFormular:create() oFormular:SetCaption( FMUSTER55 )
Code: Alles auswählen
oFormular:DLLNAME:=
ich würde es mit einem Object, wie oben, machen und es als o:Caption setzen.
gruss by OHR
Jimmy
Jimmy
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2121
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 72 Mal
Re: Bitmaps als Maskenhintergrund
XbpIWindow:dllName
Name of the DLL file containing the background bitmap
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>