TBrowse vs XbpBrowse [ERLEDIGT]
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
TBrowse vs XbpBrowse [ERLEDIGT]
Wie schon erwähnt muß ich eine GUI Anwendung auf VIO umbauen. Die GUI Anwendung wurde mit express++ erstellt. Weiterhin war dort ein DCBROWSE also ein XbpBrowse eingebaut, das immer aktuell angezeigt hat, was gerade in der DBF ist. Das müßte ich jetzt auf VIO umbauen und denke mir, dass ich das mit einem TBrowse Objekt bauen kann/sollte. Aber irgendwie will die Aktualisierung und direkte Anzeige nicht klappen. Wobei sich mir immer mehr die Frage die stellt, ob man das im VIO Modus überhaupt so realisieren kann, wie im GUI Modus? IM GUI Modus kann ja zwischen Eingabefeldern und browse hin- und hergeklickt werden und dann im Browse gescrollt.
Zumindest bekomme ich es jetzt im Moment nicht hin und bevor ich jetzt weiter herumwerkel und das evtl. noch auf dem falschen Pfad......
Zumindest bekomme ich es jetzt im Moment nicht hin und bevor ich jetzt weiter herumwerkel und das evtl. noch auf dem falschen Pfad......
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!!
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: TBrowse vs XbpBrowse
ich habe eine Funktion Tabelle, die vieles macht, vielleicht kann die dir helfen.
Code: Alles auswählen
*------------------------------------------------------- tabelle ------
procedure tabelle ( o,l,u,r,dat_alias,afelder,afeld_name,fest,auswahl,;
bildretten,hilfe,SatzNr, FarbString )
// o , l , u , r Positionen des Fensters
// dat_alias Alias in dem die Datei ge”ffnet ist z.B. "DRUCK"
// afelder Array mit den Feldnamen, bzw. Codeblocks !
// z.B. recno() -> {|| recno() }
// normale Funktionen mssen als CODEBLOCK definiert sein !
// afeld_name Array mit den šberschriftennamen fr die Feldnamen
// fest Ab welcher Spalte links eingefroren wird
// auswahl wenn .t., kann Anzeige mit Enter beendet werden.
// bildretten wenn .t., dann Bildschirm sichern und zurcksetzen
// hilfe Text, welcher an Hilfeprozedur bergeben werden soll
// SatzNr Falls anzuzeigende Datei mit Seek bewegt wurde, und
// somit nicht auf dem 1. Satz steht, muá fr Laufbalken-
// die logische Satznummer (Dateiposition) angegeben
// werden. Ungef„hrer Wert reicht aus. NIL -> 1
// Farbstring Farbdefinition fr Anzeige
// Anzeige einer Datenbank mit Laufbalken
local otab,altselect,altcolor,altscreen,altcursor,x,t,datpos,zeipos
local zeimax,zeiprosatz,log_recn
if farbstring=NIL
farbstring=if(farbe,"w+/g,w+/n,n/w","w/n,u,n/w")
endif
if auswahl=NIL // Standard ist mit Enter kein Ende
auswahl=.f.
endif
if bildretten=NIL // Standard ist Bild sichern und
bildretten=.t. // zurcksetzen
endif
if hilfe=NIL
hilfe=""
endif
if fest=NIL
fest=0
endif
if bildretten
altscreen =savescreen( o, l, u, r )
endif
altselect =select()
altcolor =setcolor()
altcursor =setcursor(0)
if SatzNr=NIL
log_recn = 1 // wegen Indexdatei wird
// Satznummer selbst hochge-
// z„hlt, und nicht mit
// recno() ermittelt.
else
log_recn = max( SatzNr , 1 ) // mindestens 1
endif
zeimax= u - o + 1 // Anzahl der Anzeigepositionen
// des Rollbalkens
select (dat_alias)
otab:=tbrowseDB( o, l, u, r-1 ) // Tabellenobject
otab:headSep := "ÄÅÄ" // Kopf- und Spalten
otab:colSep := " ³ " // trennzeichen setzen
otab:colorspec := farbstring
* Die SKIP, GO TOP und GO BOTTOM mssen wegen Laufbalken bei Index
* ge„ndert werden !
* ACHTUNG log_recn muá per Referenz bergeben werden ( @ ) !!!!
* SKIP Funktion setzt logische Satznummer.
* Wichtig fr Index !
otab:skipBlock := { |x| tab_skipper(x, @log_recn ) }
otab:GoTopBlock := { || tab_gotop( @log_recn ) }
otab:GoBottomBlock := { || tab_gobottom( @log_recn ) }
// TB Spalten erzeugen, je nach Parameter
do case
case valtype(afelder)="A" .and. valtype(afeld_name)="A"
* Felderliste und Feldnamensliste wurden bergeben, verwenden !
for x = 1 to len(afelder)
if valtype( afelder[x] ) = "B"
otab:addColumn( TBColumnNew( afeld_name[x] , afelder[x] ))
else
otab:addColumn( TBColumnNew( afeld_name[x] , ;
fieldwblock( afelder[x], select() ) ))
endif
next
case valtype(afelder)="A"
* NUR Felderliste wurde bergeben, richtige Feldnamen anzeigen
for x = 1 to len(afelder)
if valtype( afelder[x] ) = "B"
otab:addColumn( TBColumnNew( afelder[x] , afelder[x] ))
else
otab:addColumn( TBColumnNew( afelder[x] , ;
fieldwblock( afelder[x], select() ) ))
endif
next
otherwise // sonst alle Felder mit richtigem Namen
for x = 1 TO fcount()
otab:addColumn( TBColumnNew( fieldname(x) , ;
fieldwblock( fieldname(x), select() ) ))
next
endcase
otab:freeze:= fest // Feste Spalten
do while .t.
do while ! otab:stable
otab:stabilize() // Alle Daten korrekt anzeigen
enddo
// Rollbalken anzeigen
datpos = log_recn / recc() // Datenpositon des aktuellen
// Datensatzes im Verh„ltnis
// zur Anzahl der S„tze
zeiprosatz=int(zeimax / recc()+.99)
zeipos = int(zeimax-1)*datpos // Position des Zeigers
for x=o to u // Anzeigebereich zurcksetzen
devpos( x,r )
do case
case x=o
devout( "A",if(farbe,"w/b","w"))
case x=u
devout( "E",if(farbe,"w/b","w"))
otherwise
devout( "º",if(farbe,"w/b","w"))
end case
next
if zeiprosatz < 1
devpos( o + zeipos ,r ) // Position anzeigen
devout( "*" ,if(farbe,"w+/n","w+"))
else
for x=o+zeipos-zeiprosatz+1 to o+zeipos
devpos( x ,r ) // Position anzeigen
devout( "*" ,if(farbe,"w+/n","w+"))
next
endif
otab:colorRect( {otab:rowpos,1,otab:rowpos,otab:colcount} ,;
{2,3} ) // Cursorzeile hervorheben
t=inkey(0)
otab:colorRect( {otab:rowpos,1,otab:rowpos,otab:colcount} ,;
{1,2} ) // Cursorzeile auf Standard !
do case // Auf Taste reagieren !
case t=K_UP // Pfeil auf 1 Satz aufw„rts
otab:up()
case t=K_DOWN // Pfeil ab 1 Satz abw„rts
otab:down()
case t=K_RIGHT // Pfeil rechts 1 Feld rechts
otab:panright() // als Bildschirm rollen
case t=K_LEFT // Pfeil links 1 Feld links
otab:panleft() // als Bildschirm rollen
case t=K_HOME // POS1 1. Feld der Zeile
otab:panhome()
case t=K_END // ENDE letztes Feld in Zeile
otab:panend()
case t=K_PGUP // Bild auf -> Seite auf
otab:pageup()
case t=K_PGDN // Bild ab -> Seite ab
otab:pagedown()
case t=K_CTRL_PGUP // STRG+Bild auf -> 1. Zeile
otab:gotop()
case t=K_CTRL_PGDN // STRG+Bild ab -> letzte Z.
otab:gobottom()
case t=K_CTRL_HOME
otab:gotop()
otab:panhome()
case t=K_CTRL_END
otab:gobottom()
otab:panhome()
// Funktionstasten // abarbeiten
case t=K_F1 .and. f[1]=.t. // Hilfetext
help( "ANZEIGEN",0,HILFE )
case t=K_CTRL_F1 .and. f[1]=.t. // Hilfetext „ndern
helpedit("ANZEIGEN",0,HILFE )
case t=K_F3 .or. t=K_ESC // Ende der Anzeige
exit
case t=K_F12 .and. f[12]=.t. // Ende des Programmes
do prog_ende
case t=K_ENTER .and. auswahl=.t. // In Auswahllisten ist
exit // Enter eine Endetaste.
endcase
enddo
if bildretten
restscreen( o, l, u, r ,altscreen )
endif
select (altselect)
setcolor(altcolor)
setcursor(altcursor)
return
*---------------------------------------------------------- TAB_SKIPPER --
static function tab_skipper ( anzahl,log_recn )
* die log_recn (logische Satznummer) wird von der SKIP Funktion jeweils
* angepaát. Dies ist die einzig sichere Methode fr Dateien mit und ohne
* Index. Fr Filter jedoch noch nicht ganz ausreichend.
* ACHTUNG log_recn muá per Referenz bergeben werden ( @ ) !!!!
local x
x := 0
if anzahl == 0 .OR. recc()== 0
go recno() // Puffer neu lesen, rest ok !
elseif anzahl > 0 .and. recno() != recc() + 1
// vorw„rts
do while x < anzahl
skip 1
if ( eof() )
skip -1
log_recn=recc()
exit
endif
log_recn=MIN(log_recn+1,recc()) //erfolgreich, logische Satznummer
// erh”hen. H”chstwert = recc()
x++ // Z„hler der durchzufhrenden SKIP
// erh”hen
enddo
elseif anzahl < 0
// rckw„rts
do while x > anzahl
skip -1
if ( bof() )
log_recn=1 // Dateianfang = 1. log. Satz
exit
endif
log_recn=MAX(log_recn-1,1) // erfolgreich, logische Satznummer
// senken, kleinster Wert = 1
x-- // Z„hler der durchzufhrenden SKIP
// senken
enddo
endif
RETURN x
*---------------------------------------------------------- TAB_GOTOP --
static function tab_GOTOP ( log_recn )
* die log_recn (logische Satznummer) wird von der Funktion jeweils
* angepaát. Dies ist die einzig sichere Methode fr Dateien mit und ohne
* Index. Fr Filter jedoch noch nicht ganz ausreichend.
* ACHTUNG log_recn muá per Referenz bergeben werden ( @ ) !!!!
go top
log_recn=1
return( NIL )
*---------------------------------------------------------- TAB_GOBOTTOM --
static function tab_GOBOTTOM ( log_recn )
* die log_recn (logische Satznummer) wird von der Funktion jeweils
* angepaát. Dies ist die einzig sichere Methode fr Dateien mit und ohne
* Index. Fr Filter jedoch noch nicht ganz ausreichend.
* ACHTUNG log_recn muá per Referenz bergeben werden ( @ ) !!!!
go bottom
log_recn=recc()
return( NIL )
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: TBrowse vs XbpBrowse
Die Funktion blättert und wählt auch aus, wenn du NUR ANZEIGEN willst, musst du halt bei jeder Satzbewegung oder im Zeitinterval
Refresh-Aufrufe starten. Dann würde ich @ say verwenden.
Refresh-Aufrufe starten. Dann würde ich @ say verwenden.
Gruß
Hubert
Hubert
- 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
Re: TBrowse vs XbpBrowse
Danke, der kurze Schlag auf den Hinterkopf hat mir erstmal weiter geholfen. Aber leider kann man nicht hin und herspringen. Einmal den Browse verlassen muß man den neu aufrufen.
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: 21192
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: TBrowse vs XbpBrowse
Ich habe gerade einen Tipp erhalten. Ich muß das Pferd von hinten aufzäumen. Ich aktiviere derzeit zuerst die GEt Felder und das ist falsch. Ich muß den Browse aktivieren und dann daraus mittels Taten in die Eingabefelder wechseln. So wie ich das früher auch gemacht habe. Manmanman, alles wieder verlernt.
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!!
- AUGE_OHR
- Marvin
- Beiträge: 12907
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: TBrowse vs XbpBrowse
so rum ist ungewöhnlich ...Manfred hat geschrieben:Wie schon erwähnt muß ich eine GUI Anwendung auf VIO umbauen.
Frage : mit oder ohne SetMouse() ?
dann siehe dir das Browse() in c:\ALASKA\XPPW32\SOURCE\SYS\BrowSys.prg an.Manfred hat geschrieben:Das müßte ich jetzt auf VIO umbauen und denke mir, dass ich das mit einem TBrowse Objekt bauen kann/sollte.
gruss by OHR
Jimmy
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
Re: TBrowse vs XbpBrowse
ja, ich habe schon gesehen, das Dbedit() auch reines TBrowse() ist. habe aber wie schon weiter oben die Sache umgedreht und es klappt jetzt so, wie ich es brauche.
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!!