Friday, December 29, 2006

Hvis man installerer WSS3 (Windows SharePoint Services) har man en indbygget site collection til at skabe en blog. Den har jeg brugt et par gange efterhånden og den virker fint. Dog er der en ting der har irriteret mig - nemlig at man som udgangspunkt kun kan tilknytte en enkelt kategori til et indlæg. Men nu er SharePoint jo nem at tilrette så her er en kort forklaring på hvordan du gør:

  1. Vælg "View All Site Content" for at finde listen "Posts" (alt i SharePoint er lister og til en blog oprettes der automatisk en liste med indlæg, kategorier, kommentarer og så videre)
  2. Klik på "Posts" listen og vælg "List settings" på Settings-menuen
  3. Klik på "Category" i Columns-tabellen
  4. Sæt kryds i "Allow multiple values" og klik Ok

category.jpg

Nu kan et indlæg placeres i flere kategorier.

Længe leve SharePoint ;)

posted on Friday, December 29, 2006 10:48:09 AM (Romance Standard Time, UTC+01:00)  #    Comments [0]
 Monday, December 25, 2006

Jeg har tidligere snakket lidt om bøger til WSS3 (2007) og til MOSS, og faldt i dag over en (ligner det) komplet liste over bøger (i skrivende stund 31 titler). Det er Mike Walsh der står bag et stort site om WSS3 der vedligeholder listen - du kan finde den her.

posted on Monday, December 25, 2006 10:43:38 PM (Romance Standard Time, UTC+01:00)  #    Comments [0]
 Friday, December 22, 2006

Jeg bliver løbende spurgt hvordan man nemmest flytter data fra en SQL Server Express til en SQL Server i produktion. Indtil for nylig har jeg henvist til et par scripts og makroer, men nu har SQL Teamet (endelig) frigivet en RC (release candidate) af SQL Server Hosting Toolkit som kan kan hjælpe med til at flytte både skema og data til produktion.

SQLServerHostingToolkit.jpg

Læs mere på ScottGu's blog hvor han (og hans medarbejdere) altid bruger meget energi på at gøre blogindlæg til spændende og informativ læsning. Hvis du er ASP.NET-udvikler bør du kende Scott Guthrie - det er i høj grad hans fortjeneste at ASP.NET er så effektivt som det er i dag. Læs løbende hans blog - den er guld værd.

posted on Friday, December 22, 2006 9:51:30 PM (Romance Standard Time, UTC+01:00)  #    Comments [0]

Faldt over en video via Coding4Fun som satte lidt fut i kreativiteten.

Se video her

Julelys er styret af et par interface Kits fra Phidget og noget C#-kode. Det var da et meget sjovt projekt at kaste sig over - eller.. ;)

Hvis du ikke kender Coding4Fun så skulle du måske bruge lidt af din ferie på sitet - der er altså nogle fede projekter som man hurtigt bliver inspireret af.

God jul.

posted on Friday, December 22, 2006 9:16:32 PM (Romance Standard Time, UTC+01:00)  #    Comments [0]
 Tuesday, December 19, 2006

gblogo.gifHar lige siddet og leget lidt med den nye skabelon til WSS 3 kaldet Microsoft GroupBoard Workspace. Den giver mulighed for at oprette et site som gør det nemt for et team at samarbejde. Der eksempelvis kalender, styring af ressourcer (mødelokaler, projektor mv), timekort, og en del mere. Den virker ret brugbar og så er den ligesom WSS3 jo gratis. Prøv den selv.

Nu venter vi så med spænding på Fabulous 40 Application Templates.

posted on Tuesday, December 19, 2006 2:08:50 PM (Romance Standard Time, UTC+01:00)  #    Comments [0]
 Saturday, December 16, 2006

Som aftalt er her VB-koden til synkronisering af ribbon. Denne kode er til en PowerPoint add-in som indsætter en dato i det aktuelle slide. Se de tidligere indlæg for en nærmere forklaring på koden.

Først ThisAddIn.vb:

Public Class ThisAddIn

  
Public WithEvents ctp As
Microsoft.Office.Tools.CustomTaskPane
  
Private cal As
MonthCalendar
  
Private WithEvents btn As
Button

  
Private Sub ThisAddIn_Startup(ByVal sender As Object,
 
ByVal e As System.EventArgs) Handles Me
.Startup

    cal =
New
MonthCalendar()
    cal.Left = 10
    cal.Top = 10

    btn =
