GroupBox

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

GroupBox

Beitrag von Jan »

In einem Formular habe ich einige XBPStatic und XBPSle eingebaut, die ich der Optik wegen zusammenfassen möchte mit XBPSTATIC_TYPE_GROUPBOX. Das habe ich in der Reihenfolge Groupbox, Static, Sle eingebaut.

Problem: Groupbox und Sle werden korrekt angezeigt, aber die Static werden von der Groupbox verdeckt.

Normalerweise sollten ja die SLE und Static als Parent ja die Groupbox haben. Aber wenn ich das mache, werden die Static garnicht angezeigt. Wenn ich als Parent den zugrundeliegenden Dialog nehme dann werden die Static angezeigt, aber wie gesagt von der Groupbox verdeckt.

Weiß jemand, wo das Problem liegen kann?

Jan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Jan,

wenn du bei allen die drawingarea als Parent nimmst, mußt du nur darauf achten, dass beim Create folgende Reihenfolge eingehalten wird:

Groupbox:create()
FixedText:create()
XbpSLE:create()

Wenn du die Groupbox als Parent bei fixedText und xbpSle benutzt, müßte alles automatisch stimmen, gleiche Reihenfolge kann aber nicht schaden. :wink: [/b]
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: GroupBox

Beitrag von AUGE_OHR »

hi,
Jan hat geschrieben: Normalerweise sollten ja die SLE und Static als Parent ja die Groupbox haben. Aber wenn ich das mache, werden die Static garnicht angezeigt.
oXbp1:clipSiblings := .T. ???

Code: Alles auswählen

drawingArea := oDlg:drawingArea

oXbp1 := XbpStatic():new( drawingArea, , {12,12}, {540,264} )
oXbp1:clipSiblings := .T.
oXbp1:type := XBPSTATIC_TYPE_GROUPBOX
oXbp1:create()

oXbp := XbpStatic():new( oXbp1, , {12,216}, {60,24} )
oXbp:caption := "~Artist:"
oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
oXbp:create()

oArtist  := XbpSLE():new( oXbp1, , {84,216}, {132,24} ..... )  oArtist:bufferLength := 30
oArtist:tabStop := .T.
oArtist:dataLink := VAR2BLOCK(@mARTIST  )
oArtist:create():setData()
AAdd ( aEditControls, oArtist )
gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Moin,

Jimmy, es war der Punkt clipsiblings := .T. Damit funktioniert das perfekt. Ich hatte mir das schon mal in der Hilfe angesehen, aber genau andersherum verstanden, das also .F. der richtige Wert sei.

Aber eine Frage bleibt offen: Wenn ich die Static und Sle mit dem Parent Groupbox einsetze werden die nicht angezeigt! Nur wenn ich auf den drawingArea gehe. Muß ich das verstehen?

Jan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Jan,

wenn du die auf den Parent Groupbox setzt, sind es zu diesem Children ... hast du bei clipchildren was umgestellt ?
Wenn die Create Einstellung stimmt sollten die clip... Befehle in Standardeinstellung eigentlich funktionieren.

Achtung, der XbpFD verändert die create-Reihenfolge (TAB-Folge) dauernd. :?
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jan,
poste doch mal bitte ein wenig code von der groupbox und einigen darin enthaltenen Statics und Sles!
Bedenke bitte:
Erst das create von der groupbox und dann die creates der darin enthaltenen Statics und Sles!

Viele Grüße,
Martin
:grommit:
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.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hubert: Was kann ich denn umstellen? Abgesehen davon arbeite ich niemals mit dem FD.

Martin: Die Reihenfolge stimmt schon. Das ist nicht der Punkt.

Code: Alles auswählen

oGroupBox := XbpStatic():new(oTab1, , {10, nDetailsstart - 20}, {1000,300})
oGroupBox:clipsiblings := .T.
oGroupBox:caption := "Details zu der aktuellen Person"
oGroupBox:Type := XBPSTATIC_TYPE_GROUPBOX
oGroupBox:create()

// Feldüberschriften
//            Überschrift    Start                      Größe    Options
aStatics := {{"RIN:"       , { 15,nDetailsStart      }, {70,22}, XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT}, ;
             {"Geschlecht:", {160,nDetailsStart      }, {70,22}, XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT}, ;
}

