oDlg -> Kinddialog mit seltsamen Verhalten [erledigt]

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

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

oDlg -> Kinddialog mit seltsamen Verhalten [erledigt]

Beitrag von Wolfgang_B »

Hallo,
ich versuche das Problem mal zu erklären. Ich öffne ein Dialogfenster und verwende dieses Fenster als Parent für ein weiteres Dialogfenster. In diesem Fenster habe ich XbpSLEs, die ich mit Daten :setData() lade. Wenn in diesen Felder schon Text steht, kann ich den Cursor nicht mehr hinter den Text positionieren. Mit Doppelklick wird ein Teil des Textes markiert. Das funktioniert. auch Dateneingabe am Anfang vor dem vorhandenen Test geht.

Wenn ich für das Child-Fenster als Parent -> SetAppWindow():drawingArea nehme, funktioniert alles.

Hat da jemand eine Erklärung?

Code: Alles auswählen

FUNCTON SHOW_RECHNUNGEN()

oDlgL := XbpDialog():new( SetAppWindow():drawingArea , , , {960,550} , , .T. )
oDlgL:taskList := .T.
oDlgL:close := {|| oDlgL:destroy()  }
oDlgL:title := "vorhandene Rechnungen KdNr.: "+kdnr
oDlgL:icon  := ICON_APPLICATION
oDlgL:create()
drawingArea := oDlgL:drawingArea

