Seite 1 von 1

DCREAD GUI und FIT [ERLEDIGT]

Verfasst: Do, 12. Aug 2021 9:18
von Manfred
und wieder etwas, was ich nicht erklären kann.
FIT in DCREAD GUI soll doch dafür sorgen, das der Dialog automatisch von der Breite und Höhe her passt!?
In dem Beispiel passt zwar die Breite, aber die Länge wird immer zu groß bemessen und somit habe ich unten einen viel zu großen Platz der frei ist

Code: Alles auswählen

FUNCTION al_edit_var_neu(ar_get,apos,agruppe,xpush,abig,ex_ok,x_syspush,nZeilen)
         LOCAL aButton
         LOCAL bDatalink
         LOCAL cRahmenTitel  := aGruppe[1,3]
         LOCAL cTitel        := aGruppe[1,4] + oVtPara:cVersion
         LOCAL getlist       := {}
         LOCAL GetOptions
         LOCAL lEditProtect
         LOCAL nI
         LOCAL oDialog       := NIL
         LOCAL oDialogZUsatz := mk_dialog():new()
         LOCAL oLocal_style  := Local_style():new():initvaria(oVtPara:us_font_input)
         LOCAL p_gross       := {0,0}
         LOCAL zbig          := {}
         LOCAL zzbreit       := 8
         LOCAL zzhoch        := 16

         MEMVAR oSysPara
         MEMVAR oVtPara
         MEMVAR xx_font_input                                                   // hier unbekannt

         DEFAULT xPush   TO ""
         DEFAULT ex_ok   TO .T.                                                 // für die ANzeige der einelnen Pushbutton-
         DEFAULT nZeilen TO Len(ar_get)*2

         aButton := {;
                     {"Übernehmen",,,{|| DC_ReadGuiEvent(DCGUI_EXIT_OK,getlist)},,,,,"Wert übernehmen","Eingabewert übernehmen und Menue verlassen"},;
                     {"Abbruch"   ,,,{|| ASize(ar_get,0),DC_ReadGuiEvent(DCGUI_EXIT_ABORT,getlist)},,,,"{|| ." + Transform(ex_ok,"L") + ". }","Abbruch des Vorgangs","Abbruch des Eingabevorgangs und Menue verlassen."};
                    }
// {"Abbruch"   ,,,{|| quit_edit(ar_get)},,,,"{|| ." + Transform(ex_ok,"L") + ". }","Abbruch des Vorgangs"};
         oDialogZusatz:standardRahmenKopf(aGruppe[1,3],,@getlist,.F.,,,,.T.,nZeilen,oLocal_style:sty_user[3,2])
         xx_font_input := oVTpAra:us_font_input

         zbig    := string_big_text( Replicate("M",100) , xx_font_input )
         zzhoch  := zbig[2]
         zzbreit := Round((zbig[1] / 100),0)
         p_gross := { zzbreit*20 , zzhoch }
********************************************************************************
         aButton[1,2] := p_gross[1]
         aButton[2,2] := p_gross[1]
         aButton[1,3] := p_gross[2]*1.3
         aButton[2,3] := p_gross[2]*1.3
         FOR nI := 1 TO Len(xPush)
             AAdd(aButton,{xPush[nI,3],;                                        /* Caption*/
                           p_gross[1],;                                         /* width*/
                           p_gross[2]*1.3,;                                     /* height*/
                           xPush[nI,4],;                                        /* Action Code Block*/
                           ,;                                                   /* Cargo*/
                           ,;                                                   /* Bitmap Resource*/
                           ,;                                                   /* COnfig Object*/
                           ,;                                                   /* When CodeBlock*/
                           xPush[nI,10],;                                        /* Tooltip*/
                           oLocal_style:sty_user;                               /* Font*/
                          };
                 )
//             AAdd(aButton,{xPush[nI,3],p_gross[1],p_gross[2]*1.3,xPush[nI,4],,,,{|| xPush[nI,5]},,oLocal_style:sty_user})
         NEXT
********************************************************************************
         FOR nI := 1 TO Len(ar_get)
             lEditProtect := .F.
             IF ar_get[nI]:nLaenge = 500