FOR i := 1 TO LEN(aStatics)
    oUeberschriften := XbpStatic():new(oTab1, , aStatics[i][2], aStatics[i][3])
    oUeberschriften:caption := aStatics[i][1]
    oUeberschriften:options := aStatics[i][4]
    oUeberschriften:create()
NEXT

//Feldinhalte
//        Start                        Größe     Farbe                               Inhalt
aSLE := {{{ 85,nDetailsStart       }, { 50,22}, {{XBP_PP_FGCLR, GRA_CLR_DARKBLUE}}, {|x| IIf(x==NIL, STR(genealog->rin), genealog->rin := x)}                              }, ;
         {{230,nDetailsStart       }, { 70,22}, {{XBP_PP_FGCLR, GRA_CLR_DARKBLUE}}, {|x| IIf(x==NIL, IIF(Genealog->geschlecht = "W", "weiblich", ;
                                                                                    IIF(genealog->geschlecht = "M", "männlich", ;
                                                                                                 "unbekannt")), x := genealog->geschlecht)}               }, ;
} }

FOR i := 1 TO LEN(aSLE)
    oSLE := MySLE():New(oTab1,, aSLE[i][1], aSLE[i][2], aSLE[i][3])
    oSLE:DataLink := aSLE[i][4]
    oSLE:Create()
    DbRegisterClient(oSLE)
NEXT

Ich hoffe, ich habe den Code richtig zusammengekürzt, da sind wesentlich mehr Felder drin. Aber 2 müssten wohl als Beispiel genügen. oTab1 ist übrigens der 1. von 5 XbpTabPages.

Jan
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
Jan hat geschrieben: Jimmy, es war der Punkt clipsiblings := .T. Damit funktioniert das perfekt. Ich hatte mir das schon mal in der Hilfe angesehen, aber genau andersherum verstanden, das also .F. der richtige Wert sei.
... das Problem kenne ich auch ...
Aber eine Frage bleibt offen: Wenn ich die Static und Sle mit dem Parent Groupbox einsetze werden die nicht angezeigt! Nur wenn ich auf den drawingArea gehe. Muß ich das verstehen?
hm ... nochmal von Anfang an ... ich nehme mal mein Beispiel von oben

Code: Alles auswählen

oDlg := XbpDialog ....
drawingArea := oDlg:drawingArea 
also erst einmal ein XbpDialog. davon nehmen wir die drawingArea
als Parent

Code: Alles auswählen

oXbp1 := XbpStatic():new( drawingArea, , {12,12}, {540,264} ) 
oXbp1:clipSiblings := .T. 
oXbp1:type := XBPSTATIC_TYPE_GROUPBOX 
oXbp1:create() 
auf der drawingArea erzeuge ich nun eine XbpStatic-Groupbox

Code: Alles auswählen

oXbp := XbpStatic():new( oXbp1, , {12,216}, {60,24} ) 
oXbp:caption := "~Artist:" 
oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT 
oXbp:create() 
die Groupbox oXbp1 als Parent erzeuge ich nun meinen "Text" als
XbpStatic

Code: Alles auswählen

oArtist  := XbpSLE():new( oXbp1, , {84,216}, {132,24} ..... )  oArtist:bufferLength := 30 
oArtist:tabStop := .T. 
oArtist:dataLink := VAR2BLOCK(@mARTIST  ) 
oArtist:create():setData() 
AAdd ( aEditControls, oArtist ) 
dito. Groupbox oXbp1 als Parent erzeuge ich nun meinen SLE

wenn die Koordinaten stimmen ( relative zur Groupbox* ! ) wird
"nichts übermalt" oder "nicht angezeigt".
(* die Box steht auf {12,12} das SLE auf {84,216}. absolut wäre es
{84+12,216+12} zum XbpDialog)

... oder hab ich was falsch verstanden ?

gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
Jan hat geschrieben:

Code: Alles auswählen

FOR i := 1 TO LEN(aSLE)
    oSLE := MySLE():New(oTab1,, aSLE[i][1], aSLE[i][2], aSLE[i][3])
    oSLE:DataLink := aSLE[i][4]
    oSLE:Create()
    DbRegisterClient(oSLE)