New
Button()
    btn.Text =
"Klik på mig"
    btn.Left = 10
    btn.Top = cal.Height + 20

    
Dim ctrl As UserControl = New
UserControl
    ctrl.Controls.Add(cal)
    ctrl.Controls.Add(btn)
    ctp =
Me.CustomTaskPanes.Add(ctrl, "min test"
)
    ctp.Visible =
False

  End
Sub

  Private Sub ThisAddIn_Shutdown(ByVal sender As Object,
 
ByVal e As System.EventArgs) Handles Me
.Shutdown
    
Me
.CustomTaskPanes.Remove(ctp)
  
End
Sub

  Private Sub btn_Click(ByVal sender As Object,
 
ByVal e As System.EventArgs) Handles
btn.Click
    
Dim textbox As
Microsoft.Office.Interop.PowerPoint.Shape = _
    Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange(1)
    Globals.ThisAddIn.Application.ActiveWindow.Selection.TextRange.Text _
    = cal.SelectionStart.ToLongDateString
  
End
Sub

  Private Sub ctp_VisibleChanged(ByVal sender As Object,
 
ByVal e As System.EventArgs) Handles
ctp.VisibleChanged
    ribbon.IsVisible =
Not
ribbon.IsVisible
  
End
Sub

End
Class

Så Ribbon.xml

<customUI xmlns="http://schemas.microsoft.com/
office/2006/01/customui
" onLoad="OnLoad">
  <
ribbon>
    <
tabs>
      <
tab idMso="TabAddIns">
        <
group id="MyGroup"
               label="My Group">
          <
toggleButton id="toggleButton1"
                        
size="large"
                        label="My Button"
                        screentip="My Button Screentip"
                        onAction="OnToggleButton1"
                        
imageMso="HappyFace"
                        
getPressed="getpressed" />
        </
group>
      </
tab>
    </
tabs>
  </
ribbon>
</
customUI>

Slutteligt den del af ribbon1.vb som er tilføjet/rettet:


  
Private _isVisible As Boolean
  Public Property IsVisible() As Boolean
    Get
      Return _isVisible
    
End Get
    Set(ByVal value As Boolean)
      _isVisible = value
      ribbon.InvalidateControl(
"toggleButton1")
    
End Set
  End Property

  Public Function getpressed(ByVal control As
 
 Office.IRibbonControl) As Boolean
    Return IsVisible
  
End Function

  Public Sub OnToggleButton1(ByVal control As Office.IRibbonControl,
  
ByVal isPressed As Boolean)
    Globals.ThisAddIn.ctp.Visible = isPressed
  
End Sub

posted on Saturday, December 16, 2006 5:46:44 PM (Romance Standard Time, UTC+01:00)  #    Comments [0]

I tidligere indlæg har vi set på brugen af custom task pane og ribbon, men mangler at sørge for automatisk synkronisering af den oprettede ribbon knap således, at når brugeren lukker custon task pane-vinduet ved at klikke på krydset så er dette afspejlet af knappen. Gør som følger:

  • Tilret ribbon1.xml således, at der oprettes en call back metode kaldet getpressed. Denne metode kaldes af Office enten når der er behov for det eller vi konkret beder om det (ved at bruge Invalidate jf. senere)

<customUI xmlns="http://schemas.microsoft.com/office/
2006/01/customui
" onLoad="OnLoad">
  <
ribbon>
    <
tabs>
      <
tab idMso="TabAddIns">
        <
group id="MyGroup"
               label="My Group">
          <
toggleButton id="toggleButton1"
                        
size="large"
                        label="My Button"
                        screentip="My Button Screentip"
                        onAction="OnToggleButton1"
                        
imageMso="HappyFace"
                        
getPressed="getpressed" />
        </
group>
      </
tab>
    </
tabs>
  </
ribbon>
</
customUI>

  • Opret nu et felt med tilhørende egenskab i Ribbon1-klassen. Når feltet tildeles en værdi kaldes samtidigt invalidate som vil gennemtvinge et kald til den føromtalte getpressed

    private bool isVisible;

    
public bool IsVisible
    {
      
get { return isVisible; }
      
set {
        ribbon.InvalidateControl(
"toggleButton1");
        isVisible =
value; }
    }

  • Opret getpressed-metoden i Ribbon1-klassen og returner IsVisible

