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
Und so sieht es dann aus.