Avatar billede christian_h Nybegynder
13. maj 2002 - 10:29 Der er 14 kommentarer og
2 løsninger

Frames

Hej Eksperter.

Jeg har en form med en del frames på, jeg har flere stedder brug for at disable nogle af disse frames ved tryk på en checkbox, dette er ikke noget problem, men jeg syntes ikke at det er så pænt at kontrollerne inde i den disablede frame stadig ser ud som om de er "aktive", derfor bruger jeg flg. kode:

Private Sub EnableFrameChildren(frm As Frame, bEnable As Boolean)
Dim c As Control
For Each c In Controls
    If c.Container.Name = frm.Name Then c.Enabled = bEnable
Next c
End Sub

og checkboxen :

Private Sub Check1_Click()
If Check1 = 1 Then
EnableFrameChildren Frame1, False
Else
EnableFrameChildren Frame1, True
End If
End Sub

Dette virker helt fint indtil man sætter CommonControl ind på formen, herefter får jeg bare medelsen "Object dosen't support this funktion or method", hvorfor ??, og hvordan løser jeg dette.

:-)

Christian H
Avatar billede bennytordrup Nybegynder
13. maj 2002 - 10:33 #1
Har CommonControl en Container property?
Avatar billede christian_h Nybegynder
13. maj 2002 - 10:38 #2
Der skulle have stået CommonDialog og IKKE CommonControl.

Men NEJ det tror jeg ikke den har !!!, hvad kan man så gøre ?.

???

Christian H
Avatar billede bennytordrup Nybegynder
13. maj 2002 - 10:45 #3
Den nemme (og lidt grisede) løsning er at sætte On Error Resume Next ind i EnableFrameChildren.
Avatar billede christian_h Nybegynder
13. maj 2002 - 10:51 #4
JA den ER grisset, det virker, men det resulterer også i at mine menuer så som "Filer" "Hjælp" osv. på form1 også bliver disablet ??, så det duer ikke.

??.

Christian H
Avatar billede tjacob Juniormester
13. maj 2002 - 11:01 #5
Lav din funktion sådan:
Private Sub EnableFrameChildren(frm As Frame, bEnable As Boolean)
Dim c As Control
For Each c In Controls
    If Not c.Name = 'Navnet på din(e) Commondialog' Then
        If c.Container.Name = frm.Name Then c.Enabled = bEnable
    End If
Next c
End Sub

/tjacob
Avatar billede christian_h Nybegynder
13. maj 2002 - 11:10 #6
Hej Tjacob

Skal jeg bare skrive :

If Not c.Name = 'Navnet på din(e) Commondialog' Then

If Not c.Name = "CommonDialog1" Then

For så viker det ikke ??, skal jeg også stadig bruge "On Error Resume Next", ellers kommer fejl meddelsen også stadig !!.

??

Christian H
Avatar billede tjacob Juniormester
13. maj 2002 - 11:14 #7
Det ville være mere korrekt at skrive sådan:

If Not TypeOf c Is CommonDialog Then
Avatar billede tjacob Juniormester
13. maj 2002 - 11:15 #8
Så skulle det ikke være nødvendigt med On Error Resume Next
Avatar billede bennytordrup Nybegynder
13. maj 2002 - 11:16 #9
Eller modsat. Det kommer så an på hvilke typer kontroller, der er flest af. Dem, som skal disables/enables vs. dem, som ikke skal.
Avatar billede christian_h Nybegynder
13. maj 2002 - 11:18 #10
Grrrr, hva gør jeg galt, den disabler stadig mine menuer !!!!!.

??

Christian H
Avatar billede tjacob Juniormester
13. maj 2002 - 11:20 #11
-Og du har fjernet On Error Resume Next?
Avatar billede bennytordrup Nybegynder
13. maj 2002 - 11:20 #12
Private Sub EnableFrameChildren(frm As Frame, bEnable As Boolean)
Dim c As Control
For Each c In Controls
  if (not TypeOf c is CommonDialog) and _
    (not TypeOf c is Menu) then 
        If c.Container.Name = frm.Name Then c.Enabled = bEnable
    End If
Next c
End Sub
Avatar billede christian_h Nybegynder
13. maj 2002 - 11:23 #13
Det virkede :-)

Er 15 point til jer hver OK ??.

:-)

Christian H
Avatar billede tjacob Juniormester
13. maj 2002 - 11:25 #14
OK med mig ;-)
Avatar billede bennytordrup Nybegynder
13. maj 2002 - 11:26 #15
si
Avatar billede christian_h Nybegynder
13. maj 2002 - 11:27 #16
1000 TAK for hjælpen GUTTER i har lige sparet mig for 60 linier kode, samt at holde styr på en BUNKE kontroller enable/disable FEDT.

:-)

Christian
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

IT-JOB

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer

Rambøll Management Consulting

Senior Software Engineer

Everllence

Data Engineer