Überschreiben von übereinanderliegenden Fenstern
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Überschreiben von übereinanderliegenden Fenstern
Hi,
ich meine es wäre hier schon mal angesprochen worden, ich finde es aber nicht.
Ich habe ein Dialogfenster gebaut, in dem ich über GraXXX etwas anzeige. Danach blende ich eine Abfrage mit einem Dialog drüber. Wenn ich die Abfrage nun mit der Maus über den Bildschrim bewege, dann wird alles darunterliegende wegradiert. Wo muß ich nochmal nachlesen, wie man das verhindern kann?
ich meine es wäre hier schon mal angesprochen worden, ich finde es aber nicht.
Ich habe ein Dialogfenster gebaut, in dem ich über GraXXX etwas anzeige. Danach blende ich eine Abfrage mit einem Dialog drüber. Wenn ich die Abfrage nun mit der Maus über den Bildschrim bewege, dann wird alles darunterliegende wegradiert. Wo muß ich nochmal nachlesen, wie man das verhindern kann?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16516
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
Du musst das GraXXX in der bei dem ::XbpDialog:drawingarea:paint-Event aufgerufenen Methode benutzen! Dann wird es auch bei jedem Überdecken/Wiederaufdecken neu gezeichnet...
Viele Grüße,
Martin
Du musst das GraXXX in der bei dem ::XbpDialog:drawingarea:paint-Event aufgerufenen Methode benutzen! Dann wird es auch bei jedem Überdecken/Wiederaufdecken neu gezeichnet...
Code: Alles auswählen
...
::XbpDialog:drawingArea:paint := { | a, b, c | a := c:lockPS(), ;
::Satzanzeige( a ), ;
c:unlockPS( a ) }
...
method _Richtermas:Satzanzeige( a )
...
GraStringAt( a, .....
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
ich verstehe kein Wort....
ich verstehe kein Wort....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16516
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Nicht
Poste mal Deinen Code des Dialogfensters!
Viele Grüße,
Martin
Poste mal Deinen Code des Dialogfensters!
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
Hier der Ausschnitt. (Sind meine 2.Gehversuche unter GUI)
Muß eine Anzeige am Bildschirm und der Druck davon eigentlich so kompliziert sein, oder mache ich es nur umständlich? Habe ich mir aus den Beispielen zusammengeklaubt, aber nicht wirklich verstanden. Das mit den Fonts klappt auch nicht. Am Bildschirm zwar, aber beim Druck braucht man eine Lupe.
und hier das teil, das die Nachricht auf den Bildschirm bringt.
Fällt mir aber gerade auf, das es eine Confirmbox ist....
Hier der Ausschnitt. (Sind meine 2.Gehversuche unter GUI)
Muß eine Anzeige am Bildschirm und der Druck davon eigentlich so kompliziert sein, oder mache ich es nur umständlich? Habe ich mir aus den Beispielen zusammengeklaubt, aber nicht wirklich verstanden. Das mit den Fonts klappt auch nicht. Am Bildschirm zwar, aber beim Druck braucht man eine Lupe.
Code: Alles auswählen
LOCAL aSize
LOCAL aViewPort
LOCAL cArt
LOCAL lNeuerSatz // wenn ein neuer Kassenberichtssatz angefügt werden soll
LOCAL lSatzGefunden := .F.
LOCAL nI, nY
LOCAL oDevice
LOCAL oDialog
LOCAL oFontBs := XbpFont():new():create("10.Arial.bold")
LOCAL oFontPr := XbpFont():new():create("12.Arial.bold")
LOCAL oPs
MEMVAR oKbericht
MEMVAR oMessage
MEMVAR oPrinter
MEMVAR oUmsatz
aSize := oPrinter:paperSize()
aSize := { aSize[5] - aSize[3], aSize[6] - aSize[4] }
oDialog := XbpDialog():new()
oDialog:titleBar := .F.
oDialog:create(SetAppWindow(),,{0,0},{450,700})
CenterControl(oDialog)
oPs := XbpPresSpace():new()
oDevice := oDialog:drawingArea:winDevice()
oPs:create(oDevice, aSize)
GraSetFont(oPs, oFontBS)
GraBox(oPs, {0,0}, {440,690})
FOR nI := 660 TO 30 STEP -30
GraLine(oPs,{0,nI}, {440,nI})
NEXT
GraLine(oPs,{70,0},{70,690}) // Linie für Buchungskonto links
GraLine(oPs,{250,0},{250,690}) // Linie für Erklärung links
GraLine(oPs,{320,0},{320,690}) // Linie für Einnahmen links und Ausgaben rechts
(oKBericht:nArea)->(DbGoTop()) // jetzt geht es wieder von vorne los
nY := 670
DO WHILE ! (oKBericht:narea)->(Eof())
nY -= 30
GraStringAt(oPs,{10,nY},(oKbericht:nArea)->buchungkto)
GraStringAt(oPs,{75,nY},(oKbericht:nArea)->bemerkung)
(oKBericht:narea)->(DbSkip())
ENDDO
IF oMessage:anzeigen("Soll der Kassenbericht gedruckt werden?",.T.,"J")
aViewPort := oPS:setViewPort()
oPS:configure(oPrinter)
oPrinter:startDoc()
GraSetFont(oPs, oFontPR)
GraBox(oPs, {100,50}, aSize)
GraLine(oPs,{300,50},{300,aSize[2]}) // Linie für Buchungskonto links
GraLine(oPs,{1500,50},{1500,aSize[2]}) // Linie für Erklärung links
GraLine(oPs,{1800,50},{1800,aSize[2]}) // Linie für Einnahmen links und Ausgaben rechts
(oKBericht:nArea)->(DbGoTop()) // jetzt geht es wieder von vorne los
FOR nI := 50 TO aSize[2] STEP 100
GraLine(oPs,{100,50+nI}, {aSize[1],50+nI})
NEXT
nY := aSize[2]
DO WHILE ! (oKBericht:narea)->(Eof())
nY -= 100
GraStringAt(oPs,{100,nY},(oKbericht:nArea)->buchungkto)
GraStringAt(oPs,{310,nY},(oKbericht:nArea)->bemerkung)
(oKBericht:narea)->(DbSkip())
ENDDO
oPrinter:endDoc()
oPS:configure(oDevice)
oPS:setViewPort( aViewPort )
ENDIF
oDialog:destroy()
Fällt mir aber gerade auf, das es eine Confirmbox ist....
Code: Alles auswählen
METHOD UserMessages:anzeigen(cText,lQuestion,cCorrect,cIcon)
LOCAL nChoice
DEFAULT lQuestion TO .F.
DEFAULT cIcon TO " "
::lSuccess := .F. // damit im Zweifelsfalle keine JA Aussage angenommen wird
IF PCOUNT() = 1
lQuestion := .F.
ENDIF
IF ! lQuestion // Standardmäßig soll nur bestätigt werden
::nButtons := XBPMB_OK
::nStyle := XBPMB_INFORMATION
ELSE
::nButtons := XBPMB_YESNO
::nStyle := XBPMB_QUESTION
IF cCorrect = "N"
::nStartBtn := XBPMB_DEFBUTTON2
ELSE
::nStartBtn := XBPMB_DEFBUTTON1
ENDIF
ENDIF
IF UPPER(cIcon) == "C"
::nStyle := XBPMB_CRITICAL
ELSEIF UPPER(cIcon) == "W"
::nStyle := XBPMB_WARNING
ENDIF
nChoice := CONFIRMBOX(,cText,::cTitle, ::nButtons, ::nStyle, ::nStartBtn)
IF nChoice = XBPMB_RET_OK .OR. nChoice = XBPMB_RET_YES
::lSuccess := .T.
ENDIF
RETURN ::lSuccess
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16516
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
ah - Du benutzt keine Klasse! Dann weiß ich nicht, ob das so auch geht - einfach mal probieren:
Viele Grüße,
Martin
ah - Du benutzt keine Klasse! Dann weiß ich nicht, ob das so auch geht - einfach mal probieren:
Code: Alles auswählen
[color=red]hinter oDialog:titleBar := .F.:[/color]
oDialog:drawingArea:paint := { | a, b, c | a := c:lockPS(), ;
Bildanzeige( a, oDevice, aSize ), ;
c:unlockPS( a ) }
[color=red]Die Zeilen von oPs := XbpPresSpace.... bis einschließlich Deiner DO WHILE ! (oKBericht....)-Schleife wird dann in die Prozedur Bildanzeige ausgelagert[/color]
procedure Bildanzeige( a, oDevice, aSize )
local nI, nY
// oPs := XbpPresSpace():new()
oDevice := oDialog:drawingArea:winDevice()
a:create(oDevice, aSize)
GraSetFont(a, oFontBS)
GraBox(a, {0,0}, {440,690})
FOR nI := 660 TO 30 STEP -30
GraLine(a,{0,nI}, {440,nI})
NEXT
GraLine(a,{70,0},{70,690}) // Linie für Buchungskonto links
GraLine(a,{250,0},{250,690}) // Linie für Erklärung links
GraLine(a,{320,0},{320,690}) // Linie für Einnahmen links und Ausgaben rechts
(oKBericht:nArea)->(DbGoTop()) // jetzt geht es wieder von vorne los
nY := 670
DO WHILE ! (oKBericht:narea)->(Eof())
nY -= 30
GraStringAt(a,{10,nY},(oKbericht:nArea)->buchungkto)
GraStringAt(a,{75,nY},(oKbericht:nArea)->bemerkung)
(oKBericht:narea)->(DbSkip())
ENDDO
return
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
geht nicht. Es wird sofort in die Abfrage gesprungen, ob gedruckt werden soll. Eine Anzeige am Bildschirm erfolgt nicht.
geht nicht. Es wird sofort in die Abfrage gesprungen, ob gedruckt werden soll. Eine Anzeige am Bildschirm erfolgt nicht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16516
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hmmm,
dann füge doch parallel dazu noch mal folgende Zeilen hinter der oDialog:drawingArea:paint-Zeile ein:
Viele Grüße,
Martin
dann füge doch parallel dazu noch mal folgende Zeilen hinter der oDialog:drawingArea:paint-Zeile ein:
Code: Alles auswählen
oPs := XbpPresSpace():new()
Bildanzeige( oPS, oDevice, aSize )
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
-
- Rekursionen-Architekt
- Beiträge: 193
- Registriert: Fr, 09. Jun 2006 7:52
- Wohnort: Nähe Sömmerda
Hallo Manfred
Herzliche Grüße
Gerd
Nachdem ich für verschiedene Formulare hunderte von Zeilen Code geschrieben hatte und dann Änderungen vornehmen mußte, habe ich die XBase-Drucker-Flinte ins Korn geworfen. Ich konnte meinen Chef überzeugen, List & Label zu kaufen (leider die billigste Version, wie ich jetzt feststellen mußte ohne Charts). Auf jeden Fall ist der Formulardruck jetzt fast ein Kinderspiel.Manfred hat geschrieben: Muß eine Anzeige am Bildschirm und der Druck davon eigentlich so kompliziert sein, oder...
Herzliche Grüße
Gerd
- Manfred
- Foren-Administrator
- Beiträge: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Gerd,
ja, das lese ich hier immer wieder.
Ich habe mir die Videos angesehen und mal kurz reingerochen. Ich habe im Moment einfach nicht den Kopp dafür. Und außerdem konnte ich trotz der Vorführung zur Zeit nichts damit anfangen. Also muß ich das auf später verschieben.
ja, das lese ich hier immer wieder.
Ich habe mir die Videos angesehen und mal kurz reingerochen. Ich habe im Moment einfach nicht den Kopp dafür. Und außerdem konnte ich trotz der Vorführung zur Zeit nichts damit anfangen. Also muß ich das auf später verschieben.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
-
- Rekursionen-Architekt
- Beiträge: 193
- Registriert: Fr, 09. Jun 2006 7:52
- Wohnort: Nähe Sömmerda
Halo Manfred,
ich habe natürlich auch nicht alle Formulare mit einem Mal umgestellt.
Zuerst natürlich die neuen und die mit größeren Änderugen. Nächste Woche aktiviere ich das vorletzte geänderte Formular. Das letzte wird wohl erst nächstes Jahr dran kommen. Das Ganze hat sich dann über vier Jahre hingezogen.
Man sollte, wenn L&L installiert ist, wirklich erstmal ein ganz einfaches Formular, eventuell sogar eines ohne Liste erstellen. Dann hat man erst einmal die Grundfunktionalität drauf. Die benötigten L&L-Funktionen sind an zehn Fingern abzählbar.
Ich habe L&L so eingebunden, daß beim Programmstart ereits die Initialisierung erfolgt. Zu jedem Formular gibt es bei mir zwei Funktionen:
1. Design: kann nur vom Entwickler des Formulars aufgerufen werden
2. Drucken, ggf. mit Vorschau
Das Schreiben des Programmcodes für das Design dauert maximal 20min, die Druckfunktion etwas länger, wenn man bereits ein ähnliches Fomular hat und die Funktionen kopieren kann.
Bei Interesse könnte ich mal Grundgerüste für Formulare mit und ohne Liste in die Wissensbasis stellen.
Noch 'nen schönen Abend
Gerd
ich habe natürlich auch nicht alle Formulare mit einem Mal umgestellt.
Zuerst natürlich die neuen und die mit größeren Änderugen. Nächste Woche aktiviere ich das vorletzte geänderte Formular. Das letzte wird wohl erst nächstes Jahr dran kommen. Das Ganze hat sich dann über vier Jahre hingezogen.
Man sollte, wenn L&L installiert ist, wirklich erstmal ein ganz einfaches Formular, eventuell sogar eines ohne Liste erstellen. Dann hat man erst einmal die Grundfunktionalität drauf. Die benötigten L&L-Funktionen sind an zehn Fingern abzählbar.
Ich habe L&L so eingebunden, daß beim Programmstart ereits die Initialisierung erfolgt. Zu jedem Formular gibt es bei mir zwei Funktionen:
1. Design: kann nur vom Entwickler des Formulars aufgerufen werden
2. Drucken, ggf. mit Vorschau
Das Schreiben des Programmcodes für das Design dauert maximal 20min, die Druckfunktion etwas länger, wenn man bereits ein ähnliches Fomular hat und die Funktionen kopieren kann.
Bei Interesse könnte ich mal Grundgerüste für Formulare mit und ohne Liste in die Wissensbasis stellen.
Noch 'nen schönen Abend
Gerd
- 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
hi,
"von der anderen Seite" komme.
Also ich machen zuerst die "Preview" mit dem Source aus dem Beispiel
von Alaska. Wenn nun alles "OK" ist brauche ich nur oPreview:Print()
auf zu rufen und schon hab ich alles auf dem Drucker.
Die Preview Class hat vor allem den Vorteil das man sich nicht um
"repaint" kümmern muss weil "Zoom ++/--" integriert ist und damit
die Routinen zum "automatischen" repaint.
gruss by OHR
Jimmy
deinen Code verstehe ich nicht, aber vielleicht liegt es daran da ichManfred hat geschrieben: Hier der Ausschnitt. (Sind meine 2.Gehversuche unter GUI)
Muß eine Anzeige am Bildschirm und der Druck davon eigentlich so kompliziert sein, oder mache ich es nur umständlich? Habe ich mir aus den Beispielen zusammengeklaubt, aber nicht wirklich verstanden. Das mit den Fonts klappt auch nicht. Am Bildschirm zwar, aber beim Druck braucht man eine Lupe.
"von der anderen Seite" komme.
Also ich machen zuerst die "Preview" mit dem Source aus dem Beispiel
von Alaska. Wenn nun alles "OK" ist brauche ich nur oPreview:Print()
auf zu rufen und schon hab ich alles auf dem Drucker.
Die Preview Class hat vor allem den Vorteil das man sich nicht um
"repaint" kümmern muss weil "Zoom ++/--" integriert ist und damit
die Routinen zum "automatischen" repaint.
gruss by OHR
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Jimmy,
tröste Dich, ich verstehe meinen Code auch nicht immer......
tröste Dich, ich verstehe meinen Code auch nicht immer......
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!