1

Konu: FOX ile Explorer kontrolü

merhaba
Amacım şubelerdeki kullanıcıların benim çalışmasına izin verdiğim programlar ve izin verdiğim adresler dışına gitmesini engellemek. Bir program yapılacak belli sehll ile programları açabilirim. İstediğim sayfalarada formda açabiliyoum fakat sorun şu
formda açtığım Explorer tanımladığım sayfaya girdikten sonra link ile yeni bir sayfaya yönlendirme var ise sayfa dışarda açılıyor. Bunu engellemek veya açılan sayfanın form içinde açılmasını sağlamak istiyorum nasıl yapabilirim ? formda aradım fakat ya yanlış aradım yada yok

şimdiden teşekkürler

2 Son düzenleyen, birol (25.09.2010 17:20:40)

Re: FOX ile Explorer kontrolü

En basit hali bu.

Visual Fox Pro
public oform1

oform1=createobject("cform1")
oform1.show()
oform1.addobject("oWEB1","cWEB1")
oform1.oweb1.navigate("www.fox4um.com")
return
 
 
 
***************************
define class cform1 as form
    top=0
    left=0
    width=800
    height=600
enddefine
 
 
********************************
define class cweb1 as olecontrol
    visible=.t.
    oleclass="shell.explorer.2"
    top=5
    left=5
    width=790
    height=590
    anchor=15
 
    procedure refresh
        nodefault
    endproc
enddefine

3

Re: FOX ile Explorer kontrolü

Sorunum şuydu ayrı bir sayfa için shift tuşuna basıldığında yada link için ayrı sayfada açıl özelliği verildiğinde dışardan bir explorer açılıyor bunu engellemek istiyorum

4 Son düzenleyen, ugurlu2001 (27.09.2010 09:08:27)

Re: FOX ile Explorer kontrolü

Ali, bahsettiğin özellik tamamen "Browser" ların doğal özelliği. Standart olarak engelleyemezsin. Ancak VFP içerisinden IE nesnesi aktifken; keypress event ı ile SHIFT yada SAĞ MOUSE TUŞU na basılmasını kontrol edip ona göre davranabilirsin.

Yada script olarak çalışan "HTML" kodunun içerisine fazladan bir JavaScript kodu gömerek de bunu yapabilirsin. Bu yöntem yukarıdakine göre çok daha efektif olacaktır. Google dan aratarak konu için bir çok örnek bulmak mümkün.

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

5

Re: FOX ile Explorer kontrolü

HTML kodlarıyla fazla haşır neşir değilim içine de girmek istemiyorum. Belki bu web browser control özelliklerinde böyle bir seçenek vardır diye düşünmüştüm burdanda birş ey çıkmadı. Aratırken ne şekilde aratmam gerekiyor. Bulamadım aramalarıda

6

Re: FOX ile Explorer kontrolü

Çetin hocam bir yerde böyle bir şeyden söz etmiş

http://www.fox4um.com/topic/979/form-icinden-explorer/

Gizlemene ne gerek var. BeforeNavigate2'da bloke et (Cancel =.t.)
Bu arada gizlemek icin toolbarlari kaldir (aslinda ben toolbarlar nasil gosteriliyordu onu hatirlamiyorum:)

canel=.t. nerde ve ne şekilde yapmam gerekiyor bir fikriniz var mı?

7

Re: FOX ile Explorer kontrolü

Bu sayfa yardımcı olabilir:

http://msdn.microsoft.com/en-us/library … S.85).aspx

8

Re: FOX ile Explorer kontrolü

Visual Fox Pro
ieac("www.fox4um.com")

retu
 
***********************
procedure ieac(iexaurl)
    oie=createobject("InternetExplorer.Application")
    oie.visible=.t.
    oie.left=400
    oie.width=1024
    oie.height=980
    oie.toolbar=.f.
    oie.addressbar=.t.
    oie.navigate(iexaurl)
    oie.visible=.t.
    oie=null
endproc

9 Son düzenleyen, ugurlu2001 (27.09.2010 14:33:14)

Re: FOX ile Explorer kontrolü

Kod Çetin üstad 'ın;

Mouse sağ tuşu için ufak bir eklenti yaptım.

Ne kadar işini görür emin değilim.

Visual Fox Pro
*!*    Author: Cetin BASOZ

 
Public oForm
oForm = Createobject('htmlSample', GetHTML())
oForm.Show()
 