oXbp := XbpPushButton():new(drawingArea, , {160,5}, {135,20}, { { XBP_PP_BGCLR, XBPSYSCLR_BUTTONMIDDLE }, { XBP_PP_FGCLR, -58 } } )
oXbp:caption := "Rechnung bearbeiten"
oXbp:tabStop := .T.
oXbp:create()
oXbp:activate :=  {|| EDIT_RECHNUNG( wert, oDlgL) 

RETURN( NIL)

////////////////////

FUNCTION EDIT_RECHNUNG( wert, oDlgL) 

//oDlg := XbpDialog():new( SetAppWindow():drawingArea , , {30,30}, {800,400} , , .F. )			// <- geht
oDlg := XbpDialog():new( oDlgL , , {30,30}, {800,400} , , .F. )						// <- geht nicht
oDlg:taskList := .T.
oDlg:close := {|| oDlgL:destroy() } 
oDlg:title := ""
oDlg:create()
	
drawingArea := oDlg:drawingArea	

oXbp := XbpSLE():new( oDlg:drawingArea, , {160,y}, {60,20}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
oXbp:bufferLength := 10
oXbp:tabStop := .T.
oXbp:create():setData(wert)

RETURN(NIL)
Zuletzt geändert von Wolfgang_B am Sa, 16. Mai 2020 10:42, insgesamt 2-mal geändert.
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: oDlg -> Kinddialog mit seltsamen Verhalten

Beitrag von Marcus Herz »

Du musst immer eine drawingarea als Parent verwenden
FUNCTION EDIT_RECHNUNG( wert, oDlgL)}

oDlg := XbpDialog():new( oDlgL:drawingarea , , {30,30}, {800,400} , , .F. ) // <- geht so
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: oDlg -> Kinddialog mit seltsamen Verhalten

Beitrag von Wolfgang_B »

Hallo Marcus,

damit ändert sich aber leider nicht das beschriebene Verhalten bei den SLE's
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: oDlg -> Kinddialog mit seltsamen Verhalten

Beitrag von Marcus Herz »

Hallo Wolfgang

Das muss so funktionieren. Bist du sicher, dass richtig komplliert wurde?
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: oDlg -> Kinddialog mit seltsamen Verhalten

Beitrag von Wolfgang_B »

tuts aber nicht. Ist richtig kompiliert. Auch ein Versuch mit Testfunktionen ohne besonderen Inhalt bringt das gleiche Ergebnis. Wie gesagt, es geht nur um die Eingaben der SLE's im Childfenster.

Die Buffer sind richtig dimensioniert. Wenn nichts im Eingabefeld steht, kann man ganz normal Daten eingeben. Ansonsten wie beschrieben.
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: oDlg -> Kinddialog mit seltsamen Verhalten

Beitrag von Marcus Herz »

- :setdata() erwartet einen String
- wert ist ja hoffentlich auch ein String mit Länge 10
- y in deiner create Anweisung ist wohl eine public ?
Ansonst muss ich passen.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: oDlg -> Kinddialog mit seltsamen Verhalten

Beitrag von Rolf Ramacher »

Hallo Wolfgang

ich mache das so funkt. tadellos. erstelle die fenster mit

hierfür habe ich mir eine eigene Function gebastelt.

oDlg := XbpDialog():new( AppDesktop(), , aPos, aDim, , .F.)

in die function übergebe ich die parent fenster als oParent. dieser wird :disable und die neue child maske wieder mit oDlg:

wird die function beendet
wird oDlg:destroy()
und oParent:enable()

wieder freigeschaltet.

probier es mal
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: oDlg -> Kinddialog mit seltsamen Verhalten

Beitrag von Manfred »

ganz kurz, zur Erklärung. Man kann den Cursor ans Ende des Textes stellen, aber nur mit der Ende Taste, nicht mit der Maus.
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!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: oDlg -> Kinddialog mit seltsamen Verhalten

Beitrag von brandelh »

Das hört sich für mich danach an, dass Blanks am Ende des strings stehen, ich würde beim Datenfüllen immer Rtrim() verwenden.
Gruß
Hubert
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: oDlg -> Kinddialog mit seltsamen Verhalten

Beitrag von Wolfgang_B »

Hallo Hubert,

Die Werte kommen aus einem Array und werden alle mit ALLTRIM(wert) in das Array geladen. Leerräume hinter dem Text müßte man auch markieren und löschen können. Geht aber nicht. Man kann den Cursor nicht hinter dem Text positionieren.
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
mini990
1000 working lines a day
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: oDlg -> Kinddialog mit seltsamen Verhalten

Beitrag von mini990 »

Das Problem hatte ich auch schon.
Daher übergebe ich die Werte für das SLE immer mit rtrim/alltrim.
Egal wo es herkommt.

Gruß Stefan
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: oDlg -> Kinddialog mit seltsamen Verhalten

Beitrag von Werner_Bayern »

Servus Wolfgang,

wie Marcus geschrieben hat, verwende die drawingArea als Parent, dann funktioniert es:

Code: Alles auswählen

#include "Common.ch"
#include "xbp.ch"
#include "appevent.ch"

PROCEDURE AppSys
local oDlgL

SET CHARSET TO ANSI

oDlgL := XbpDialog():new( , , , {960,550} , , .T. )
oDlgL:taskList := .T.
oDlgL:close := {|| oDlgL:destroy()  }
oDlgL:title := "Wolfgang GUI-Test"
oDlgL:create()

centercontrol(oDlgL)

setAppWindow(oDlgL)

RETURN


PROCEDURE Main
local oDlg, oDlgL := setAppWindow(), nEvent, wert := "dies ist mein Text"
local mp1, mp2, oXbp

oDlg := XbpDialog():new( oDlgL:drawingarea , , {30,30}, {800,400} , , .t. )  
oDlg:taskList := .T.
oDlg:close := {|| oDlgL:destroy() }
oDlg:title := ""
oDlg:create()


oXbp := XbpSLE():new( oDlg:drawingArea, , {160,150}, {300,20}, { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
oXbp:bufferLength := 10
oXbp:tabStop := .T.
oXbp:create():setData(wert)

DO WHILE nEvent <> xbeP_Close
   nEvent := AppEvent( @mp1, @mp2, @oXbp )
   oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO

RETURN
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: oDlg -> Kinddialog mit seltsamen Verhalten

Beitrag von Wolfgang_B »

Problem mit Hilfe von Werner gelöst! :D

Lag an zu vielen Eventschleifen .. :banghead:
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: oDlg -> Kinddialog mit seltsamen Verhalten [erledigt]

Beitrag von Manfred »

Events sind derzeit eh nur eingeschränkt oder gar nicht erlaubt
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!!
Antworten