NEXT
ok wenn du es so machen willst fehlt dir das "oSLE:group := XBP_WITHIN_GROUP" in der Schleife.

gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hallo Jimmy,
ok wenn du es so machen willst fehlt dir das "oSLE:group := XBP_WITHIN_GROUP" in der Schleife.
Das hatte ich auch versucht. Aber mir stellt sich die Fage, wozu das überhaupt gut ist.

Und das Problem waren ja auch nicht die SLE, die haben immer funktioniert (allerdings habe ich das wegen des offensichtlichen funktionierens auch nie mit der Groupbox als Parent versucht). Bei den Static wiederum gibt es kein XBP_WITHIN_GROUP nicht.

Und die Frage war ja letztendlich , warum Static nicht angezeigt werden wenn ich als Patent die Groupbox nehme.

Jan
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jan,
in Deinem Code haben sowohl die Statics als auch die SLE die Tabpage als Parent, nicht die GroupBox :!: :!:

Viele Grüße,
Martin
:grommit:
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.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Jou,

wenn es das war, dann könnte ich mir eine Kerbe beißen. Das hatte ich nämlich auch erkannt. Aber ich denk, "halt mal die Klappe, bevor du Unfug erzählst!".
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
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
ob es das war, werden wir noch sehen.
Aber ansonsten: Nur Mut!! Es wird hier einem schon nicht der Kopf abgerissen, wenn was falsches gesagt wird...

Viele Grüße,
Martin
:grommit:
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.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
Jan hat geschrieben: Und die Frage war ja letztendlich , warum Static nicht angezeigt werden wenn ich als Patent die Groupbox nehme.
sorry ich war irgendwie bei den SLE ... also

Code: Alles auswählen

FOR i := 1 TO LEN(aStatics) 
    oUeberschriften := XbpStatic():new(oTab1, , aStatics[i][2], aStatics[i][3]) 
    oUeberschriften:caption := aStatics[i][1] 
    oUeberschriften:options := aStatics[i][4] 
    oUeberschriften:create() 
NEXT 
die XbpStatic geht aber in deinem Beispiel noch auf oTAB1 ... es müsste
oGroupBox sein und mit oGroupBox:clipsiblings := .T. zusammen muss
es funktionieren.

gruss by OHR
Jimmy
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Jimmy,
Jimmy das Ohr hat geschrieben:die XbpStatic geht aber in deinem Beispiel noch auf oTAB1 ... es müsste
oGroupBox sein und mit oGroupBox:clipsiblings := .T. zusammen muss
es funktionieren.
Genau das ist der Punkt: Eben nicht. Ich habe ja auf Deinen Rat hin die clipsiblings := .T. eingebaut. Und es funktioniert auch. Aber nur mit Parent auf oTab1, nicht auf oGroupbox. Und genau das ist es, was mich verwirrt.

Jan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Jan hat geschrieben:Jimmy,
Ich habe ja auf Deinen Rat hin die clipsiblings := .T. eingebaut. Und es funktioniert auch. Aber nur mit Parent auf oTab1, nicht auf oGroupbox.
Hallo Jimmy,

wenn die Groupbox und die Xbp den Parent der Tabpage haben, dann sind es siblings - d.h. Controls mit gleichem Parent. Somit sparen diese sich gegenseitig aus. Wird die Groupbox aber zum Parent, dann ist die Einstellung clipsiblings für die groupbox im Verhältnis zu den xbp völlig bedeutungslos, denn nun sind die Xbp Children ...

ClipSiblings -> Verhalten gegenüber allem mit gleichem Parent.
ClipChildren -> Verhalten gegenüber allen Controls mit diesem Control als Parent
ClipParent -> Verhalten gegenüber dem Parent

Vorsicht beim Ändern von den Standardeinstellungen, wenn die Create Reihenfolge stimmt, sind die Standardeinstellungen des XppFD meist richtig !
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Richtige Reihenfolge bei Create:

Immer das unterste Control (Fenster) zuerst !

