Announcement

Collapse
No announcement yet.

in delphi alle mir verfügbaren öffentlichen ordner von Outlook anzeigen lassen listbox ... etc

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • in delphi alle mir verfügbaren öffentlichen ordner von Outlook anzeigen lassen listbox ... etc

    habe ein problem.-. ich kann in meinem kalender termine hinzufuegen -
    das ganze soll aber auch in anderen oeffentlichen ordnern funktionieren.
    Nur nicht in dem ich alle einzeln vorher benenne sondern sie mir in einer listbox. oder wie in dem fall jetzt im treeview aufgelistet werden und ich dort den jeweiligen auswaehlen kann..
    mit der rechtervergabe geh ich mal zweitranging um.. erstmal interessiert es mich wie ich alle ordner finde.. momentan zeigt er mir nur die parentpfade an

    der quellcode sieht so aus.. ich hab hier im forum schon einiges gefunden und mit verwendet aber der letzte punkt klappt halt noch nich
    <BR> ////////////////////////////////////////////////<BR>
    procedure TFmFolders.FormCreate(Sender: TObject);<BR>
    begin<BR>
    <PRE> aOutlook := CoApplication_.Create;<BR>
    aMapi := aOutlook.GetNameSpace('MAPI');<BR>
    OutlookTreeErstellen;</PRE> <BR>
    end;<BR>

    procedure TFmFolders.OutlookTreeErstellen;<BR>
    begin<BR>
    <PRE> OutlookTreeView.Items.BeginUpdate;<BR>
    OutlookTreeHinzufuegen(nil, aMapi.Folders);<BR>
    OutlookTreeView.Items.EndUpdate;<BR>
    OutlookTreeView.SortType := stText;</PRE> <BR>
    end;

    procedure TFmFolders.OutlookTreeHinzufuegen(Eltern:TTreeNode ; Folder:OLEVariant);<BR>
    var<BR>
    i : integer;<BR>
    node : TTreeNode;<BR>
    entryID : string;<BR>
    begin<BR>
    <PRE> for i:=1 to Folder.Count do begin<BR>
    entryID := Folder.Item[i].EntryID;<BR>
    node := OutlookTreeView.Items.AddChildObject(Eltern,Folder .Item [i].Name, StrNew(PChar(entryID)));<BR>
    with node do begin<BR>
    node.HasChildren := Folder.Item[i].Folders.Count>0;</PRE> <BR>
    end;<BR>
    end;<BR>
    end;<BR>

    procedure TFmFolders.OutlookTreeViewExpanding(Sender: TObject;
    Node: TTreeNode; var AllowExpansion: Boolean);<BR>
    var<BR>
    folder : OLEVariant;<BR>
    entryID : string;<BR>
    begin<BR>
    <PRE> entryID := StrPas(Node.Data);<BR>
    folder := aMapi.GetFolderFromID(entryID,folder);<BR>
    OutlookTreeHinzufuegen(Node,folder.folders);</PRE> <BR>
    end;<BR>
    ///////////////////////////////////////////////<BR>

    wenn ich zu konfus schreibe.. einfach nochmal nachfrage..

    cu manu

  • #2
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Outlook8_tlb, Graphics, ComObj, Controls, Forms, Dialogs,
    ComCtrls, ExtCtrls, StdCtrls;

    type
    TForm1 = class(TForm)
    Panel1: TPanel;
    TreeView1: TTreeView;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure TreeView1Expanding(Sender: TObject; Node: TTreeNode;
    var AllowExpansion: Boolean);
    procedure OutlookTree_Populate;
    procedure OutlookTree_AddNode(ParentNode:TTreeNode;
    Folder:OLEVariant);
    private
    { Private-Deklarationen }
    public
    aOutlook : _DApplication;
    aMapi : NameSpace;
    aFolder : MapiFolder;
    namespace : OLEVariant;
    aCalender : AppointmentItem;
    end;

    var
    Form1: TForm1;
    implementation

    {$R *.DFM}

    procedure TForm1.OutlookTree_AddNode(ParentNode:TTreeNode;
    Folder:OLEVariant);
    var
    i : integer;
    node : TTreeNode;
    entryID : string;
    begin
    for i:=1 to Folder.Count do begin
    entryID := Folder.Item[i].EntryID;
    node := TreeView1.Items.AddChildObject(ParentNode,
    Folder.Item[i].Name, StrNew(PChar(entryID)));
    with node do begin
    node.HasChildren := Folder.Item[i].Folders.Count>0;
    end;
    end;
    end;

    procedure TForm1.OutlookTree_Populate;
    begin
    TreeView1.Items.BeginUpdate;
    OutlookTree_AddNode(nil, NameSpace.Folders);
    TreeView1.Items.EndUpdate;
    TreeView1.SortType := stText;
    end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    aOutlook := CoApplication_.Create;
    NameSpace := aOutlook.GetNamespace('Mapi');
    OutlookTree_Populate;
    end;

    procedure TForm1.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
    var AllowExpansion: Boolean);
    var
    folder : OLEVariant;
    entryID : string;
    begin
    entryID := StrPas(Node.Data);
    folder := namespace.GetFolderFromID(entryID);
    OutlookTree_AddNode(Node, folder.Folders);
    end;

    end

    Comment

    Working...
    X