Function GetHTML
  *Return HTMLShowerx()
  Local myVar
  TEXT to myVar noshow
<html>
<head>
<title>New User Sign Up</title>
<script language="JScript">
 
var message="Don't use RIGHT CLICK"
 
function click(e) {
if (document.all) {
if (event.button == 2) {
alert(message);
return false;
}
}
if (document.layers) {
if (e.which == 3) {
alert(message);
return false;
}
}
}
if (document.layers) {
document.captureEvents(Event.MOUSEDOWN);
}
document.onmousedown=click;
 
function LoadTreeView()
{
  var TreeView1 = document.all('Tree001');
    var oNode = TreeView1.Nodes.Add(null,0,"top","My Tree");
    TreeView1.Nodes.Add("top",4,"root0","Main node 0");
    TreeView1.Nodes.Add("top",4,"root1","Main node 1");
    TreeView1.Nodes.Add("top",4,"root2","Main node 2");
    TreeView1.Nodes.Add("root1",4,"child11","Child11");
    TreeView1.Nodes.Add("root1",4,"child12","Child12");
    TreeView1.Nodes.Add("root2",4,"child21","Child21");
    TreeView1.Nodes.Add("child11",4,"child111","child111");
    TreeView1.Nodes.Add("child11",4,"child113","child113");
    TreeView1.Nodes.Add("child113",3,"child112","child112");
    oNode.Expanded = true;
 
  var TreeView2 = document.all('Tree002');
    var oNode = TreeView2.Nodes.Add(null,0,"top","My Tree");
    TreeView2.Nodes.Add("top",4,"root0","Main node 0");
    TreeView2.Nodes.Add("top",4,"root1","Main node 1");
    TreeView2.Nodes.Add("top",4,"root2","Main node 2");
    TreeView2.Nodes.Add("root1",4,"child11","Child11");
    TreeView2.Nodes.Add("root1",4,"child12","Child12");
    TreeView2.Nodes.Add("root2",4,"child21","Child21");
    TreeView2.Nodes.Add("child11",4,"child111","child111");
    TreeView2.Nodes.Add("child11",4,"child113","child113");
    TreeView2.Nodes.Add("child113",3,"child112","child112");
    oNode.Expanded = true;
 
}
function CheckTable(dbcPath,dbfName)
{
  var strCn = "Provider=VFPOLEDB;Data Source=" + dbcPath;
  var strSQL = "select * from " + dbfName;
 
  var oConn = new ActiveXObject("Adodb.Connection");
  oConn.ConnectionString = strCn;
  oConn.Open;
  var oRS = oConn.Execute(strSQL);
 
  var lst="<TABLE border='1'><TR>";
  var Maxfields=5;
  var MaxRows=20;
 
  for (i=0;i<Math.min(oRS.Fields.Count,Maxfields);i++)
  {
    lst += "<TH>";
    lst += oRS.Fields(i).Name;
    lst += "</TH>";
  }
  lst += "</TR>";
 
  var counter=0;
  while (!oRS.eof && counter < MaxRows)
  {
    lst += "<TR>";
    for (i=0;i<Math.min(oRS.Fields.Count,Maxfields);i++)
    {
      lst += "<TD>";
      lst += oRS.Fields(i).Value;
      lst += "</TD>";
    }
    lst += "</TR>";
    oRS.MoveNext();
    counter++;
  }
  lst += "</TABLE>";
  oConn.Close();
  tablelist.innerHTML = lst;
  return true;
}
</script>
</head>
<body bgcolor=Turquoise onload="LoadTreeView();">
<h1 align="Center"><font color="#000080">New User Sign Up</font></h1>
<form method="GET" action="empty.htm" target="_self" name="myForm">
    <table border="0" cellspacing="1">
      <tr><td>ID</td><td><input type="text" name="ID" ID="SSNNumber" size="16" maxlength="16"></td></tr>
      <tr><td>First Name</td><td><input type="text" name="First" size="30" maxlength="15"></td></tr>
      <tr><td>Last Name</td><td><input type="text" name="Last" size="30" maxlength="20"></td></tr>
   <td>Gender?</td>
   <td>
     <select name="Selection1">
       <option value="0">- Gender -</option>
       <option value="1">Female</option>
       <option value="2">Male</option>
     </select></td></tr>
