자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi InputBox, InputQueryAsync 등등 입력창 폰트색상 문의드립니다.
2018.02.22 18:29
안녕하세요 델파이 10.2.2로 안드로이드 어플 개발중에 문제가 있어서 문의 드립니다.
InputBox 나 InputQueryAsync 등등 입력창을 띄우고 글자를 입력하는데요
텍스트 입력할때 폰트색상이 흰색으로 표시되어 어떤 문자가 입력되는지 알수가 없습니다. 해결방법이 있을까요?
[예제소스 1]
if TPlatformServices.Current.SupportsPlatformService (IFMXDialogServiceAsync, IInterface (ASyncService)) then
begin
ASyncService.InputQueryAsync( 'List', ['Create a New List'], [st],
procedure (const AResult : TModalResult; const AValues : array of string)
begin
case AResult of
mrOk: st := avalues[0];
end;
end );
end;
[예제소스 2]
InputBox('Phone Number','','',
procedure(const AResult: TModalResult; const AValue: string)
begin
if AResult = mrOk then lTemp := AValue;
end
);
Delphi InputBox, InputQueryAsync 등등 입력창 폰트색상 문의드립니다.
2018.02.22 18:29
안녕하세요 델파이 10.2.2로 안드로이드 어플 개발중에 문제가 있어서 문의 드립니다.
InputBox 나 InputQueryAsync 등등 입력창을 띄우고 글자를 입력하는데요
텍스트 입력할때 폰트색상이 흰색으로 표시되어 어떤 문자가 입력되는지 알수가 없습니다. 해결방법이 있을까요?
[예제소스 1]
if TPlatformServices.Current.SupportsPlatformService (IFMXDialogServiceAsync, IInterface (ASyncService)) then
begin
ASyncService.InputQueryAsync( 'List', ['Create a New List'], [st],
procedure (const AResult : TModalResult; const AValues : array of string)
begin
case AResult of
mrOk: st := avalues[0];
end;
end );
end;
[예제소스 2]
InputBox('Phone Number','','',
procedure(const AResult: TModalResult; const AValue: string)
begin
if AResult = mrOk then lTemp := AValue;
end
);
안드로이드 테마에 따라서 글자색상이 지정되는 것으로 보입니다.
그 이유로,
관련된 코드를 추적하다보니 결론적으로 TStyleBook 컴포넌트에 Light 기반 스타일을 사용하시면 글자색을 어둡게 표현할 수 있을 것 같습니다.
위 내용을 추적한 내용은 다음과 같습니다.
1,
ASyncService.InputQueryAsync 함수는
C:\Program Files (x86)\Embarcadero\Studio\19.0\source\fmx\FMX.Dialogs.Android.pas에 정의되어 있습니다.
2,
해당 함수는 아래 코드를 통해 테마를 지정합니다.
(C:\Program Files (x86)\Embarcadero\Studio\19.0\source\fmx\FMX.Helpers.Android.pas)
QueryDialog := DialogFactory.createInputQueryDialog(MainActivity, GetNativeTheme, StringToJString(ACaption),
DialogFactory.createInputQueryDialog 함수는 아래에 정의되어 있습니다.
C:\Program Files (x86)\Embarcadero\Studio\19.0\source\rtl\androiddex\java\fmx\src\com\embarcadero\firemonkey\dialogs\FMXDialogFactory.java
쭈욱 따라가다보면 결과적으로 AlertDialog.Builder 클래스를 통해 화면을 표현하고, 생성자 파라메터로 theme(정수형)를 전달합니다.
AlertDialog.Builder builder = new AlertDialog.Builder(activity, theme);
C:\Program Files (x86)\Embarcadero\Studio\19.0\source\rtl\androiddex\java\fmx\src\com\embarcadero\firemonkey\dialogs\defaults\FMXDefaultInputQueryDialog.java