14. januar 2009 - 11:24Der er
10 kommentarer og 1 løsning
Access Violation på showmodal
Jeg skal åbne et ny form. Der ligger intet på formen og det har gjort på denne måde:
procedure TFrmMain.BitBtn3Click(Sender: TObject); begin with frmLDAP.Create(nil) do try showmodal; finally free; end; end;
Det fungere fint, men i det øjeblik jeg putter en TBitBtn på får jeg en fejl som siger at der allerede findes en.
Øhhh, nå. Det kan jeg ikke forstå, for der var intet på formen før den blev lagt på. Jeg fjernede så knappen, men nu får jeg heletiden en "access violation" fejl når jeg forsøger at åbne formen.
Jeg skal måske lige for en god orden skyld lige sige at den:
procedure TFrmMain.BitBtn3Click(Sender: TObject); begin with frmLDAP.Create(nil) do try showmodal; finally free; end; end;
er fra min mainform, hvor der er 2 TBitBtn (TBitBtn1 og TBitBtn2) på. Men jeg anser ikke at de skulle give problemer, da de ligger på en anden form end den jeg forsøger at kalde.
Bemærk hvis du vil oprette en form kun via kode: Der er mere en 1 constructor, og den normale ".create" skal ikke bruges, men "createNew" skal bruges, for at det virker. eksempel:
with tForm.createNew(nil) do begin showModal;free end;
mbsnet: øhh. Jeg bruger altid Create. Hvad er der galt med den? Desuden sætter jeg altid self eller application.MainForm i som parameter så jeg kan bruge formens Position-property til at angive placeringen på skærmen.
Bruger tit one-linere. En form hvor Action := caFree er sat i OnClose kalder jeg på denne måde:
mbsnet: Opretter du forme helt fra bunden af? Lidt interesseret i at se eksempler hvor man det er praktisk at gøre dette. Hvis man har lavet sin egen runtime form designer eller sådan noget?
Hej Hrc, jeg har bla gjort det i forbindelse med en slags hjemmelavet ShowMessage dialog, hvor jeg kun bruger kode til at lave formen. Da jeg lavede det mødte jeg nogle resource problemer, hvis jeg benyttede mig af .create, men da jeg rettede det til .createNew, virkede det bare, og har gjort det siden :)
mbsnet: OK. Det vil jeg prøve at huske når jeg laver min egen ShowMessage, dvs. måske bliver det noget andet, da den er blevet lidt bedre i 2009'eren.
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.