<tr>
   <td>Multi Selection</td>
   <td>
     <select multiple name="MulSelection">
       <option value="0">- Sports you watch -</option>
       <option value="1">Basketball</option>
       <option value="2">Soccer</option>
       <option value="3">Football</option>
       <option value="4">Volleyball</option>
       <option value="5">Formula1</option>
       <option value="6">Nascar</option>
     </select></td></tr>
  </table>
<TEXTAREA ID=txtComments STYLE="overflow:scroll; width:70%; height:150">
Sometimes an HTML based VFP form can be cool.
Think you could have syntax coloring on a form :)
Play flash movie (better play "Need For Speed" - post me too if you find a flash version), have a calendar etc.
</TEXTAREA>
  <p>
<A HREF="newpage.htm" TARGET="_self">Go to New Page.</A>
<input type=submit name=sub1 value="Write" onclick='document.all("submitter").value="writeButton";'>
<input type=submit name=sub2 value="Update" onclick='document.all("submitter").value="updateButton";'>
<input type=submit name=sub3 value="Clear" onclick='document.all("submitter").value="clearButton";'>
 
<p>
<object name="Treeview" classid="clsid:C74190B6-8589-11D1-B16A-00C0F0283628"
  id="Tree001" width="242" height="159">
  <param name="_ExtentX" value="6403">
  <param name="_ExtentY" value="4207">
  <param name="_Version" value="393217">
  <param name="HideSelection" value="0">
  <param name="Indentation" value="1000">
  <param name="LabelEdit" value="0">
  <param name="LineStyle" value="0">
  <param name="PathSeparator" value="/">
  <param name="Sorted" value="0">
  <param name="Style" value="7">
  <param name="Checkboxes" value="0">
  <param name="FullRowSelect" value="0">
  <param name="HotTracking" value="0">
  <param name="Scroll" value="1">
  <param name="SingleSel" value="0">
  <param name="ImageList" value>
  <param name="BorderStyle" value="0">
  <param name="Appearance" value="1">
  <param name="MousePointer" value="0">
  <param name="Enabled" value="1">
  <param name="OLEDragMode" value="0">
  <param name="OLEDropMode" value="0">
</object>
</p>
<p>
<object name="Treeview" classid="clsid:C74190B6-8589-11D1-B16A-00C0F0283628"
  id="Tree002" width="242" height="159">
  <param name="_ExtentX" value="6403">
  <param name="_ExtentY" value="4207">
  <param name="_Version" value="393217">
  <param name="HideSelection" value="0">
  <param name="Indentation" value="1000">
  <param name="LabelEdit" value="0">
  <param name="LineStyle" value="0">
  <param name="PathSeparator" value="/">
  <param name="Sorted" value="0">
  <param name="Style" value="7">
  <param name="Checkboxes" value="0">
  <param name="FullRowSelect" value="0">
  <param name="HotTracking" value="0">
  <param name="Scroll" value="1">
  <param name="SingleSel" value="0">
  <param name="ImageList" value>
  <param name="BorderStyle" value="0">
  <param name="Appearance" value="1">
  <param name="MousePointer" value="0">
  <param name="Enabled" value="1">
  <param name="OLEDragMode" value="0">
  <param name="OLEDropMode" value="0">
</object>
</p>
</form>
<input type=hidden name="submitter" value=0>
<p>Browse a VFP table</p>
<table>
<TR><TD>Locate DBC</TD><TD><input type='file' size='80' name='DBCLOCATION'></TD></TR>
<TR><TD>TableName</TD><TD><input type='text' size='80' name='TABLENAME'></TD></TR>
</TABLE><HR>
<input type='button' value='List' onClick="CheckTable(DBCLOCATION.value,TABLENAME.value);return;">
<div id='tablelist'></div>
</body>
</html>
  ENDTEXT
  Return myVar
 
