HI.
my problem is that when my font size is bigger than some value, inputdlg function cut vertically the font as you can see in the function.
But is not possible for Matlab to resize vertically the window that inputdlg creates.
How can i solve this problem ?

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 11 Apr. 2022
Bearbeitet: Walter Roberson am 11 Apr. 2022

0 Stimmen

What you need to do is take a copy of the code, renaming it to a different function, and edit the line
TextInfo.FontSize = get(0,'FactoryUicontrolFontSize');
to become
TextInfo.FontSize = get(0,'DefaultUicontrolFontSize');
After that, in order to change the font size, just before calling inputdlg(), use
oldsize = get(0, 'DefaultUicontrolFontSize');
set(0, 'DefaultUicontrolFontSize', SIZE_YOU_WANT);
then call inputdlg(), and then
set(0, 'DefaultUicontrolFontSize', oldsize);

4 Kommentare

Davide Di Luzio
Davide Di Luzio am 11 Apr. 2022
Hi Mr. Walter. Thanks you for your reply.
Some point are not very clear.
when you say "take a copy of the code" , does you mean to make a copy of inputdlg function to edit ??
"After that, in order to change the font size, just before calling inputdlg()," does you mean the edited inputdlg ??
"set(0, 'DefaultUicontrolFontSize', oldsize);" to restore the previous value as "TextInfo.FontSize = get(0,'FactoryUicontrolFontSize');" correct?
Yes, copy inputdlg.m into your own directory, but give it a different name, like
my_inputdlg
and edit that. You would invoke that function instead of the built-in inputdlg()
Example:
SIZE_YOU_WANT = 14;
oldsize = get(0, 'DefaultUicontrolFontSize');
set(0, 'DefaultUicontrolFontSize', SIZE_YOU_WANT);
inputs = my_inputdlg(Appropriate Parameters);
set(0, 'DefaultUicontrolFontSize', oldsize);
The only change between inputdlg.m and my_inputdlg.m would be changing the name of the function inside the file, and changing FactoryUicontrolFontSize to DefaultUicontrolFontSize in one place.
Davide Di Luzio
Davide Di Luzio am 11 Apr. 2022
Bearbeitet: Davide Di Luzio am 11 Apr. 2022
i have already made the modification but there was this error :
"Unrecognized function or variable 'getnicedialoglocation'.
Error in myinputdlg (line 322)
set(InputFig,'Position',getnicedialoglocation(FigPos,get(InputFig,'Units')));
Error in tipo3A (line 122)
lk = myinputdlg(prompt,dlgtitle,dims,definput,options)"
seem that matlab lost a link with an inside function of my inputdlg modified
Walter Roberson
Walter Roberson am 11 Apr. 2022
Copy toolbox/matlab/uitools/private/getnicedialoglocation.m to a directory named private in the directory you stored myinputdlg
You might need to copy some other functions as well.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by