// das könnte man gegen einen CodebLock tauschen. (12.08.2021)
                lEditProtect := .T.
             ENDIF
             @ oSysPara:skaliereXbParts(ar_get[nI]:nOben),oSysPara:skaliereXbParts(ar_get[nI]:nLinks) DCSAY ar_get[nI]:text;
                                                 OBJECT oDialogZUsatz:oText;
                                                 PARENT oDialogZUsatz:oRahmenKopf;
                                                   SIZE 0
             IF ValType(ar_get[nI]:eingabe) <> "U"                              // es muß was drin stehen, sonst macht es wenig Sinn
                IF lEditProtect
                   @ DCGUI_ROW,DCGUI_COL + IF(! Empty(ar_get[nI]:text),5,0) DCGET ar_get[nI]:eingabe;
                                                                      EDITPROTECT {|| .T.};
                                            PARENT oDialogZUsatz:oRahmenKopf;
                                           PICTURE ar_get[nI]:picture;
                                           TABSTOP;
                                           TOOLTIP ar_get[nI]:cTooltip
                ELSE
                   @ DCGUI_ROW,DCGUI_COL + IF(! Empty(ar_get[nI]:text),5,0) DCGET ar_get[nI]:eingabe;
                                            PARENT oDialogZUsatz:oRahmenKopf;
                                           PICTURE ar_get[nI]:picture;
                                           TABSTOP;
                                           TOOLTIP ar_get[nI]:cTooltip
                ENDIF
             ENDIF
         NEXT
********************************************************************************
         DCGETOPTIONS;
           AUTORESIZE;
               BORDER XBPDLG_SIZEBORDER;
              BUTTONS aButton;
                COLOR oVtPara:us_scrbg;
            COLORGETS {oSysPara:doParaWS:colorgets_aktiv,oSysPara:doParaWS:colorgets_inaktiv};
             ENTERTAB;
                 FONT xx_font_input;
              GETFONT oVtpara:us_font_menue;
           HILITEGETS oSysPara:doParaWS:hilitegets;
          NOESCAPEKEY;
          NOMAXBUTTON;
          NOMINBUTTON;
                PIXEL;
         PRESENTATION oVtPara:aPresGet;
              SAYFONT oVtpara:us_font_menue;
           SAYOPTIONS XBPSTATIC_TEXT_VCENTER+XBPSTATIC_TEXT_LEFT;
           SCROLLBARS XBP_SCROLLBAR_VERT+XBP_SCROLLBAR_HORIZ;
         TOOLTIPCOLOR oSysPara:doParaWS:tooltipcolor_vg,oSysPara:doParaWS:tooltipcolor_hg;
          TOOLTIPFONT oSysPara:doParaWS:tooltipfont

         DCREAD GUI;
                FIT;
         		TITLE cTitel;
                OPTIONS GetOptions;
                PARENT @oDialog
	 	 RETURN ar_get
erkennt irgendwer einen Fehler im System? Ich sehe erstmal nichts.
Und so sieht es dann aus.
FIT.JPG
FIT.JPG (87.71 KiB) 2871 mal betrachtet

Re: DCREAD GUI und FIT

Verfasst: Do, 12. Aug 2021 9:23
von Tom
Das liegt an der Groupbox, die Du da reinmalst. Ein anderer Aspekt, der eine unschöne Automatikberechnung zur Folge haben kann, ist eine Combobox - bei der rechnet Roger die Ausklappgröße mit. Also eine Combobox am unteren Rand, von der im ausgeklappten Zustand zehn Einträge zu sehen sind, verlängert den Dialog um 9 Einheiten nach unten. Aber, wie gesagt - hier machst Du das selbst. Du musst die Groupbox verkleinern.

Re: DCREAD GUI und FIT

Verfasst: Do, 12. Aug 2021 10:33
von Manfred
Hi Tom,
manchmal könnte ich verzweifeln, das die Natur so einen Mist zuläßt. Du hast natürlich Recht. Und ich hatte dafür vorgesorgt und extra nZeilen eingebaut. Aber Cut&Paste schaltet ab und an den Verstand aus. :roll: :banghead:

Re: DCREAD GUI und FIT

Verfasst: Do, 12. Aug 2021 10:45
von Tom
Huhu, Manfred.

Kann passieren. Aber es ist immer wieder eine Freude, Deinen aufgeräumten und exzellent formatierten Code zu sehen. :D

Re: DCREAD GUI und FIT

Verfasst: Do, 12. Aug 2021 10:47
von Manfred
:lol: brushteeth