1. Fenster
2. Groupboxen oder Static-Flächen
3. Static-Text
4. Rest
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,
Jan hat geschrieben: aStatics := {{"RIN:" , { 15,nDetailsStart }, {70,22}, XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT}, ;
{"Geschlecht:", {160,nDetailsStart }, {70,22}, XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT}, ;
}

FOR i := 1 TO LEN(aStatics)
oUeberschriften := XbpStatic():new(oGroupbox, , aStatics[2], ;
aStatics[3])


ich hab mir mal den code geschnappt und komplett aufgebaut. obwohl
er keinen Compiler Fehler mehr meldet stürzt er in dieser Zeile ab
wo ich oTab1 durch oGroupbox ersetzt habe.
Man sehe sich die aStatics noch mal genau an ... da ist was zuviel !
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ja das letzte "Komma" vor "}" ist zuviel !

nun funktioniert die Tabpage (hab mal 2 gemacht) so wie die soll

hier nochmal das ganze :

Code: Alles auswählen

#include "Gra.ch"
#include "Xbp.ch"
#include "Appevent.ch"
#include "Font.ch"

PROCEDURE APPSYS
RETURN

PROCEDURE Main
LOCAL nEvent, mp1, mp2
LOCAL oDlg, oXbp, drawingArea, aEditControls := {}
LOCAL oXbp1, oXbp2, oXbp3, oXbp4
LOCAL oGroupBox , aStatics, oUeberschriften, i, oSLE, aSLE,cSLE
LOCAL nDetailsStart := 10

   IF ! FILE("WM9DBF.DBF")
      CRE_DBF()
   ENDIF
   USE WM9DBF.DBF NEW EXCLUSIVE

   oDlg := XbpDialog():new( AppDesktop(),,{94,47}, {600,400})
   oDlg:taskList := .T.
   oDlg:title := "TabTest"
   oDlg:create()

   drawingArea := oDlg:drawingArea
   drawingArea:setFontCompoundName( "8.Arial" )

 oXbp1 := XbpTabPage():new( drawingArea,,{12,24},{564,336},;
               { { XBP_PP_BGCLR, XBPSYSCLR_BUTTONMIDDLE } } )

   oXbp1:caption := "Main"
   oXbp1:minimized := .F.
   oXbp1:tabStop := .T.
   oXbp1:create()
   oXbp1:TabActivate := {|| oXbp3:minimize(), oXbp1:maximize() }

   oGroupBox := XbpStatic():new( oXbp1, , {24,24}, {324,276} )
   oGroupBox:caption := "Details zu der aktuellen Person"
   oGroupBox:clipsiblings := .T.
   oGroupBox:Type := XBPSTATIC_TYPE_GROUPBOX
   oGroupBox:create()

// Feldüberschriften
//            Überschrift    Start                      Größe    Options
aStatics := {{"RIN:"       , { 15,nDetailsStart}, {70,22} ,;
            XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT} ,;
              {"Geschlecht:", {160,nDetailsStart}, {70,22} ,;
            XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT}  }

FOR i := 1 TO LEN(aStatics)
    oUeberschriften := XbpStatic():new( oGroupBox ,;
                                                       ,;
                                        aStatics[i][2] ,;
                                        aStatics[i][3] )
    oUeberschriften:caption := aStatics[i][1]
    oUeberschriften:options := aStatics[i][4]
    oUeberschriften:create()
NEXT

//Feldinhalte
//        Start                        Größe     Farbe                               Inhalt
aSLE := { {{ 85,nDetailsStart }, { 50,22},;
 {{XBP_PP_FGCLR, GRA_CLR_DARKBLUE}},;
   {|x|IIf(x==NIL,Trim( WM9DBF->TITEL ),WM9DBF->TITEL := x)} },;
               {{230,nDetailsStart }, { 70,22},;
 {{XBP_PP_FGCLR, GRA_CLR_DARKBLUE}},;
   {|x|IIf(x==NIL,Trim( WM9DBF->ARTIST),WM9DBF->ARTIST:= x)} }}

FOR i := 1 TO LEN(aSLE)
    oSLE := XbpSLE():New( oGroupBox,, aSLE[i][1], aSLE[i][2], aSLE[i][3])
    oSLE:DataLink := aSLE[i][4]
    oSLE:Create():setData()
*    DbRegisterClient(oSLE)
    AAdd ( aEditControls, oSLE )