Define Class htmlSample As Form
  Top = 0
  Left = 0
  Height = 600
  Width = 800
  DoCreate = .T.
  Caption = "HTML sample"
  cHTML = "<html><body></body></html>"
  cHTMFile = ''
  DoNotErase = .T.
 
  Add Object htmlviewer As OleControl With ;
    Top = 0, ;
    Left = 0, ;
    Height = 600, ;
    Width = 800, ;
    Visible = .T., ;
    Name = "HTMLViewer", ;
    OleClass = 'Shell.Explorer'
 
  Procedure Destroy
    If !This.DoNotErase And !Empty(This.cHTMFile) And File(This.cHTMFile)
      Erase (This.cHTMFile)
    Endif
  Endproc
 
  Procedure Init
    Lparameters tcHTML, tlIsFile
    If m.tlIsFile And !Empty(m.tcHTML) And File(m.tcHTML)
      This.cHTMFile = m.tcHTML
      This.DoNotErase = .T.
 
      With Thisform.htmlviewer
        .Navigate2('file://'+This.cHTMFile)
        Do While .ReadyState # 4 && Wait for ready state
        Enddo
      Endwith
    Else
      If !Empty(m.tcHTML)
        This.cHTMFile = Forcepath(Sys(2015)+'.htm',Sys(2023))
        This.DoNotErase = .F.
        Strtofile(m.tcHTML, This.cHTMFile)
 
        With Thisform.htmlviewer
          .Navigate2('file://'+This.cHTMFile)
          Do While .ReadyState # 4 && Wait for ready state
          Enddo
        Endwith
      Else
        With This.htmlviewer
          .Navigate2("about:blank")
          .Document.Write(This.cHTML)
        Endwith
      Endif
    Endif
  Endproc
 
  Procedure htmlviewer.NavigateError
    Lparameters pdisp, url, frame, statuscode, Cancel
    TEXT to m.lcParamList textmerge noshow
  pdisp = pdisp
  url = <<url>>
  frame = <<frame>>
  statuscode = <<statuscode>>
  Cancel = <<Cancel>>
    ENDTEXT
    Messagebox(m.lcParamList)
    Cancel = .T.
  Endproc
 
 
  Procedure htmlviewer.BeforeNavigate2
    Lparameters pdisp, url, Flags, targetframename, postdata, headers, Cancel
    TEXT to m.lcParamList textmerge noshow
  pdisp = pdisp
  url = <<url>>
  flags = <<flags>>
  targetframename = <<targetframename>>
  postdata = <<postdata>>
  headers = <<headers>>
  Cancel = <<Cancel>>
    ENDTEXT
    Messagebox(m.lcParamList)
 
    *  oFrm = This.Object.Document.myForm
    lcVals = ""
    If This.Object.Document.Forms.Length > 0
      For Each oFrm In This.Object.Document.Forms
        lcVals = lcVals + oFrm.Name + Chr(13)
        If oFrm.elements.Length > 0
          For Each oElem In oFrm.elements
            If oElem.Name = "Treeview"
              lcVals = lcVals + "Name :" + oElem.Name + '::'+ oElem.Id +  '::'+ "/Value:"+;
                Iif(!Isnull(oElem.SelectedItem),;
                oElem.SelectedItem.Key,"NULL") + Chr(13)
            Else
              If oElem.Type = "select-multiple"
                lcList=''
                For ix=0 To oElem.Length-1
                  If oElem.Item(ix).Selected
                    lcList = lcList + Iif(Empty(lcList),'',',')+oElem.Item(ix).Value
                  Endif
                Endfor
                lcVals = lcVals + "Name :" + oElem.Name +  '::'+ oElem.Id +  '::'+ "/Value:"+lcList + Chr(13)
              Else
                lcVals = lcVals + "Name :" + oElem.Name + '::'+ oElem.Id +  '::'+ "/Value:"+oElem.Value + Chr(13)
              Endif
            Endif
            oElem = .Null.
          Endfor
        Endif
        oFrm = .Null.
      Endfor
    Endif
    Cancel = .T.  && prevents actual navigation
    lcVals = lcVals + Chr(13)+Chr(10)+;
      'Submitted by:'+Transform(This.Object.Document.All("submitter").Value)
    Messagebox(lcVals)
  Endproc
 
  Procedure htmlviewer.Refresh
    Nodefault
  Endproc
Enddefine
Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

10

Re: FOX ile Explorer kontrolü

Çözüm bulamadım. ne yaparsam yapayım farklı sayfada açılanlar direk explorerda açılıyor buda işime gelmiyor sad. Birkaç örnekte indirdim fakat farklı sayfada açılması için ayarlanmış linkleri devre dışı bırakamıyorum

11

Re: FOX ile Explorer kontrolü

Selam;

target="_blank" linkler için kabaca aşağıdaki işini görür ancak javascript ile kontrol edilen linkler(popuplar) için javascript ile bir şeyler yapılabilir

DocumentComplete methodunda

this.Document.body.innerhtml=strtran(this.Document.body.innerhtml,"_blank","_self")