**************************************************
*-- Form: frmoutlookornek (c:\projeler\outlookornek.scx)
*-- ParentClass: form
*-- BaseClass: form
*-- Time Stamp: 07/31/08 06:25:04 PM
*
*
DEFINE CLASS frmoutlookornek AS form
Height = 473
Width = 521
DoCreate = .T.
ShowTips = .T.
AutoCenter = .T.
Caption = "Outlook Örnek"
*-- XML Metadata for customizable properties
_memberdata = [<VFPData><memberdata name="isclassregistered" type="method" display="IsClassRegistered"/><memberdata name="aklasorler" type="property" display="aKlasorler"/><memberdata name="nklasor" type="property" display="nKlasor"/><memberdata name="ocontac" type="property" display="oContac"/><memberdata name="onamespace" type="property" display="oNameSpace"/><memberdata name="ooutlook" type="property" display="oOutlook"/><memberdata name="klasoryaz" type="method" display="KlasorYaz"/><memberdata name="klasorbul" type="method" display="KlasorBul"/><memberdata name="al" type="method" display="Al"/><memberdata name="tabloolustur" type="method" display="TabloOlustur"/><memberdata name="ocontanc" type="property" display="oContanc"/><memberdata name="ver" type="method" display="Ver"/></VFPData>]
nklasor = 0
ocontanc = .NULL.
onamespace = .NULL.
ooutlook = .NULL.
Name = "frmOutlookOrnek"
DIMENSION aklasorler[1]
ADD OBJECT shape1 AS shape WITH ;
Top = 381, ;
Left = 6, ;
Height = 57, ;
Width = 507, ;
Anchor = 10, ;
Name = "Shape1"
ADD OBJECT opgklasor AS optiongroup WITH ;
ButtonCount = 2, ;
Value = 1, ;
Height = 30, ;
Left = 6, ;
Top = 132, ;
Width = 202, ;
Name = "opgKlasor", ;
Option1.Caption = "Ortak Klasör", ;
Option1.Value = 1, ;
Option1.Height = 17, ;
Option1.Left = 5, ;
Option1.Top = 5, ;
Option1.Width = 91, ;
Option1.Name = "optOrtakKlasor", ;
Option2.Caption = "Kişisel Klasör", ;
Option2.Height = 17, ;
Option2.Left = 102, ;
Option2.Top = 6, ;
Option2.Width = 97, ;
Option2.Name = "optKisiselKlasor"
ADD OBJECT label1 AS label WITH ;
Caption = "Outook Klasörü", ;
Height = 17, ;
Left = 6, ;
Top = 168, ;
Width = 96, ;
Name = "Label1"
ADD OBJECT cboklasor AS combobox WITH ;
Anchor = 10, ;
ColumnCount = (ALEN(ThisForm.aKlasorler,2)), ;
RowSourceType = 5, ;
RowSource = "ThisForm.aKlasorler", ;
Value = 1, ;
Height = 24, ;
Left = 6, ;
NumberOfElements = (ALEN(ThisForm.aKlasorler)), ;
Style = 2, ;
Top = 186, ;
Width = 414, ;
Name = "cboKlasor"
ADD OBJECT cmdal AS commandbutton WITH ;
Top = 186, ;
Left = 429, ;
Height = 27, ;
Width = 84, ;
Anchor = 8, ;
Caption = "\<Al", ;
Name = "cmdAl"
ADD OBJECT grdkisiler AS grid WITH ;
ColumnCount = 4, ;
Anchor = 15, ;
DeleteMark = .F., ;
Height = 162, ;
Left = 6, ;
Panel = 1, ;
RecordSource = "Kisiler", ;
Top = 216, ;
Width = 510, ;
HighlightStyle = 1, ;
Name = "grdKisiler", ;
Column1.ControlSource = "Kisiler.cAd", ;
Column1.ReadOnly = .T., ;
Column1.Name = "Column1", ;
Column2.ControlSource = "Kisiler.cSoyad", ;
Column2.ReadOnly = .T., ;
Column2.Name = "Column2", ;
Column3.ControlSource = "Kisiler.cIsTelefonu", ;
Column3.Width = 121, ;
Column3.Name = "Column3", ;
Column4.ControlSource = "Kisiler.cResim", ;
Column4.Width = 202, ;
Column4.ToolTipText = "Çift tıklayarak resim seçebilirsiniz.", ;
Column4.Name = "Column4"
ADD OBJECT frmoutlookornek.grdkisiler.column1.header1 AS header WITH ;
Caption = "Ad", ;
Name = "Header1"
ADD OBJECT frmoutlookornek.grdkisiler.column1.text1 AS textbox WITH ;
BorderStyle = 0, ;
Margin = 0, ;
ReadOnly = .T., ;
ForeColor = RGB(0,0,0), ;
BackColor = RGB(255,255,255), ;
Name = "Text1"
ADD OBJECT frmoutlookornek.grdkisiler.column2.header1 AS header WITH ;
Caption = "Soyad", ;
Name = "Header1"
ADD OBJECT frmoutlookornek.grdkisiler.column2.text1 AS textbox WITH ;
BorderStyle = 0, ;
Margin = 0, ;
ReadOnly = .T., ;
ForeColor = RGB(0,0,0), ;
BackColor = RGB(255,255,255), ;
Name = "Text1"
ADD OBJECT frmoutlookornek.grdkisiler.column3.header1 AS header WITH ;
Caption = "İş Telefonu", ;
Name = "Header1"
ADD OBJECT frmoutlookornek.grdkisiler.column3.text1 AS textbox WITH ;
BorderStyle = 0, ;
Margin = 0, ;
ReadOnly = .F., ;
ForeColor = RGB(0,0,0), ;
BackColor = RGB(255,255,255), ;
Name = "Text1"
ADD OBJECT frmoutlookornek.grdkisiler.column4.header1 AS header WITH ;
Caption = "Resim", ;
Name = "Header1"
ADD OBJECT frmoutlookornek.grdkisiler.column4.text1 AS textbox WITH ;
BorderStyle = 0, ;
Margin = 0, ;
ForeColor = RGB(0,0,0), ;
BackColor = RGB(255,255,255), ;
Name = "Text1"
ADD OBJECT cmdver AS commandbutton WITH ;
Top = 439, ;
Left = 426, ;
Height = 27, ;
Width = 84, ;
Anchor = 12, ;
Caption = "\<Ver", ;
Name = "cmdVer"
ADD OBJECT oleprogreebar AS olecontrol WITH ;
Top = 386, ;
Left = 10, ;
Height = 20, ;
Width = 494, ;
TabIndex = 13, ;
ZOrderSet = 10, ;
Anchor = 10, ;
Name = "oleProgreeBar"
ADD OBJECT lblkayit AS label WITH ;
AutoSize = .T., ;
Caption = "Kayıt :", ;
Height = 17, ;
Left = 13, ;
Top = 414, ;
Width = 34, ;
Name = "lblKayit"
ADD OBJECT edtbilgi AS editbox WITH ;
Anchor = 10, ;
Enabled = .F., ;
Height = 120, ;
Left = 6, ;
ScrollBars = 0, ;
Top = 6, ;
Width = 505, ;
DisabledForeColor = RGB(0,0,0), ;
Name = "edtBilgi"
PROCEDURE isclassregistered
LParameters tcClass
#Define HKEY_CLASSES_ROOT -2147483648
#Define ERROR_SUCCESS 0
Declare Integer RegOpenKey In Win32API ;
Integer nHKey, String @cSubKey, Integer @nResult
Declare Integer RegCloseKey In Win32API ;
Integer nHKey
Local lnKey
lnKey = 0
llRetVal = (RegOpenKey(HKEY_CLASSES_ROOT, tcClass, @lnKey) = ERROR_SUCCESS)
If llRetVal
RegCloseKey(lnKey)
EndIf
Return llRetVal
ENDPROC
PROCEDURE klasoryaz
LParameters toHedefKlasor As Object, tcKlasorYolu As String
Local loKlasorler As Object, loKlasor As Object
m.loKlasorler = m.toHedefKlasor.Folders
m.tcKlasorYolu = IIf(Empty(m.tcKlasorYolu), "", m.tcKlasorYolu + "\") + m.toHedefKlasor.Name
ThisForm.aKlasorler[ALen(ThisForm.aKlasorler)] = m.tcKlasorYolu
For Each m.loKlasor In m.loKlasorler
Dimension ThisForm.aKlasorler[ALen(ThisForm.aKlasorler) + 1]
ThisForm.KlasorYaz(m.toHedefKlasor.Folders(m.loKlasor.Name), m.tcKlasorYolu)
EndFor
ENDPROC
PROCEDURE klasorbul
LParameters toHedefKlasor As Object, tcKlasorYolu As String
m.tcKlasorYolu = IIf(Empty(m.tcKlasorYolu), '', m.tcKlasorYolu + '\') + m.toHedefKlasor.Name
If m.tcKlasorYolu = ThisForm.aKlasorler(ThisForm.cboKlasor.Value)
Return m.toHedefKlasor
Else
Local loKlasorler As Object, loKlasor As Object, lvSonuc As Variant
m.loKlasorler = m.toHedefKlasor.Folders
For Each m.loKlasor In m.loKlasorler
m.lvSonuc = ThisForm.KlasorBul(m.toHedefKlasor.Folders(m.loKlasor.Name), m.tcKlasorYolu)
If VarType(m.lvSonuc) = "O"
Return m.lvSonuc
EndIf
EndFor
EndIf
ENDPROC
PROCEDURE al
Local loContancs As Object, loContanc As Object
With ThisForm
.oContanc = .KlasorBul(.oNameSpace.GetDefaultFolder(.nKlasor), '')
m.loContanc = .oContanc.Items.Restrict("[MessageClass] >= 'IPM.Contact' AND [MessageClass] <= 'IPM.Contact'")
.grdKisiler.RecordSource = ""
.TabloOlustur
For Each m.loContanc IN m.loContanc
Insert Into Kisiler Values(m.loContanc.FirstName, m.loContanc.LastName, ;
m.loContanc.BusinessTelephoneNumber, IIf(m.loContanc.HasPicture, "Daha önce tanımlanmış resmi var!", ""))
EndFor
Go Top In Kisiler
With .grdKisiler
.RecordSource = "Kisiler"
.Column1.ControlSource = "Kisiler.cAd"
.Column2.ControlSource = "Kisiler.cSoyad"
.Column3.ControlSource = "Kisiler.cIsTelefonu"
.Column4.ControlSource = "Kisiler.cResim"
EndWith
EndWith
ENDPROC
PROCEDURE tabloolustur
Create Cursor Kisiler (cAd C(50), cSoyad C(50), cIsTelefonu C(20), cResim C(254))
ENDPROC
PROCEDURE ver
With ThisForm
.oContanc = .KlasorBul(.oNameSpace.GetDefaultFolder(.nKlasor), '')
If RecCount("Kisiler") > 0
.oleProgreeBar.Max = RecCount("Kisiler")
EndIf
Go Top In Kisiler
Do While !EOF("Kisiler")
.oleProgreeBar.Value = Int(.oleProgreeBar.Value) + 1
.lblKayit.Caption = "Kayıt : " + AllTrim(Transform(.oleProgreeBar.Value, "99,999")) + " / " + ;
AllTrim(Transform(.oleProgreeBar.Max, "99,999")) + " " + AllTrim(Kisiler.cAd) + " " + AllTrim(Kisiler.cSoyad)
m.lcKosul = "[FirstName] = '" + AllTrim(Kisiler.cAd) + "' And [LastName] = '" + AllTrim(Kisiler.cSoyad) + "'"
m.loItem = .oContanc.Items.Find(m.lcKosul)
If IsNull(m.loItem)
m.loItem = .oContanc.Items.Add
EndIf
With m.loItem
.FirstName = AllTrim(Kisiler.cAd)
.LastName = AllTrim(Kisiler.cSoyad)
.BusinessTelephoneNumber = AllTrim(Kisiler.cIsTelefonu)
If File(Kisiler.cResim)
Try
.AddPicture(AllTrim(Kisiler.cResim))
Catch
EndTry
EndIf
.Save
EndWith
Skip In Kisiler
EndDo
MessageBox("İşlem tamamlandı!", 64, "BİLGİ")
EndWith
ENDPROC
PROCEDURE Load
With ThisForm
If !.IsClassRegistered("Outlook.Application")
MessageBox( "Sisteminizde Outlook yüklü değildir.", 16, "Hata")
Return .F.
EndIf
.TabloOlustur
DoDefault()
EndWith
ENDPROC
PROCEDURE Destroy
With ThisForm
.oContanc = .Null.
.oNameSpace = .Null.
.oOutlook = .Null.
DoDefault()
EndWith
ENDPROC
PROCEDURE Init
With ThisForm
.edtBilgi.Value = ;
"Outlook Klasörünü seçip 'Al' düğmesine basarak kişi bigilerini alın." + Chr(13) + ;
Chr(13) + ;
"'İş Telefonu' ve 'Resim' bilgilerini değiştirerek 'Ver' düğmesine basarak bilgileri güncelleyin." + Chr(13) + ;
Chr(13) + ;
"Resim seçmek için resim hücresine çift tıklayabilirsiniz." + Chr(13) + ;
Chr(13) + ;
"Haser Yazılım Temmuz 2008"
.oOutlook = CreateObject("Outlook.Application")
.oNameSpace = .oOutlook.GetNameSpace("MAPI")
Try
.KlasorYaz(.oNameSpace.GetDefaultFolder(18), "")
.nKlasor = 18
Catch
Try
.KlasorYaz(.oNameSpace.GetDefaultFolder(10), "")
.nKlasor = 10
.opgKlasor.Value = 2
.opgKlasor.optOrtakKlasor.Enabled = .F.
Catch
MessageBox("Outlook ayarlarınız tam değil!", 48, "Uyarı")
Return .F.
EndTry
EndTry
.cboKlasor.NumberOfelements = ALen(.aKlasorler)
EndWith
ENDPROC
PROCEDURE cmdal.Click
ThisForm.Al
ENDPROC
PROCEDURE text1.DblClick
Local lcResim As String
m.lcResim = GetPict()
If !Empty(m.lcResim)
Replace cResim With m.lcResim In Kisiler
This.Refresh
EndIf
ENDPROC
PROCEDURE cmdver.Click
ThisForm.Ver
ENDPROC
ENDDEFINE
*
*-- EndDefine: frmoutlookornek
**************************************************