Avatar billede steffen8260 Nybegynder
16. februar 2004 - 09:39 Der er 21 kommentarer og
1 løsning

kopiering af labels

Hej, jeg har skrevet følgende kode, men syntes ikke jeg kan få den til at kopiere min label (lblname)

Private Sub LoadNewText()

    Dim intIndex As Integer
    intIndex = (lblName.UBound + 1)
 
  MsgBox intIndex
 
    With lblName(intIndex)
      Load lblName(intIndex)
      .Caption = "Text"
      .Top = 200
      .Left = 280
    End With

End Sub
Avatar billede themepark Nybegynder
16. februar 2004 - 11:39 #1
Nu har jeg desværre ikke adgang til Visual Basic, så jeg må lige trække det her ud fra hjernens krinkelkroge.

Så vidt jeg husker, sættes noget, man loader med Load, som standard til at være usynlig. Så prøv at tilføje linjen .Visible=True
Avatar billede martin_moth Mester
16. februar 2004 - 11:54 #2
Jeg forstår ikke lige - skal du oprette en ny label. Skal du så ikke dimme den som en ny label?

Hvis det skal være en ekstra label i en hel række i et kontrolarray, mener(!) jeg ikke, at du kan definere flere elementer i kontrolarrayet end du gør i designtime. Så må du lave dem visible=false hvis du ikke skal bruge dem.
Avatar billede themepark Nybegynder
16. februar 2004 - 12:03 #3
martin, han skal kopiere en allerede eksisterende label på hans form...på den måde gør han det skam rigtigt ved at bruge Load :)
Avatar billede martin_moth Mester
16. februar 2004 - 12:06 #4
jeg mener at have læst, at man ikke kan oprette flere elementer i et kontrolarray i runtime - men jeg kan huske forkert...
Avatar billede themepark Nybegynder
16. februar 2004 - 12:11 #5
Ork jo...jeg har selv så tit tilføjet labels og lignende i runtime...så længe de bare har været en del af et allerede eksisterende array, altså :)
Avatar billede steffen8260 Nybegynder
16. februar 2004 - 12:14 #6
jeg har sat den label der skal kopieres til at være visible = true så man burde kunne se kopien med det samme
Avatar billede themepark Nybegynder
16. februar 2004 - 12:20 #7
Og det vises vel stadig ikke? Hmm...kan det skyldes at formen er mindre end den left og top du sætter...altså mindre end 280x200?
Avatar billede steffen8260 Nybegynder
16. februar 2004 - 12:21 #8
jo det skal vises 280x200 passer med at være i midten af formen
Avatar billede themepark Nybegynder
16. februar 2004 - 12:25 #9
Hmm...prøv lige 2 ting...dels så tilføj en MsgBox efter .Caption for at tjekke om .Caption faktisk bliver ændret. Og prøv også at lave en MsgBox på hhv. .Width og .Height.
Avatar billede steffen8260 Nybegynder
16. februar 2004 - 12:25 #10
har sku lige fået det til at virke :D thanks
Avatar billede themepark Nybegynder
16. februar 2004 - 12:30 #11
Øh...okay...men hvad var problemet så?
Avatar billede steffen8260 Nybegynder
16. februar 2004 - 12:31 #12
det var ham freaken ved siden af der ikke kunne finde ud af at skrive koden rigtigt hehe
Avatar billede themepark Nybegynder
16. februar 2004 - 12:34 #13
Ja...jo...men hvad var der galt med koden...det er det jeg mener :) Hvori lagde fejlen?
Avatar billede steffen8260 Nybegynder
16. februar 2004 - 12:35 #14
aner det faktisk ikke pluselig virkede det bare :S
Avatar billede themepark Nybegynder
16. februar 2004 - 12:38 #15
Hmm...mystisk...ja ja...man kan åbenbart nå langt med tankens kraft ;) Men kunne du evt poste den virkende kode? Jeg er lidt nysgerrig efter at se om jeg kan se fejlen fra før :)
Avatar billede steffen8260 Nybegynder
16. februar 2004 - 12:39 #16
sådan her ser den ud med lidt extra på

Private Sub LoadNewText()

    Dim intIndex As Integer
    intIndex = (lblName.UBound + 1)
 
  MsgBox intIndex
 
    With lblName(intIndex)
      Load lblName(intIndex)
      .Caption = "Text" & intIndex
      .Top = 480
      .Left = 56
      .Visible = True
      .BackStyle = 0
      .ZOrder 0
      .BorderStyle = 1
      .DragMode = 1
    End With

End Sub
Avatar billede themepark Nybegynder
16. februar 2004 - 12:44 #17
Hmm...hvis det med .Visible ikke virkede, og heller ikke det med .Left og .Top, kan det næsten kun være .ZOrder der gjorde det. Nu ved jeg selvfølgelig ikke hvor mange ting du har på din form, men formentlig blev labelen lagt bag en af de andre ting på formen før...ellers ved jeg ikke hvad der skulle have været galt :)
Avatar billede steffen8260 Nybegynder
16. februar 2004 - 12:46 #18
nå men kan du hjælpe med at lave så jeg kan tage fat i en af labelsne og drag og droppe den et andet sted på formen? altså når programmet køre
Avatar billede themepark Nybegynder
16. februar 2004 - 12:50 #19
Hmmm...ja...det har jeg selv prøvet at lave...når du begynder med at skrive en egenskab for f.eks. en label, og den der lille liste dukker op med de forskellige egenskaber, så led efter noget der starter med Drag...jeg kan ikke huske helt hvad den hedder, men den skal så sættes til True.

Og hvis du vil udføre noget, når en label bliver droppet på en anden, skal du bruge LabelNavn_DragDrop...hvis du kigger i selve kodevinduet, er der øverst oppe til højre en liste med de forskellige metoder for de forskellige objekter på formen. Og du skal for øvrigt bruge DragDrop for den label, hvorpå noget bliver droppet.
Avatar billede steffen8260 Nybegynder
16. februar 2004 - 12:52 #20
problemet ligger bare i at jeg har en masse lblName(1-xx)
Avatar billede themepark Nybegynder
16. februar 2004 - 12:55 #21
Det er skam intet problem...i den With lblName, du har tilføjer du bare den egenskab, jeg snakkede om, der starter med Drag, og sætter den til True...og det skal du selvfølgelig også gøre for den label, du har tilføjet til formen i design time.

Og hvis du dobbeltklikker på en af dine labels, så du kommer ud i programmerings vinduet, og der vælger DragDrop i den menu til højre, så går resten af sig selv. :)
Avatar billede steffen8260 Nybegynder
07. april 2005 - 11:42 #22
lukker
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