public bool getpressed(Office.IRibbonControl control)
{
  
return IsVisible;
}

  • Nu mangler vi blot at fange den hændelse som custom task pane-vinduet smider når det bliver lukket. Tilføj en eventhandler til ThisAddIn_StartUp i ThisAddIn-klassen

ctp.VisibleChanged += new EventHandler(ctp_VisibleChanged);

  • Og tilføj følgende metode der ændre værdien af isVisible (som igen sørger for at kalde InvalidateControl)

void ctp_VisibleChanged(object sender, EventArgs e)
{
  ribbon.IsVisible = !ribbon.IsVisible;
}

Nu vil ToggleButton-kontrollen blive synkroniseret når custom task pane-vinduet lukker.

Du kan læse mere om ribbon callback metoder her:

 

posted on Saturday, December 16, 2006 5:13:59 PM (Romance Standard Time, UTC+01:00)  #    Comments [0]
 Friday, December 15, 2006

Så blev SP1 frigivet til VS 2005 (pro og op - der er frigivet en separat SP til Express). Find den her og find readme om opdateringen her.

posted on Friday, December 15, 2006 8:41:32 PM (Romance Standard Time, UTC+01:00)  #    Comments [2]

Så lige at Ted Pattison har en artikel i MSDN Mag der giver en intro til generering af Word dokumenter med .NET 3. Har ikke selv læst den endnu, men vi snakkede en del om fremgangsmåden på Mød Microsoft. Måske er artiklen det du behøver for at komme igang? Se

http://msdn.microsoft.com/msdnmag/issues/06/11/BasicInstincts/

posted on Friday, December 15, 2006 9:27:11 AM (Romance Standard Time, UTC+01:00)  #    Comments [0]
 Thursday, December 14, 2006

I indlægget om "Simpel demo af Custom Task Pane" mangler der som nævnt at kunne åbne og lukke custom task pane-vinduet med en Ribbon-knap. Det er heldigvis en simpel opgave:

  • Tilføj Ribbon-support ved "Add new item"->"Ribbon support"
  • Sørg for, at partial definitationen af ThisAddIn-klassen udkommenteres (jf. kommentarerne i ribbon1.cs)
  • Sørg for at ctp-variablen i ThisAddIn.cs er defineres som public
  • Ret ctp.Visible = true til ctp.Visible = false i ThisAddIn_StartUp (ThisAddIn.cs)
  • Ret OnToggleButton1-metoden i ribbon1.cs i Ribbon callbacks-regionen til følgende

public void OnToggleButton1(Office.IRibbonControl control, bool isPressed)
{
  
Globals.ThisAddIn.ctp.Visible = isPressed;
}

  • Bemærk brugen af Globals der som nævnt under foredraget er en indgang til diverse objekter - herunder ThisAddIn
  • Tryk på F5 og find den nye knap i Add-Ins-tabben. Klik på knappen hvorefter vores custom task pane vil dukke op. Endnu et klik vi fjerne vinduet igen

exceladdin2.jpg

Det var jo nemt nok men opgaven er desværre ikke løst helt korrekt - prøv at lukke custom task pane-vinduet ved at klikke på det lille kryds i højre hjørne. Vinduet lukker korrekt men bemærk at vores togglebutton i Ribbon ikke synkroniseres og viser at vinduet er lukket. Det kræver en ekstra indsats som jeg vender retur til i næste indlæg.

posted on Thursday, December 14, 2006 10:38:19 AM (Romance Standard Time, UTC+01:00)  #    Comments [0]
 Tuesday, December 12, 2006

Jeg lovede på Mød Microsoft at publisere noget af demokoden. Vi starter lidt blidt med at vise meget simpel brug af Custom Task Pane i en Excel add-in.

Gør som følger:

  • Sørg for at have Office 2007, VS (pro eller højere) og VSTO 2005 SE installeret
  • Lav et C# 2007 Excel Add-in Projekt (skal nok skifte lidt mellem sprogene - næste gang bliver det i VB)
  • Definer tre variabler private for ThisAddIn-klassen (eksempelvis lige over ThisAddIn_Startup-metoden)


Microsoft.Office.Tools.CustomTaskPane ctp;
MonthCalendar cal;
Button btn;

  • Tilføj følgende kode til ThisAddIn_Startup

