자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Firemonkey WebBrowser focus 부분 문의드립니다.
2014.05.14 03:01
문의드립니다.
WebBrowser focus 부분.
A.pas에서 button클릭하면 B.pas 로 이동합니다.
B form에서 A form으로 맵영역을 클릭하지않고, vkHardwareBack 하면 A form 이동합니다.
문제는 WebBrowser 맵 영역만 클릭하거나 확대하거나 터치 하면 vkHardwareBack 작동을 하지않습니다.
문제점이 무엇인지 알려주세요 ㅠㅠ...
----------------------------------------------------------------------------------------------------------------------
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.WebBrowser,
FMX.StdCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
WebBrowser1: TWebBrowser;
procedure FormCreate(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
procedure TForm2.FormCreate(Sender: TObject);
var
asAddr : string;
begin
asAddr := '서울시 중구 소공동 1번지';
webbrowser1.canfocus :=true;
WebBrowser1.Navigate(Format('https://maps.google.com/maps?t=m&q=%s',[asAddr])); //2014-03-31 변경.
WebBrowser1.setFocus;
end;
procedure TForm2.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
if Key = vkHardwareBack then
begin
showmessage('HI');
Exit;
end;
end;
----------------------------------------------------------------------------------------------------------------------
Firemonkey WebBrowser focus 부분 문의드립니다.
2014.05.14 03:01
문의드립니다.
WebBrowser focus 부분.
A.pas에서 button클릭하면 B.pas 로 이동합니다.
B form에서 A form으로 맵영역을 클릭하지않고, vkHardwareBack 하면 A form 이동합니다.
문제는 WebBrowser 맵 영역만 클릭하거나 확대하거나 터치 하면 vkHardwareBack 작동을 하지않습니다.
문제점이 무엇인지 알려주세요 ㅠㅠ...
----------------------------------------------------------------------------------------------------------------------
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.WebBrowser,
FMX.StdCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
WebBrowser1: TWebBrowser;
procedure FormCreate(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
procedure TForm2.FormCreate(Sender: TObject);
var
asAddr : string;
begin
asAddr := '서울시 중구 소공동 1번지';
webbrowser1.canfocus :=true;
WebBrowser1.Navigate(Format('https://maps.google.com/maps?t=m&q=%s',[asAddr])); //2014-03-31 변경.
WebBrowser1.setFocus;
end;
procedure TForm2.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
Shift: TShiftState);
begin
if Key = vkHardwareBack then
begin
showmessage('HI');
Exit;
end;
end;
----------------------------------------------------------------------------------------------------------------------
파이어몽키 카페에 비슷한 질문과 답변이 있어 안내합니다.(외부 웹브라우저를 사용하는 방식을 안내해 드렸네요.)
http://cafe.naver.com/delphifmx.cafe?iframe_url=/ArticleRead.nhn%3Fclubid=24533623%26articleid=303%26referrerAllArticles=true
질문자 인사 ScorpioM님 ~~ 감사합니다.. 해결했어요 ^^
TWebBrowser 컴포넌트가 안정적이지 않았습니다. 자바스크립트 실행에도 문제가 있고.. 화면이 깨지기도 하고..
불가피하게 외부 브라우저로 넘기는 방식으로 우회했습니다.
function TFormDetail.OpenURL(const URL: string; const DisplayError: Boolean = False): Boolean;
{$IFDEF ANDROID}
var
Intent: JIntent;
begin
// There may be an issue with the geo: prefix and URLEncode.
// will need to research
Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW,
TJnet_Uri.JavaClass.parse(StringToJString(TIdURI.URLEncode(URL))));
try
SharedActivity.startActivity(Intent);
exit(true);
except
on e: Exception do
begin
if DisplayError then ShowMessage('Error: ' + e.Message);
exit(false);
end;
end;
end;
{$ENDIF ANDROID}
{$IFDEF WIN32}
begin
shellexecute(0, 'open',PChar(URL), nil, nil, 0);
end;
{$ENDIF}