24. januar 2012 - 10:01Der er
4 kommentarer og 1 løsning
Sikre mig at form er færdigoprettet
Jeg har et problem i et program der sandsynligvis skyldes at min main form ikke er helt klar før koden fortsætter. Det der sker er at jeg når brugeren skal logge på altid sikrer mig at alle forms er lukket. I den funktion spørger jeg på Application.MainForm.Name fordi den skal selvfølgelig ikke lukkes. Og første gang jeg gør det fejler den med en AV
Jeg har sat en timer på der giver et par sekunders forsinkelse før logon. Men det gør inegn forskel.
Når programmet ellers er kørende, så kommer der ikke flere AV i den kode.
Den komplette funktion: procedure FormsClose; var i: integer; Form: TForm; FormName: string; begin Application.ProcessMessages; try for i := Screen.FormCount - 1 downto 0 do begin Form := Screen.Forms[i]; if (Form <> Application.MainForm) then begin FormName := Screen.Forms[i].Name; if (FormName <> Application.MainForm.Name) and (FormName <> 'frmDBConn') and (FormName <> 'frmStyling') and (FormName <> 'frmLogon') and (FormName <> 'frmSplash') and then Screen.Forms[i].Close; end; end; except on E:exception do Logfile.Error('U_Utilities.FormsClose: ' + FormName + ' - ' + #13#10 + E.Message); end; end;
Indtil videre har jeg været nødt til at ændre (FormName <> Application.MainForm.Name) til (FormName <> 'frmMain') og så håbe på at jeg altid husker at kalde applikationers main form for frmMain. Så virker funktionen uden AV og det må jeg så arbejde videre med en gang når der bliver bedre tid - hvis det sker.
Synes godt om
Ny brugerNybegynder
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.