Parent und/oder AppDesktop()
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Parent und/oder AppDesktop()
Hi,
mal eine ganz generelle Frage:
Wenn ich unter purem Xbase++ einen Dialog erstelle, dann habe ich danach das Objekt. Wie ist das denn bei express++? Dort wird doch erst alles nach dem DCREAD GUI erstellt. Was ist wenn ich mehrere Fenster nacheinander übereinander platziere? Ich habe das Problem, dass beim Schließen der Fenster die Reihenfolge nicht mehr stimmt und irgendwie ein Fenster hinter dem anderen verschwindet und dann diese "oben" liegende Fenster nicht zu bearbeiten ist. Wenn man dann nicht genau darauf achtet, dass ja das andere Fenster im Hintergrund ist, dann kommt der User schon mal ins Schwitzen, weil er denkt das PRG wäre abgestürzt, aber in Wirklichkeit ist es nur durch das darunterliegende blockiert.
Sicherlich mal wieder was ganz einfaches, aber wie schon bisher festgestellt, das Einfache macht mir immer die größten Sorgen....
mal eine ganz generelle Frage:
Wenn ich unter purem Xbase++ einen Dialog erstelle, dann habe ich danach das Objekt. Wie ist das denn bei express++? Dort wird doch erst alles nach dem DCREAD GUI erstellt. Was ist wenn ich mehrere Fenster nacheinander übereinander platziere? Ich habe das Problem, dass beim Schließen der Fenster die Reihenfolge nicht mehr stimmt und irgendwie ein Fenster hinter dem anderen verschwindet und dann diese "oben" liegende Fenster nicht zu bearbeiten ist. Wenn man dann nicht genau darauf achtet, dass ja das andere Fenster im Hintergrund ist, dann kommt der User schon mal ins Schwitzen, weil er denkt das PRG wäre abgestürzt, aber in Wirklichkeit ist es nur durch das darunterliegende blockiert.
Sicherlich mal wieder was ganz einfaches, aber wie schon bisher festgestellt, das Einfache macht mir immer die größten Sorgen....
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!!
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Parent und/oder AppDesktop()
Achte mal darauf, in allen MODALEN Dialogen das hier zu machen:
Erstens hast Du dann die Objektvariable, auf die Du zugreifen kannst, und zweitens klappt's dann auch mit Modalität und Z-Order.
Code: Alles auswählen
DCREAD GUI ... PARENT @oDialog EVAL {|o|SetAppWindow(o)} MODAL
Herzlich,
Tom
Tom
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Parent und/oder AppDesktop()
Hi Tom,
bevor ich wieder etwas falsches erzähle:
wenn die Funktion Titel() und der Thread beendet sind, dann lande ich UNTER dem Browser. Und da das ein Kundenterminal ist und daran auf keinen Fall eine Maus soll, ist das störend. Ich habe keine Ahnung, warum es so ist und wie ich es ändern kann.
Ja, es ist ein Textbildschirm, über den GUI geblendet wird. Ich habe express++ gewählt, weil es damit recht einfach geht Arrays zu browsen.
bevor ich wieder etwas falsches erzähle:
Code: Alles auswählen
PROCEDURE main()
LOCAL aVo
LOCAL getlist := {}
LOCAL GetOptions
LOCAL oBrowse := NIL
LOCAL oThread := Thread():new()
LOCAL oVostamm
MEMVAR oBild
MEMVAR oMa
MEMVAR oMessage
MEMVAR oPruefen
MEMVAR oSysPara
oBild := bildschirm():new()
oMessage := nachricht():new()
oPruefen := pruefen():new()
oMa := mitarbeiter():new():initvaria()
oVostamm := fstamm():new():initvaria()
oBild:cPrgArt := "Info-Terminal"
oBild:cVersion += "09/06.03.2009"
oMa:name := "Info"
oSysPara:cProgrammName := "Info-Terminal"
oBild:hauptmenue(.T.,.T.)
oVostamm:db_oeffnen()
SETCANCEL(.F.) // ALT+C abschalten
DO WHILE .T.
aVo := {}
oVostamm:felderleeren()
@ 1, 1 SAY "Darst/Interpr: Titel: "
@ 1,15 GET oVostamm:v_darstell PICTURE "@K !XXXXXXXXXXXXXXXXXXX";
WHEN EMPTY(oVostamm:v_titel);
VALID {|| oThread:start("interpret", aVo, oThread, oVostamm))}
@ 1,42 GET oVostamm:v_titel PICTURE "@K !XXXXXXXXXXXXXXXXXXX";
WHEN EMPTY(oVostamm:v_darstell);
VALID {|| oThread:start("titel", aVo, oThread, oVostamm)}
READ
IF oVostamm:v_titel = "LOGOUT" .OR. oVostamm:v_darstell = "LOGOUT"
EXIT
ENDIF
@ 70, 1 DCBROWSE oBrowse;
AUTOREFRESH 111;
CURSORMODE XBPBRW_CURSOR_ROW;
DATA aVo;
NOSOFTTRACK;
SIZE 1000,600
DCBROWSECOL ELEMENT 1 WIDTH 300 HEADER "Interpret" PARENT oBrowse
DCBROWSECOL ELEMENT 2 WIDTH 300 HEADER "Titel" PARENT oBrowse
DCBROWSECOL ELEMENT 3 WIDTH 200 HEADER "Ort" PARENT oBrowse
DCBROWSECOL ELEMENT 4 WIDTH 50 HEADER "Platz" PARENT oBrowse ALIGN XBPALIGN_RIGHT
DCGETOPTIONS HILITEGETS GRA_CLR_CYAN;
AUTORESIZE;
NOMINBUTTON;
NOMAXBUTTON;
PIXEL;
SAYOPTIONS XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
DCREAD GUI;
FIT;
OPTIONS GetOptions
ENDDO .T.
AppQuit()
RETURN
********************************************************************************
FUNCTION titel(aVo,oThread, oVostamm)
LOCAL aDlgSize := {300,100}
LOCAL cIndexAnfang
LOCAL cIndexEnde
LOCAL oAblauf
LOCAL oDialog
LOCAL oHinweis
LOCAL oVo2 := kassette():new():initvaria()
LOCAL oVostamm2 := fstamm():new():initvaria()
MEMVAR oGenre
MEMVAR oHersteller
MEMVAR oMessage
MEMVAR oSysteme
oMessage := nachricht():new()
oGenre := genre():new():initvaria()
oHersteller := hersteller():new():initvaria()
oSysteme := systeme():new():initvaria()
IF Empty(oVostamm:v_titel)
oThread:quit()
RETURN(.T.)
ENDIF
oGenre:db_oeffnen()
oHersteller:db_oeffnen()
oSysteme:db_oeffnen()
oVostamm2:db_oeffnen("titel")
oDialog := DialogFenster():new(AppDesktop(),SetAppWindow(),,aDlgSize,,,.F.)
oHinweis := feldtexte():new(oDialog,,{5,40},{200,20})
oHinweis:caption := "Daten werden erzeugt, bitte Geduld...."
oAblauf := feldtexte():new(oDialog,,{5,10},{100,20})
oDialog:create()
oHinweis:create()
oAblauf:create()
oVo2:db_oeffnen()
oVostamm2:db_oeffnen("titel")
DO WHILE .T.
IF "*" $ oVostamm:v_titel .OR. "?" $ oVostamm:v_titel // Orwilsseek ist angesagt
oVostamm:v_titel := StrTran(Trim(oVostamm:v_titel)," ","?")
(oVostamm2:nArea)->(OrdWildSeek(Upper(oVostamm:v_titel)))
DO WHILE (oVostamm2:nArea)->(Found())
IF oVo2:satzsuchen(Str((oVostamm2:nArea)->id,8,0),,"idvostamm",,,,.T.,.F.,.F.)
oVostamm2:fuehreDbVerbindungen("titelsuchen")
AAdd(aVo,{;
(oVostamm2:nArea)->v_darstell,;
(oVostamm2:nArea)->v_titel,;
(oGenre:nArea)->bez,;
(oVo2:nArea)->lagernr;
})
oAblauf:setcaption(Transform(Len(aVo),"9999"))
ENDIF
(oVostamm2:nArea)->(OrdWildSeek())
ENDDO
EXIT
ELSE // es wurde definitiv nach einem Namen gesucht
cIndexAnfang := Upper(oVostamm:v_titel) // Anfangsbuchstaben sichern für den ScopeAnfang
cIndexEnde := Trim(cIndexAnfang) // für Scopende
oVostamm2:satzsuchen(oVostamm2:indexOhneArtikel(Upper(oVostamm:v_titel)),.T.,"titel",,,,.T.,,.F.)
(oVostamm2:nArea)->(Dbsetscope(SCOPE_TOP,cIndexAnfang))
(oVostamm2:nArea)->(Dbsetscope(SCOPE_BOTTOM,cIndexEnde))
IF (oVostamm2:nArea)->(Eof())
IF oMessage:anzeigen("Es wurde kein passender Eintrag gefunden. Soll eine ungefähre Suche probiert werden?",.T.,"J")
(oVostamm2:nArea)->(DbClearScope())
oVostamm:v_titel := "*" + Trim(oVostamm:v_titel) + "*"
LOOP
ENDIF
EXIT
ENDIF
DO WHILE ! (oVostamm2:nArea)->(Eof())
IF oVo2:satzsuchen(Str((oVostamm2:nArea)->id,8,0),,"idvostamm",,,,.T.,,.F.)
oVostamm2:fuehreDbVerbindungen("titelsuchen")
AAdd(aVo,{;
(oVostamm2:nArea)->v_darstell,;
(oVostamm2:nArea)->v_titel,;
(oGenre:nArea)->bez,;
(oVo2:nArea)->lagernr;
})
oAblauf:setcaption(Transform(Len(aVo),"9999"))
ENDIF
(oVostamm2:nArea)->(DbSkip())
ENDDO
(oVostamm2:nArea)->(DbClearScope())
ENDIF
EXIT
ENDDO .T.
oGenre:schliesse_datenbank()
oHersteller:schliesse_datenbank()
oSysteme:schliesse_datenbank()
oVostamm2:schliesse_datenbank()
oDialog:destroy()
oMessage:anzeigen("Suchvorgang beendet")
oThread:quit()
RETURN .T.
Ja, es ist ein Textbildschirm, über den GUI geblendet wird. Ich habe express++ gewählt, weil es damit recht einfach geht Arrays zu browsen.
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!!
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Parent und/oder AppDesktop()
Hi,
hat denn keiner einen Tipp parat, was ich machen muß, damit ich gezielt die entsprechenden Fenster aktivieren kann, bzw. nach Schließen des Hinweisfensters wieder im Browser lande?
hat denn keiner einen Tipp parat, was ich machen muß, damit ich gezielt die entsprechenden Fenster aktivieren kann, bzw. nach Schließen des Hinweisfensters wieder im Browser lande?
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!!
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Parent und/oder AppDesktop()
Hi Tom,
hm, ich habe es gerade mal ausprobiert. Wenn ich den Thread nicht starte, dann klappt es zwar auch, aber man sieht keine Zwischenergebnisse im Browser im Hintergrund.
Am schönsten fände ich es natürlich, wenn die Suche im Hintergrund laufen würde, jederzeit mit ESC oder einem entsprechenden Button abbrechbar wäre und der Browser das aktuelle Ergebnis anzeigen würde (refresh).
Aber dazu fehlt mir wohl im Moment der nötige Gehirnschmalz.
hm, ich habe es gerade mal ausprobiert. Wenn ich den Thread nicht starte, dann klappt es zwar auch, aber man sieht keine Zwischenergebnisse im Browser im Hintergrund.
Am schönsten fände ich es natürlich, wenn die Suche im Hintergrund laufen würde, jederzeit mit ESC oder einem entsprechenden Button abbrechbar wäre und der Browser das aktuelle Ergebnis anzeigen würde (refresh).
Aber dazu fehlt mir wohl im Moment der nötige Gehirnschmalz.
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!!
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Parent und/oder AppDesktop()
Es muß doch irgendeine Möglichkeit geben, nach dem Thread:quit() zu sagen: Aktiviere mit den Browser?
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!!
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Parent und/oder AppDesktop()
Manfred,
wenn ich Dich richtig verstanden habe, dann kann ich Dir eine Lösung liefern. Aber erst heute Abend, wenn ich wieder zu Hause bin. Und auch nur Xbase++ pur, kein eXpress++. Das geht über den Umweg Event-Schleife des Threads mit dem Browse. Ich hab mir damals auch einen abgebrochen, um das hinzubekommen. Obwohl es ganz simpel ist (wenn man weiß, wie das geht)
Ich melde mich dann.
Jan
wenn ich Dich richtig verstanden habe, dann kann ich Dir eine Lösung liefern. Aber erst heute Abend, wenn ich wieder zu Hause bin. Und auch nur Xbase++ pur, kein eXpress++. Das geht über den Umweg Event-Schleife des Threads mit dem Browse. Ich hab mir damals auch einen abgebrochen, um das hinzubekommen. Obwohl es ganz simpel ist (wenn man weiß, wie das geht)
Ich melde mich dann.
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.
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2936
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Parent und/oder AppDesktop()
Hallo Manfred,
übergib doch oBrowse mit an die Funktion und mache dann ein SetAppFocus(oBrowse).
übergib doch oBrowse mit an die Funktion und mache dann ein SetAppFocus(oBrowse).
Viele Grüße
Wolfgang
Wolfgang
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Parent und/oder AppDesktop()
Hi Wolfgang,
dass habe ich versucht, aber das klappt nicht. Der oBrowse ist ja noch NIL in dem Moment, weil er erst knapp später erzeugt wird.
dass habe ich versucht, aber das klappt nicht. Der oBrowse ist ja noch NIL in dem Moment, weil er erst knapp später erzeugt wird.
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!!
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Parent und/oder AppDesktop()
Hi,
ich habe jetzt einmal etwas ganz anderes gebaut. Aber auch hier habe ich so meine Verständnisprobleme:
1. wie kann ich die Schleife unterbrechen, wenn gesucht wird.
2. wie bekomme ich das Array aVo wieder leer, bevor die nächste Suche losgeht? Wenn ich in die Funktion Interpret vor Setcaption ein aVo := {} reinbaue, dann wird das Array zwar leer und auch wieder gefüllt, aber der Browser zeigt nichts mehr an. Wenn ich es rausnehme, dann wird immer nur hinzugeschrieben.
ich habe jetzt einmal etwas ganz anderes gebaut. Aber auch hier habe ich so meine Verständnisprobleme:
Code: Alles auswählen
#include "q:\include\inkey.ch"
#include "appevent.ch"
#include "Gra.ch"
#include "dcdialog.ch"
#include "Xbp.ch"
********************************************************************************
PROCEDURE appsys()
RETURN
********************************************************************************
PROCEDURE main()
LOCAL aVo := {}
LOCAL getlist := {}
LOCAL GetOptions
LOCAL oAblauf := NIL
LOCAL oBrowse := NIL
LOCAL oText := NIL
MEMVAR oGenre
MEMVAR oHersteller
MEMVAR oMessage
MEMVAR oSysteme
MEMVAR oVo
MEMVAR oVostamm
PUBLIC bDarst // muß hier erstmal noch stehen
PUBLIC bTitel // muß hier erstmal noch stehen
oGenre := genre():new():initvaria()
oHersteller := hersteller():new():initvaria()
oMessage := nachricht():new()
oSysteme := systeme():new():initvaria()
oVo := kassette():new():initvaria()
oVostamm := fstamm():new():initvaria()
oGenre:db_oeffnen()
oHersteller:db_oeffnen()
oSysteme:db_oeffnen()
oVo:db_oeffnen()
oVostamm:db_oeffnen(,,,,,,.T.)
@ 10, 1 DCSAY "Darsteller/Interpret:";
FONT "12.Arial.Bold";
OBJECT oText;
SIZE 150,20
@ 0,150 DCGET oVostamm:v_darstell;
OBJECT oVostamm:oV_darstell;
RELATIVE oText;
SIZE 300,20;
TABSTOP;
VALID {|| interpret(@aVo,oBrowse,oAblauf)}
@ 0,310 DCSAY "Titel:";
FONT "12.Arial.Bold";
OBJECT oText;
RELATIVE oVostamm:oV_darstell;
SIZE 50,20
@ 0,50 DCGET oVostamm:v_titel;
OBJECT oVostamm:oV_titel;
RELATIVE oText;
SIZE 300,20;
TABSTOP
@ 0,310 DCSAY "";
COLOR GRA_CLR_RED;
FONT "12.Arial.Bold";
OBJECT oAblauf;
RELATIVE oVostamm:oV_Titel;
SIZE 100,20
@ 32, 1 DCBROWSE oBrowse;
CURSORMODE XBPBRW_CURSOR_ROW;
DATA aVo;
NOSOFTTRACK;
SIZE 1000,700
DCBROWSECOL ELEMENT 1 WIDTH 300 HEADER "Interpret" PARENT oBrowse
DCBROWSECOL ELEMENT 2 WIDTH 300 HEADER "Titel" PARENT oBrowse
DCBROWSECOL ELEMENT 3 WIDTH 200 HEADER "Ort" PARENT oBrowse
DCBROWSECOL ELEMENT 4 WIDTH 50 HEADER "Platz" PARENT oBrowse ALIGN XBPALIGN_RIGHT
DCGETOPTIONS;
BORDER XBPDLG_SIZEBORDER;
HILITEGETS GRA_CLR_CYAN;
NOESCAPEKEY;
NOMINBUTTON;
NOMAXBUTTON;
PIXEL;
TITLE "Kundenterminal 09.03.2009";
WINDOWWIDTH 1024;
WINDOWHEIGHT 768
DCREAD GUI;
OPTIONS GetOptions
RETURN
********************************************************************************
FUNCTION interpret(aVo,oBrowse,oAblauf)
LOCAL cIndexAnfang
LOCAL cIndexEnde
MEMVAR oGenre
MEMVAR oMessage
MEMVAR oVo
MEMVAR oVostamm
IF oVostamm:v_darstell = "LOGOUT"
AppQuit()
ENDIF
IF ! Empty(oVostamm:v_titel) .OR. Empty(oVostamm:v_darstell)
RETURN(.F.)
ENDIF
oAblauf:setcaption("Suche erfolgt")
oVostamm:indexfocus("darst")
oVostamm:oV_Darstell:disable()
oVostamm:oV_Titel:disable()
DO WHILE .T.
IF "*" $ oVostamm:v_darstell .OR. "?" $ oVostamm:v_darstell // Ordwilsseek ist angesagt
oVostamm:v_darstell := StrTran(Trim(oVostamm:v_darstell)," ","?")
(oVostamm:nArea)->(OrdWildSeek(Upper(oVostamm:v_darstell)))
DO WHILE (oVostamm:nArea)->(Found())
IF oVo:satzsuchen(Str((oVostamm:nArea)->id,8,0),,"idvostamm",,,,.T.,.F.,.F.)
oVostamm:fuehreDbVerbindungen("titelsuchen")
AAdd(aVo,{;
(oVostamm:nArea)->v_darstell,;
(oVostamm:nArea)->v_titel,;
(oGenre:nArea)->bez,;
(oVo:nArea)->lagernr;
})
oBrowse:refreshAll()
ENDIF
(oVostamm:nArea)->(OrdWildSeek())
ENDDO
EXIT
ELSE // es wurde definitiv nach einem Namen gesucht
cIndexAnfang := Upper(oVostamm:v_darstell) // Anfangsbuchstaben sichern für den ScopeAnfang
cIndexEnde := Trim(cIndexAnfang) // für Scopende
oVostamm:satzsuchen(oVostamm:indexOhneArtikel(Upper(oVostamm:v_darstell)),.T.,"darst",,,,.T.,.F.,.F.,"titelsuchen")
(oVostamm:nArea)->(Dbsetscope(SCOPE_TOP,cIndexAnfang))
(oVostamm:nArea)->(Dbsetscope(SCOPE_BOTTOM,cIndexEnde))
IF (oVostamm:nArea)->(Eof())
IF oMessage:anzeigen("Es wurde kein passender Eintrag gefunden. Soll eine ungefähre Suche probiert werden?",.T.,"J")
(oVostamm:nArea)->(DbClearScope())
oVostamm:v_darstell := "*" + Trim(oVostamm:v_darstell) + "*"
LOOP
ENDIF
EXIT
ENDIF
DO WHILE ! (oVostamm:nArea)->(Eof())
IF oVo:satzsuchen(Str((oVostamm:nArea)->id,8,0),,"idvostamm",,,,.T.,.F.,.F.)
oVostamm:fuehreDbVerbindungen("titelsuchen")
AAdd(aVo,{;
(oVostamm:nArea)->v_darstell,;
(oVostamm:nArea)->v_titel,;
(oGenre:nArea)->bez,;
(oVo:nArea)->lagernr;
})
oBrowse:refreshAll()
ENDIF
(oVostamm:nArea)->(DbSkip())
ENDDO
(oVostamm:nArea)->(DbClearScope())
ENDIF
EXIT
ENDDO .T.
oAblauf:setcaption("")
oMessage:anzeigen("Suchvorgang beendet")
oVostamm:oV_Darstell:enable()
oVostamm:oV_Titel:enable()
RETURN(.T.)
2. wie bekomme ich das Array aVo wieder leer, bevor die nächste Suche losgeht? Wenn ich in die Funktion Interpret vor Setcaption ein aVo := {} reinbaue, dann wird das Array zwar leer und auch wieder gefüllt, aber der Browser zeigt nichts mehr an. Wenn ich es rausnehme, dann wird immer nur hinzugeschrieben.
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!!
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Parent und/oder AppDesktop()
Ok,
das Problem mit dem Array scheint erledigt. Dafür gibt es dc_getbrowarray().
das Problem mit dem Array scheint erledigt. Dafür gibt es dc_getbrowarray().
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!!
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Parent und/oder AppDesktop()
HiHo,
jetzt habe ich immer noch das Problem, dass ich die While Schleife nicht unterbrochen bekomme, wenn ich die Daten in das Array schreibe. (per ESC oder so)
jetzt habe ich immer noch das Problem, dass ich die While Schleife nicht unterbrochen bekomme, wenn ich die Daten in das Array schreibe. (per ESC oder so)
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!!
- Bertram Hansen
- Foren-Moderator
- Beiträge: 1015
- Registriert: Di, 27. Sep 2005 8:55
- Wohnort: 51379 Leverkusen
- Hat sich bedankt: 28 Mal
- Danksagung erhalten: 20 Mal
- Kontaktdaten:
Re: Parent und/oder AppDesktop()
Hallo Manfred,
ich bin gerade in der Doku von Roger über die folgenden Funktion gestolpert.
dc_completeevents()
Siehe Dir mal das Beispiel in der Doku an. Eventuell ist es das was Du benötigst.
Evenuell hilft Dir auch der Quellcode der Funktion DC_WorkArea2Excel() von Roger unter ...\EXP19\Source\Dclipx\_dcfunct.prg
Dort hat er einen Abbruchbutton in einem Laufzeitbalken eingebaut.
ich bin gerade in der Doku von Roger über die folgenden Funktion gestolpert.
dc_completeevents()
Siehe Dir mal das Beispiel in der Doku an. Eventuell ist es das was Du benötigst.
Evenuell hilft Dir auch der Quellcode der Funktion DC_WorkArea2Excel() von Roger unter ...\EXP19\Source\Dclipx\_dcfunct.prg
Dort hat er einen Abbruchbutton in einem Laufzeitbalken eingebaut.
Gruß Bertram
http://www.tobax.de
Mitglied der XUG Cologne
Mitglied der XUG Osnabrück
Beisitzer des Deutschsprachige Xbase-Entwickler e.V.
Solange Kakaobohnen an Bäumen wachsen ist Schokolade Obst!
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Parent und/oder AppDesktop()
Hi Bertram,
den 1. Tipp werde ich gleich nachsehen, den 2. Tipp habe ich schon probiert, aber es klappte nicht so wie ich es dachte. Aber ich werde mir nochmals ansehen, was er da gebaut hat.
den 1. Tipp werde ich gleich nachsehen, den 2. Tipp habe ich schon probiert, aber es klappte nicht so wie ich es dachte. Aber ich werde mir nochmals ansehen, was er da gebaut hat.
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!!