// Kalender
cal = new MonthCalendar();
cal.Left = 10;
cal.Top = 10;
// Knap
btn = new Button();
btn.Text =
"Klik på mig";
btn.Left = 10;
btn.Top = cal.Height + 20;
btn.Click +=
new EventHandler(btn_Click);
// Brugerkontrol med kalender og knap
UserControl ctrl = new UserControl();
ctrl.Controls.Add(cal);
ctrl.Controls.Add(btn);
// Tilføj kontrol til Custom Task Pane og vis den
ctp = this.CustomTaskPanes.Add(ctrl, "min test");
ctp.Visible =
true;

  • Tilføj følgende eventhandler

void btn_Click(object sender, EventArgs e)
{
  
this.Application.ActiveCell.Value2 =
      cal.SelectionStart.ToShortDateString();
}

  • Tilføj følgende til ThisAddIn_ShutDown

this.CustomTaskPanes.Remove(ctp);

  • Klik på F5

Nu vil add-in'en blive installeret og en kalender og en knap vil være tilgængelig i en custom task pane. Når der klikkes på knappen indsættes den i kalenderen valgte dato.

exceladdin1.jpg

Add-in'en er ikke særlig praktisk fordi der blandt andet oprettes en custom task pane i Addin_Startup, og den eneste måde brugeren kan styre om vinduet skal være tilgængeligt eller ej er ved at starte og stoppe add-in'en og det er naturligvis ikke så godt. Bedre var det hvis vinduet kunne styres af brugeren gennem en knap på ribbon - og det handler næste indlæg om.

I øvrigt: Hvis du gerne vil slette en installeret add-in så klik på Office-knappen og vælg Excel options. Herefter klikker du på Add-ins-fanen og vælger COM add-ins i Manage-listen (nederst) og klikker på Go... Nu kan den ønskede add-in fjernes.

Ovennævnte kode er i øvrigt fra en artikel til det Alt om DATA som kommer primo januar.

 

posted on Tuesday, December 12, 2006 11:15:48 AM (Romance Standard Time, UTC+01:00)  #    Comments [0]
 Saturday, December 09, 2006

Som nævnt under VSTO præsentationer på Mød Microsoft er der to VSTO bøger som jeg mener er interessante

Sidstnævnte er først tilgængelig i løbet af december.

Nu tyder det på at der er en ny (og mere bred) på vej som også ser interessant ud

Bogen handler både om VSTO (SE) og WSS/MOSS og ud fra indholdsfortegnelsen at dømme er den spændende. Det er en APress-bog og skulle komme i løbet af foråret.

posted on Saturday, December 09, 2006 3:14:40 PM (Romance Standard Time, UTC+01:00)  #    Comments [0]
 Friday, December 08, 2006

I går gik Microsoft Office Open XML igennem nåleøjet hos ECMA, og er nu en godkendt standard. Læs pressemeddelelsen her. Næste skridt er en ISO certificering.

Læs i øvrigt også hvad IBM syntes om certificeringen.

posted on Friday, December 08, 2006 1:56:58 PM (Romance Standard Time, UTC+01:00)  #    Comments [0]
 Thursday, December 07, 2006

I dag blev Mød Microsoft afholdt i København, og jeg talte endnu engang på to sessioner om VSTO-udvikling (samt en del andet). Syntes igen det gik fint - mange mennesker, god stemning, alle demoer kørte, og jeg vrøvlede ikke for meget (syntes jeg da selv).

Jeg vil som aftalt over de næste dage uploade noget af demokoden.

Husk, at slide og links kan findes her, og slides fra de andre præsentationer kan findes gennem Dorthes blog.

posted on Thursday, December 07, 2006 8:53:17 PM (Romance Standard Time, UTC+01:00)  #    Comments [2]
 Wednesday, December 06, 2006

http://us1.trymicrosoftoffice.com/

kan man finde forskellige Office 2007 applikationer i en 60 dags prøveversion - herunder Office 2007 Professional.

Jeg må dog indrømme at jeg ikke har hentet en prøveversion så jeg skal ikke sige om det spiller som forventet (umiddelbart kan jeg ikke finde info omkring muligheden for at downloade til europa). Hvis du prøver så smid lige en kommentar med dine erfaringer.

Til orientering så ligger den også på MSDN men det kræver det rigtige abonnement.

posted on Wednesday, December 06, 2006 9:05:14 PM (Romance Standard Time, UTC+01:00)  #    Comments [0]
 Tuesday, December 05, 2006

