Avatar billede rvm Nybegynder
16. oktober 2007 - 09:43 Der er 3 kommentarer og
1 løsning

Sætte focus på en control på en dialogboks i PowerPoint

Jeg gentager dette spørgsmål (http://www.eksperten.dk/spm/800359) her, da jeg vist er kommet til at sætte det i den forkerte kategori, ved at sætte det under office.

Jeg håber meget at en af jer hajer kan hjælpe mig det sidste stykke.

Jeg giver selvfølgelig point til begge kategorier og håber derfor ikke at jeg bliver "overfaldet" fordi jeg har fremsat spørgsmålet i 2 kategorier :-)
Avatar billede jakoba Nybegynder
16. oktober 2007 - 12:53 #1
Powerpoint er en del af Office pakken, så umiddelbart vil jeg tro du placerede spørgsmålet korrrekt første gang.

Men selve spørgsmålet haldler nok ligesåmeget om programmereingssproget VBScript i forbindelse med powerpoint, og VBScript er der en kategori for:
    http://www.eksperten.dk/spm/Programmering/Script/VBscript/

Så jeg vil anbefale at du:
1) svarer selv her og dermed sletter dette spørgsmål.
2) accepterer det svar du allerede har fået i Office kategorien.
3) stillet et nyt "Hvordan sætter jeg focus" spørgsmål i VBScript kategorien (husk at nævne det er til powerpoint, selvom det ikke burde gøre nogen forskel.)

mvh JakobA
Avatar billede rvm Nybegynder
16. oktober 2007 - 13:14 #2
Tak for din tilbagemelding, men PowerPoint bruger faktisk også VBA (som jeg koder i) og VBA ligger meget tæt på VB, hvorfor Windows API'er (som nok er det jeg søger) også virker i PowerPoint.

Jeg spurgte i denne kategori, fordi programmeringshajerne måske ikke har så meget fokus på PowerPoint kategorien (hvor jeg ikke har kunnet få svar).
Avatar billede rvm Nybegynder
20. november 2007 - 11:10 #3
her er løsningen:

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long

Dim m_strTabName As String 'Lokal var til at angive tab-navnet

Sub ShowFileNewGraf()
Dim strChosenTab As String

    On Error GoTo Error
'    Application.CommandBars("Menu bar").Controls("Insert").Controls("Slides from Files...").Execute
    Application.CommandBars("Menu bar").Controls("Indsæt").Controls("Dias fra filer...").Execute

    DoEvents
'    strChosenTab = GetText("Slide Finder")
    strChosenTab = GetText("Diassøgning")
   
'    If strChosenTab = "Liste over foretrukne" Then
    If strChosenTab = "&Filer:" Then
        SendKeys ("^{TAB}")
        DoEvents
       
    End If
   
   
    SendKeys ("%F")
    SendKeys ("H:\PowerPoint\Grafer\Grafer.pot")
    SendKeys ("%V") 'Sender Alt + D = Display
   
    GoTo Slut
Error:
    MsgBox Err.Number
Slut:
End Sub
Sub ShowFileNewDiagram()
Dim strChosenTab As String

    On Error GoTo Error
'    Application.CommandBars("Menu bar").Controls("Insert").Controls("Slides from Files...").Execute
    Application.CommandBars("Menu bar").Controls("Indsæt").Controls("Dias fra filer...").Execute

    DoEvents
'    strChosenTab = GetText("Slide Finder")
    strChosenTab = GetText("Diassøgning")
   
'    If strChosenTab = "Liste over foretrukne" Then
    If strChosenTab = "&Filer:" Then
        SendKeys ("^{TAB}")
        DoEvents
       
    End If
   
   
    SendKeys ("%F")
    SendKeys ("H:\PowerPoint\Grafer\Grafer.pot")
    SendKeys ("%V") 'Sender Alt + D = Display
   
    GoTo Slut
Error:
    MsgBox Err.Number
Slut:
End Sub
Public Function GetText(sApplicationName As String) As String


    'Nulstiller tabnavn
    m_strTabName = ""
   
    'Check if the window exists
    If FindWindow(vbNullString, sApplicationName) <> 0 Then
        'Enumerate the Child Windows
        EnumChildWindows FindWindow(vbNullString, sApplicationName), AddressOf EnumChildProc, ByVal 0&
    End If
       
    'Returnerer tabnavn
    GetText = m_strTabName
End Function
Public Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
    Dim sReturn As String
   
    'Get the windowtext length
    sReturn = Space$(GetWindowTextLength(hwnd) + 1)
    'get the window text
    GetWindowText hwnd, sReturn, Len(sReturn)
    'remove the last Chr$(0)
    sReturn = Left$(sReturn, Len(sReturn) - 1)
    Debug.Print sReturn
    'Debug.Print sReturn
    'Gemmer fanenavnet. Det er det første navn, der findes frem
    If m_strTabName = "" Then m_strTabName = sReturn
   
    'continue enumeration
    EnumChildProc = 1
End Function
Avatar billede rvm Nybegynder
20. november 2007 - 11:10 #4
et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester