Parent

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21192
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Parent

Beitrag von Manfred »

Folgendes Problem:

Code: Alles auswählen

*                                                                              *
#include "appevent.ch"
#include "dcdialog.ch"
#include "dcgra.ch"
#include "dcmsg.ch"
#include "routenverfolgung.ch"
#include "nls.ch"
#include "xbp.ch"
#include "q:\include\inkey.ch"

#pragma Library( "XBTBASE1.LIB")                                                // wird dadurch in keinem
#pragma Library( "XBTBASE2.LIB")                                                // Projektfile mehr benötigt als Angabe
#pragma Library( "XppUI2.lib" )                                                 // für den XbpPrintDialog()
#pragma Library( "dclipx.lib" )

#pragma Library( "..\zusaetze\mk_verkehrsbetriebe.lib" )
#pragma Library ("q:\zusaetze_gui\allgemein\mk_zusaetze.lib")
********************************************************************************
PROCEDURE main()
          LOCAL getlist         := {}
          LOCAL GetOptions

          LOCAL oAusschnitte  := ausschnitte():new()
          LOCAL oDatenBank    := datenbank():new(,,,.T.)
          LOCAL oDialogZusatz := DialogRoutenZusatz():new(,,"04.09.2012")
          LOCAL oEinstellung  := einstellung():new()
          LOCAL oSignale      := signale():new()

          MEMVAR oSysPara

          oDatenbank:erzeugeAlleVerzeichnisse()
          oSysPara:pruefeMehrfachStart(.F.)
          oDialogZusatz:erzeugeMenuBar(@getlist)