NEXT

*****************************
*
* 2st Tabpage
*
*****************************

 oXbp3 := XbpTabPage():new( drawingArea,,{12,24},{564,336},;
    { { XBP_PP_BGCLR, XBPSYSCLR_BUTTONMIDDLE } } )

   oXbp3:caption := "Detail"
   oXbp3:minimized := .F.
   oXbp3:preOffset := 20
   oXbp3:postOffset := 60
   oXbp3:tabStop := .T.
   oXbp3:create()
   oXbp3:TabActivate := {|| oXbp1:minimize(), oXbp3:maximize() }

   oXbp4 := XbpStatic():new( oXbp3, , {48,48}, {444,240} )
   oXbp4:caption := "mehr Info"
   oXbp4:clipSiblings := .T.
   oXbp4:type := XBPSTATIC_TYPE_GROUPBOX
   oXbp4:create()

   oXbp := XbpStatic():new( oXbp4, , {36,192}, {144,24} )
   oXbp:caption := "Duration:"
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()

   oXbp := XbpStatic():new( oXbp4, , {36,156}, {144,24} )
   oXbp:caption := "Filesize:"
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()

   oXbp := XbpStatic():new( oXbp4, , {36,120}, {144,24} )
   oXbp:caption := "Filetype:"
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()

   oXbp := XbpStatic():new( oXbp4, , {36,84}, {144,24} )
   oXbp:caption := "Bitrate:"
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()

   oXbp := XbpStatic():new( oXbp4, , {36,48}, {144,24} )
   oXbp:caption := "Rateting:"
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()

   oXbp := XbpStatic():new( oXbp4, , {36,12}, {144,24} )
   oXbp:caption := "Playcount:"
   oXbp:options := XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_RIGHT
   oXbp:create()

   oXbp := XbpSLE():new( oXbp4, , {216,192}, {180,24},;
               { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
   oXbp:bufferLength := 14
   oXbp:tabStop := .T.
   oXbp:dataLink := {|x| IIf( PCOUNT()==0,;
           Transform( WM9DBF->DURATION, '@N' ),;
                            WM9DBF->DURATION := Val(x) ) }
   oXbp:create():setData()
   AAdd ( aEditControls, oXbp )

   oXbp := XbpSLE():new( oXbp4, , {216,156}, {180,24},;
                { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
   oXbp:bufferLength := 12
   oXbp:tabStop := .T.
   oXbp:dataLink := {|x| IIf( PCOUNT()==0,;
            Transform( WM9DBF->FILESIZE, '@N' ),;
                             WM9DBF->FILESIZE := Val(x) ) }
   oXbp:create():setData()
   AAdd ( aEditControls, oXbp )

   oXbp := XbpSLE():new( oXbp4, , {216,120}, {108,24},;
          { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
   oXbp:bufferLength := 4
   oXbp:tabStop := .T.
   oXbp:dataLink := {|x| IIf( PCOUNT()==0,;
           Trim( WM9DBF->FILETYPE ),;
                    WM9DBF->FILETYPE := x ) }
   oXbp:create():setData()
   AAdd ( aEditControls, oXbp )

   oXbp := XbpSLE():new( oXbp4, , {216,84}, {108,24},;
          { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
   oXbp:bufferLength := 7
   oXbp:tabStop := .T.
   oXbp:dataLink := {|x| IIf( PCOUNT()==0,;
           Transform( WM9DBF->BITRATE, '@N' ),;
                            WM9DBF->BITRATE := Val(x) ) }
   oXbp:create():setData()
   AAdd ( aEditControls, oXbp )

   oXbp := XbpSLE():new( oXbp4, , {216,48}, {108,24},;
               { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
   oXbp:bufferLength := 7
   oXbp:tabStop := .T.
   oXbp:dataLink := {|x| IIf( PCOUNT()==0,;
            Transform( WM9DBF->RATETING, '@N' ),;
                             WM9DBF->RATETING := Val(x) ) }
   oXbp:create():setData()
   AAdd ( aEditControls, oXbp )

   oXbp := XbpSLE():new( oXbp4, , {216,12}, {108,24},;
              { { XBP_PP_BGCLR, XBPSYSCLR_ENTRYFIELD } } )
   oXbp:bufferLength := 7
   oXbp:tabStop := .T.
   oXbp:dataLink := {|x| IIf( PCOUNT()==0,;
           Transform( WM9DBF->PLAYCOUNT, '@N' ),;
                            WM9DBF->PLAYCOUNT := Val(x) ) }
   oXbp:create():setData()
   AAdd ( aEditControls, oXbp )

   oXbp3:minimize()
   oXbp1:maximize()
   oDlg:show()

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

PROCEDURE CRE_DBF
Local aStruct := {                                ;
   { "W9MARK"      ,"C" ,         1,         0 } ,;
   { "W9VIDEO"     ,"C" ,        77,         0 } ,;
   { "W9FULLPATH"  ,"C" ,       240,         0 } ,;
   { "W9DATE"      ,"D" ,         8,         0 } ,;
   { "W9RATE"      ,"N" ,         1,         0 } ,;
   { "W9MEDTYP"    ,"C" ,         1,         0 } ,;
   { "TITEL"       ,"C" ,        30,         0 } ,;
   { "ARTIST"      ,"C" ,        30,         0 } ,;
   { "ALBUM"       ,"C" ,        30,         0 } ,;
   { "JAHR"        ,"C" ,         4,         0 } ,;
   { "KOMMENTAR"   ,"C" ,        30,         0 } ,;
   { "TRACKNO"     ,"N" ,         2,         0 } ,;
   { "GENRE"       ,"C" ,        20,         0 } ,;
   { "DURATION"    ,"N" ,        14,         3 } ,;
   { "FILESIZE"    ,"N" ,        12,         0 } ,;
   { "FILETYPE"    ,"C" ,         4,         0 } ,;
   { "BITRATE"     ,"N" ,         7,         0 } ,;
   { "RATETING"    ,"N" ,         7,         0 } ,;
   { "PLAYCOUNT"   ,"N" ,         7,         0 } }

   DbCreate( "WM9DBF.DBF", aStruct)

   USE WM9DBF.DBF

   APPEND BLANK
   REPLACE TITEL     WITH "TESTI"
   REPLACE ARTIST    WITH "TESTMANN"
   REPLACE ALBUM     WITH "TESTALBUM"
   REPLACE JAHR      WITH "2006"
   REPLACE KOMMENTAR WITH "MEIN TEST"
   REPLACE TRACKNO   WITH 1
   REPLACE GENRE     WITH "MY GENRE"

   REPLACE DURATION  WITH 100
   REPLACE FILESIZE  WITH 1000
   REPLACE FILETYPE  WITH "MP3"
   REPLACE BITRATE   WITH 192
   REPLACE RATETING  WITH 100
   REPLACE PLAYCOUNT WITH 100
   CLOSE
RETURN

*
* eof
*

gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jan,
da Du Dein Beispiel ja für uns "zusammengestoppelt" hast, eine kurze Frage von mir:
Du hast schon darauf geachtet, dass:
  • der Parent der Groupbox die TabPage ist
  • der Parent der restlichen Elemente die GroupBox ist
Bei Deinem Code mit der Schleife machst Du da nämlich keinen Unterschied...

Viele Grüße,
Martin
:grommit:
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.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

@ Jimmy: Das mit dem Komma hatte ich befürchtet, allerdings hatte ich mehr an eine Klammer zu viel gedacht :-) Das kommt davon, wenn man einen langen Code zurechkürzt und der neue Editor (eben der Forumseditor) die Zeilen einfach umbricht, was dann zu Lasten der Übersichtlichkeit geht. Dein Codebeispiel schaue ich mir heute Abend mal an, vorher komme ich da leider nicht zu.

@ Martin: Ja, mir ist durchaus bewußt, daß ich das laut Dokumentation falsch mache. Aber wie bereits mehrfach gesagt: Baue ich bei den Static die Groupbox als Parent ein, werden die nicht angezeigt. Also habe ich die auf die Tab-Page gesetzt. Denn das Ergebnis ist dann einwandfrei.

@ Hubert: Ja, genau diese Reihenfolge habe ich. Von Anfang an schon. Da habe ich nichts dran geändert.

Jan
Antworten