30. april 2003 - 15:55Der er
9 kommentarer og 1 løsning
Placering af Childform på en MDIform
Jeg har en Childform (helpbox) i en MDIform. hvergang helpbox bliver flyttet skal der undersøges om helpbox´s nye placering er inden for en bestemt placering.Hvis den er det, skal placeringen for helpbox ændres, så den bliver placeret helt til venstre på MDI formen, ellers skal der ikke ske noget med placeringen.
hvor og hvad kan jeg bruge til at undersøge ændring på en forms placering? I må meget gerne skrive noget kode, for jeg er lidt ny i Visual Basic.
Hvis du gerne vil undgå at skulle lave noget alt for besværlig kodning, med subclassing af vinduer og lign, så kunne man bare placere en timer på formularen, som trigger fx hvert halve sekund (eller mindre), som flytter MDI'en. Det vil ikke belaste cpu'en når formularen ikke flyttes.
Dim SaveLeft As Long, SaveTop As Long Sub PositionMDI() If Form1.Left <> SaveLeft Or Form1.Top <> SaveTop Then MDIForm1.Left = Form1.Left - MDIForm1.Width MDIForm1.Top = Form1.Top SaveLeft = Form1.Left SaveTop = Form1.Top End If End Sub Private Sub Form_Load() MDIForm1.Show PositionMDI Timer1.Interval = 200 Timer1.Enabled = True End Sub
Private Sub Form_Unload(Cancel As Integer) Unload MDIForm1 End Sub
Den viste kode er et eksempel på hvordan koden kunne se ud, men ikke det du er ude efter. Det var mere princippet i det.
Men du skrev jo sådan set at du var ny i vb, så jeg må hellere lave en mere præcis en, som svarer mere til det du er ude efter.
Private Sub MDIForm_Load() Form1.Left = 0 Form1.Width = 3000 Form1.Height = 2000 Form1.Show Timer1.Interval = 500 Timer1.Enabled = True End Sub
Private Sub Timer1_Timer() If Form1.Left > 0 And Form1.Left < 1000 And Form1.Top > 0 And Form1.Top < 1000 Then Form1.Left = 0 Form1.Top = 0 End If End Sub
En MDIForm med en Timer og en Form. Hvert halve sekund kigger den på Form1's position, og hvis den er i nærheden af øverste venstre hjørne, flyttes den til 0,0
If frmHelpBox.Left < 1000 Then frmHelpBox.Left = 0 frmHelpBox.Top = 0 End If
End Sub
Men det virker ikke. Når jeg flytte formen til left under 1000 sker deer ikke noget. Hvad gøre jeg galt? jeg tror slet ikke at Timer1_Timer() bliver aktiveret på noget tidspunkt...
Men nu får jeg en anden fejl, "Compilor error, Variable not defined" Den varialble som den ikke kan finde er "Timer1". Hvordan erklære jeg Timer1? bliver det ikke erklæret automatisk, så jeg har lavet funktionen Private Sub Timer1_Timer() ??
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.