//------------------------------------------------------------------------------
          PruefeMeldepunktUpdate()
          oAusschnitte:db_oeffnen("bez",,,,,,,,,,,,.T.)
          oDialogZusatz:ausschnitte2Array(oAusschnitte)
          oAusschnitte:schliesse_datenbank()
          oEinstellung:db_oeffnen(,,,,,,,.T.)

          oEinstellung:erzeugeVerzeichnisse(oSysPara:cDatenPfad + "\icon\")

          oEinstellung:schliesse_datenbank()

          oSignale:cPfad  += Alltrim(Str(Year(Date()))) + "/" + Right("0" + Alltrim(Str(Month(Date()))),2) + "/"
          oSignale:cDbank += DToS(Date())
          oSignale:db_oeffnen(,,,,,.T.)
          oSignale:initvaria()

          oDialogZusatz:linien2array(oSignale,oEinstellung)

          oSignale:schliesse_datenbank()
//------------------------------------------------------------------------------
          DCMENUITEM "~Einstellungen";
              ACTION {|| einstellungen(oDialogZusatz:oDateiMenu) };
             MESSAGE "Programmeinstellungen" INTO oDialogZusatz:oMessageBox;
              PARENT oDialogZusatz:oDateiMenu
//------------------------------------------------------------------------------
          oDialogZusatz:erzeugeProgrammendeMenue(@getlist)
          oDialogZusatz:erzeugeHilfeMenue(@getlist)
          oDialogZusatz:erzeugestatusbar(@getlist)
//------------------------------------------------------------------------------
          @ 1,1 DCGROUP oDialogZusatz:oRahmenHTML;
                CAPTION "Routenanzeige";
                   SIZE DCGUI_PARENTWIDTH-10,DCGUI_PARENTHEIGHT
//------------------------------------------------------------------------------
       DCGETOPTIONS;
         ABORTQUERY MSG {|| AppQuit(oSysPara:cProgrammName,.T.,"Programmende mit ESC") };
         AUTORESIZE;
     AUTOWINDOWMENU;
             BORDER XBPDLG_SIZEBORDER;
               BUSY "Programm wird gestartet, Daten werden geladen";
         CLOSEQUERY MSG {|| AppQuit(oSysPara:cProgrammName,.T.,"Programmende über X-Button") };
               ICON 1;
              PIXEL;
              TITLE TokenUpper(SubStr(oSysPara:cProgrammName,1,Rat(".",oSysPara:cProgrammName)-1)) + " Version: " + oDialogZusatz:cVersion + " (" + oSysPara:cCopyright + ") " + oSysPara:cLizenznehmerName

             DCREAD GUI;
               EVAL {|o| oSysPara:erzeugeHilfe(oSysPara:oHauptDialog),;
                         oSysPara:oHauptdialog:setFrameState(XBPDLG_FRAMESTAT_MAXIMIZED),;
                         test(oDialogZusatz:oRahmenHTML,oSysPara);
                    };
            OPTIONS GetOptions;
             PARENT @oSysPara:oHauptDialog
          RETURN
********************************************************************************
FUNCTION test(oDialog,oSysPara)
         altd()
         RETURN(.T.)
Wie bekomme ich den Rahmen vernünftig in den Clientbereich, also auf die große freie Fläche zwischen Statusbar und MenuBar?. Im Moment fängt der Rahmen nicht oben links direkt in der Ecke an, sondern um einiges tiefer. Wie verhält sich das direkt in der MAIN, nit der Parentzuordnung?
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
Manfred
Foren-Administrator
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: Parent

Beitrag von Manfred »

So sieht das aus.

Der Rahmen sollte eigentlich komplett den Bereich ausfüllen. Vor allen Dingen würde mich mal interessieren, wer wird überhaupt der Parent des Rahmens?
Dateianhänge
Routenmain.JPG
Routenmain.JPG (62.73 KiB) 3746 mal betrachtet
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
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9362
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Parent

Beitrag von Tom »

Da nicht zu sehen ist, wie Du Größe und Position der "Toolbar" berechnest, ist das schwer zu beantworten, außerdem fehlt Dein DCREAD, dessen Optionen auch noch Einfluss haben. Einfach gesagt: Erst das DCREAD entscheidet, wie groß der Dialog wird, was umgekehrt bedeutet, dass Du auch erst dort/danach (etwa im EVAL von DCREAD) exakt weißt, wie groß der Dialog wird, es sei denn, Du hast in den DCGET OPTIONS explizit eine Größe angegeben und arbeitest nicht mit DCREAD ... FIT. Dann kommt es auch noch darauf an, wie Deine Toolbar erzeugt wird. Die DCTOOL- und -STATUSBAR werden dem Dialog nach dessen eigentlicher Erzeugung "angehängt".
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
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: Parent

Beitrag von Manfred »

Hi Tom,

dieses Problem habe ich nur in der main. In Unterprogramme klappt das genau so, wie ich es mir vorstelle. Deswegen war ja meine Frage, was ist der Parent von Natur aus, wenn ich keinen zuweise?

Code: Alles auswählen

********************************************************************************
METHOD mk_dialog:erzeugeStatusBar(getlist)
       DCSTATUSBAR ::oStatusBar;
             ALIGN DCGUI_ALIGN_BOTTOM;
            HEIGHT ::nStatusBarHoehe
       @ 3,0 DCSTATIC;
               OBJECT ::oStaticMsg;
               PARENT ::oStatusBar;
                 SIZE ::nMessageBoxWidth,::nStatusBarHoehe;
                 TYPE XBPSTATIC_TYPE_RECESSEDBOX
       @ 3,0 DCSTATIC;
               OBJECT ::oProgressBox;
               PARENT ::oStatusBar;
                 SIZE ::nProgressBoxWidth,::nStatusBarHoehe;
                 TYPE XBPSTATIC_TYPE_RECESSEDBOX
       @ 3,0 DCSTATIC;
               OBJECT ::oStatusBarStatic;
               PARENT ::oStatusBar;
                 SIZE ::nStatusBarStaticWidth,::nStatusBarHoehe;
                 TYPE XBPSTATIC_TYPE_RECESSEDBOX
       @ 3,0 DCSTATIC;
               OBJECT ::oStatusBarUhrzeit;
               PARENT ::oStatusBar;
                 SIZE 80,::nStatusBarHoehe;
                 TYPE XBPSTATIC_TYPE_RECESSEDBOX
        @ 2,2 DCMESSAGEBOX;
                    COLOR GRA_CLR_BLUE, GRA_CLR_BACKGROUND;
                   OBJECT ::oMessagebox;
                   PARENT ::oStaticMsg;
                     SIZE ::nMessageBoxWidth,::nStatusBarHoehe MOTION;
                     TYPE XBPSTATIC_TYPE_TEXT
RETURN getlist
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
Manfred
Foren-Administrator
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: Parent

Beitrag von Manfred »

Tom,

ich sehe das erst jetzt: Wo fehlt denn da das DCREAD?
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
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9362
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Parent

Beitrag von Tom »

Schulljung, das ging für mich in den DCGET OPTIONS unter.
Deswegen war ja meine Frage, was ist der Parent von Natur aus, wenn ich keinen zuweise?
Das Dialogobjekt selbst. Um Zugriff darauf zu erhalten: LOCAL oDlg und dann DCREAD ... PARENT @oDlg.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
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: Parent

Beitrag von Manfred »

Ob das jetzt die glorreiche Lösung ist....

es scheint aber das zu bringen, was ich möchte

Code: Alles auswählen

//------------------------------------------------------------------------------
          @ 1,1 DCGROUP oDialogZusatz:oRahmenHTML;
                CAPTION "Routenanzeige";
                 PARENT oSysPara:oHauptDialog
          @ 1,1 DCGROUP oDialogZusatz:oRahmenStatus;
                CAPTION "Status";
                 PARENT oSysPara:oHauptDialog;
                   SIZE oDialogZusatz:nRahmenStatusBreite,1
//------------------------------------------------------------------------------
       DCGETOPTIONS;
         ABORTQUERY MSG {|| AppQuit(oSysPara:cProgrammName,.T.,"Programmende mit ESC") };
         AUTORESIZE;
     AUTOWINDOWMENU;
             BORDER XBPDLG_SIZEBORDER;
               BUSY "Programm wird gestartet, Daten werden geladen";
         CLOSEQUERY MSG {|| AppQuit(oSysPara:cProgrammName,.T.,"Programmende über X-Button") };
               ICON 1;
              PIXEL;
              TITLE TokenUpper(SubStr(oSysPara:cProgrammName,1,Rat(".",oSysPara:cProgrammName)-1)) + " Version: " + oDialogZusatz:cVersion + " (" + oSysPara:cCopyright + ") " + oSysPara:cLizenznehmerName

             DCREAD GUI;
               EVAL {|o| oSysPara:erzeugeHilfe(oSysPara:oHauptDialog),;
                         oSysPara:oHauptdialog:setFrameState(XBPDLG_FRAMESTAT_MAXIMIZED),;
                         oDialogzusatz:oRahmenHTML:setPos( {1,oDialogZusatz:nStatusBarHoehe}),;
                         oDialogZusatz:oRahmenHTML:setSize( {oDialogZusatz:oRahmenHTML:parent:currentsize()[1]-oDialogZusatz:nRahmenStatusBreite-25,oDialogZusatz:oRahmenHTML:parent:currentsize()[2]-oDialogZusatz:nStatusBarHoehe-65} ),;
                         oDialogZusatz:oRahmenStatus:setpos( {oDialogZusatz:oRahmenHTML:currentsize()[1],oDialogZusatz:oRahmenHTML:currentpos()[2]} ),;
                         oDialogZusatz:oRahmenStatus:setSize( {oDialogZusatz:nRahmenStatusBreite,oDialogZusatz:oRahmenHTML:currentsize()[2]} ),;
                    };
            OPTIONS GetOptions;
             PARENT @oSysPara:oHauptDialog
          RETURN
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