Newsgroup: it.comp.lang.delphi
Titolo: Access violation se voglio cambiare la width di una form...

Salve,
la mia form contiene una stringgrid e voorei adattare la larghezza della 
form alla larghezza della stringgrid...
 
FormEIBI.Width:=StringGrid1.Width;
 
Access violation...
 
e perchè mai?
il codice lo metto nella show della form (qundi l'oggetto è già creato 
giusto?)
 
Problema banale? (magari una scemata....ma oh...mi fa impazzire :P )

Ti rispondo senza poterlo provare ma io metterei un bel "il visibile then ...." Così esegui il codice solo a form visibile.
Per l'access violation effettivamente é strano: la form é "auto create"?


la variazione della larghezza della form esegue il codice di un evento
della form che hai gestito e in cui fai riferimento ad un oggertto non
ancora creato?
 
-- 
Oggi c'e' una grande battaglia di idee,
ma alla fine non ci saranno ne vinti,
ne vincitori, ne idee! S. Benni da Elianto.


 
Non vedo il nesso....si possono tranquillamente ridimensionare oggetti 
creati e non visibili :°(
Grazie dell'idea cmq.

 ancora creato?
 
Il codice del resize lo faccio all'interno della form da ridimensionare 
(che contiene la stringgrid), quindi non vedo proprio il problema :°(
 


bhe che tu non veda il problema si era capito, mi sermbra anche di 
capire che tu abbia del codce nell'evento onresize della form,
metti un punto di interruzione nella prima riga, se ci arrivi
vuol dire che l'access violation avviene dopo, quindi vai di
f7/f8 e vedi quale riga di codice genera l'errore


 f7/f8 e vedi quale riga di codice genera l'errore
 
ho messo un bottone....non faccio niente al resize della form, quando 
clicco sul bottone, faccio il resize della form, ho provato anche a 
impostare la width ad un valore fisso (anzichè impostandolo alla width 
della stringgrid) ma mi da access violation lo stesso :°(
Porca pupazza...
Sarà qualcosa di banale...
dopo pranzo provo a fare una form brutta brutta con un tasto 
solo...vediamo cosa succede...
 
 


Prova cosi'
 
  self.Width := StringGrid1.Width;
 
 
ciao
Giacomo
 


 
Nessuna eccezione ma nessun effetto...non cambia la width...strano...
Provato sia nello show che nel create (meglio nello show ovviamente...il 
create era solo una prova...)
 
:°(
 


Creando da zero un progettino con solo una form funziona...
Non riesco a capire :°(
 

Se puoò essere d'aiuto a risolvere i problema...va in access violation 
anche solo leggendo la width della form...
 
dim:=FormEIBI.Width;
 
Idee?
 


Si: posta tutto il codice.
FormEIBI è null probabilmente
 
-- 
Morde


 
Ok...nella form MDI (dove creo la mdichild da "ridimensionare")
 
   ChildEibi := TFormEIBI.Create(Application);  //tutto ok...la form 
viene creata e dalla form principale posso controllare i controls 
contenuti nella form figlia, lo faccio già ed è ok...
 
 
nella mdichild ho uno stringgrid popolato ed un bottone
nel click del bottone:
 
FormEIBI.Width:=StringGrid1.Width;  (formeibi è la form figlia)
 
 


Mmmm... e FormEIBI chi la inizializza? :)
Quando crei la form tu istanzi ChildEibi, quindi FormEIBI rimane nil
ed ecco la probabile causa dell'AV 
 
Questa e' la ragione per cui e' sempre preferibile ricorrere a self
invece che alla variabile globale che ti crea delphi in automatico.
 
ciao
G

Ok...mea culpa (grazie per la dritta).
Ora mi sono chiare anche altre cose...spero possano essere d'aiuto per 
altri...
 
Mi ero dimenticato (doppio mea culpa) che dovevo fare anche il resize 
della grid in base alla larghezza delle colonne...e solo dopo fare il 
resize della form alla grid...
 
Ringrazio tutti infinitamente sperando che queste sviste possano essere 
d'aiuto per altri :)
 
Buona serata!