Jeg er retur i Odense fra den første Mød Microsoft om Office 2007-udvikling som blev afholdt i Århus i dag, og jeg syntes virkelig det har været en god dag. Der var både gode sessioner og mange mange mennesker.

Jeppe Rørbæk indledte og Pau Larsen lagde herefter ud med en introduktion til 2007 Microsoft Office System, og Rene Løhde fulgte efter med en kort session om Office Open XML. Herefter startede de to spor hvor Erik Westermann fra Teknologisk Institut og Henrik Sørensen fra Option delte server (WSS 3.0 og MOSS) og jeg tog mig af klientdelen. Der var nogenlunde lige mange personer på de to spor. Nikolaj Winnes lukkede og slukkede med en OBA-session (Office Business Application) for alle.

Hos mig på klient-sporet syntes jeg vi kom godt rundt om det hele – jeg kunne allerede efter første session dog se at jeg ville løbe ind i et problem med tiden – så jeg skar pause med 15 min. Men så passede det også fint. Alle demoerne kørte som forventet, og jeg tror at dispositionen var ok. Nu må vi se hvad evalueringerne siger (hvis du var med så husk endelig at lave en evaluering – det er den eneste måde vi bliver bedre på).

Jeg lovede at blogge et enkelt link – nemlig The Office 2007 UI Bible. Det er en god Ribbon-ressource som jeg havde glemt at tage med på mine slides (som du i øvrigt kan finde her).

Slutteligt lovede jeg at smide noget af demokoden op, og så snart vi har været i København (torsdag) "gør jeg noget".

Husk – hvis du endnu ikke er meldt til Mød Microsoft i København torsdag – så kan du nå det endnu.

posted on Tuesday, December 05, 2006 8:23:49 PM (Romance Standard Time, UTC+01:00)  #    Comments [1]
 Monday, December 04, 2006

I morgen går det løs med Mød Microsoft i Århus. Som før nævnt har jeg to sessioner omkring Office 2007 klient udvikling. Vi har denne gang valgt at samle links til slides med videre på Dorthes blog

http://blogs.msdn.com/msdneventsdk/default.aspx

Her burde dukke et indlæg op i løbet af kort tid med oplysninger om hvor på MSDN.dk slides kan findes. Indtil dette sker kan du finde slides i PDF her:

VSTO_moedms_dec2006_cronberg.pdf (2,37 MB)

Der findes en del links i mine slides, men jeg vil alligevel gentage dem i dette indlæg. Vender retur hvis der er spørgsmål eller kommentarer i Århus.

posted on Monday, December 04, 2006 3:48:44 PM (Romance Standard Time, UTC+01:00)  #    Comments [0]

En hurtig besked - Alt om DATA nr 17 er på gade og jeg har til orientering et par artikler i. Vores serie om ASP.NET2 udvikling er nået til nr 4 og handler denne gang om Master pages. Sidste del kommer i næste nummer. Yderligere er der en artikel fra Tech-Ed Barcelona.

I øvrigt starter jeg 2007 en ny serie - denne gang om udvikling på Office-2007-platformen. Der kommer til at være fem artikler omkring udvikling til både klient og server. Vender lige retur når jeg har fastlagt dispositionen. Giv mig endelig et prej hvis der er nogen specielle ønsker.

Jeg har åbnet mulighed for at skrive kommentarer til indlæg igen, men sidste gang blev jeg oversvømmet med spam. Vi må se hvordan det går nu.

posted on Monday, December 04, 2006 1:07:58 PM (Romance Standard Time, UTC+01:00)  #    Comments [1]
 Sunday, December 03, 2006

Hvis man har arbejdet som udvikler på et SharePoint-projekt inden Office 2007 kender man uden tvivl til SmartPart der giver mulighed for at benytte brugerkontroller i SharePoint 2.0 webparts. Tingene er jo noget nemmere i WSS 3.0 og MOSS regi fsva udvikling af webparts, men der er fra Microsoft fortsat ikke frigivet en komponent til at wrappe en ASP.NET 2.0 brugerkontrol til en kompileret webpart (den skulle dog være på vej efter hvad jeg har hørt).

Heldigvis har U2U som står bag SmartPart frigivet en ny version til Office 2007 så vi igen nemt kan benytte brugerkontroller som webparts i WSS/MOSS.

Se mere her hvor der også er link til en screencast.

posted on Sunday, December 03, 2006 9:12:51 PM (Romance Standard Time, UTC+01:00)  #    Comments [0]