Newsgroup: it.comp.lang.delphi
Titolo: Access Violation del MainMenu

Ciao
A runtime:
se clicco su un pulsante o un edit o un combo, o qualsiasi altro oggetto
dopo aver aperto la tendina di un mainmenù dalla barra dei menù, senza
averla richiusa cliccando su un item del menù stesso o sulla form, il
programma mi dà un access violation e si chiude per errore.
Qualcuno sà spiegarmi il perchè e se c'è rimedio??
Ciao e grazie
Andrea

 programma mi dà un access violation e si chiude per errore.
Prova a postare un po' di codice legato agli eventi del menu, e vediamo...
--
Jax


Il punto č che la voce generale del mainmenů non ha eventi collegati.
Per intenderci menů  File -> Salva, Stampa,Chiudi
                     menů  Strumenti -> Cancella squadra, elimina elenco
                     menů  Backup -> Aggiorna, Archivia
I menů principali, sui quali clicco per fare aprire la tendina(File,
Strumenti, Backup) non hanno eventi collegati, cosě se NON SCELGO un
sottomenů qualsiasi e NON RICHIUDO la tendina  e clicco ad esempio su un
btn, ho un Access Violation e il prog si chiude.
Questo problema ce l'ho con tutti i programmi e sia su XP che su Win98
Queste sono procedure dei sottomenů ma comunque se clicco su un sottomenů,
tutto ok
procedure TForm1.CancellaElencoGeneraleGiocatori1Click(Sender: TObject);
  var
  q:Tquery;
  squadra:string;
begin
  squadra:='';
  if messagedlg('Attenzione! Cancellare tutti i giocatori e tutte le
squadre?',mtwarning,[mbyes,mbno],0) = mryes then begin
    q:=tquery.Create(application);
    q.close;
    q.databasename:=database;
    q.sql.Text :='DELETE FROM "PLAYERS.DBF"'; //CANCELLO TUTTI I GIOCAT
    Q.ExecSQL ;
    q.close;
    q.SQL.Text := 'SELECT NOME FROM "SQUADRE.DBF"';
    Q.Open ;
    while not q.Eof do begin
      squadra:=q.fieldbyname('NOME').asstring + '.dbf';   //cancello tutte
le squadre
      deletefile(database + '\' + squadra);
      q.Next;
    end;
    q.close;
    q.sql.Text :='DELETE FROM "SQUADRE.DBF"';    //cancello nome squadre da
squadre.dbf
    q.ExecSQL ;
    q.close;
    messagedlg('Dati cancellati',mtinformation,[mbok],0);
    table2.Close ;
    scrollbox1.Hide ;
    query1.close;
    scrollbox2.Hide ;
    table1.Close ;
    combo33.ItemIndex := -1;
    combo3.ItemIndex := -1;
    combo22.ItemIndex := -1;
    combo2.ItemIndex := -1 ;
    comboeli.ItemIndex := -1;
    combo2.Enabled :=false;
    combo3.Enabled :=false;
    scrollbox3.Hide ;
    scrollbox4.Hide ;
    query2.Close ;
    scrollbox5.Hide ;
    sb.Panels[2].Text := '';
    combosq.ItemIndex := -1;
  end;
end;
procedure TForm1.EliminaSquadra1Click(Sender: TObject);
begin
  table2.Close ;
  scrollbox1.Hide ;
  query1.close;
  scrollbox2.Hide ;
  table1.Close ;
  combo33.ItemIndex := -1;
  combo3.ItemIndex := -1;
  combo22.ItemIndex := -1;
  combo2.ItemIndex := -1;
  comboeli.ItemIndex := -1;
  combo2.Enabled :=false;
  combo3.Enabled :=false;
  scrollbox3.Hide ;
  query2.Close ;
  scrollbox5.Hide ;
  sb.Panels[2].Text := '';
  combosq.ItemIndex := -1;
  scrollbox4.Show ;
end;

 Questo problema ce l'ho con tutti i programmi e sia su XP che su Win98
Mi stai dicendo che ti succede anche se fai una nuova applicazione, con un
MainMenu e vari sottomenu, ma 0 righe di codice?
Se č cosě..... sinceramente reinstallerei Delphi, dato che mi sembra l'unica
cosa da fare, altrimenti il problema č da ricercare nel codice o in qualche
componente esterno che si "attacca" al TMainMenu (tipo qualche componente per
dare il look di WinXP).
--
Jax


Hai ragione, ho trovato il problema!!!!
E' un componente esterno (IAEverButton) che se posizionato sulla form dà
questo problema, nonostante che non abbia nulla a che fare con il mainmenù.
Grazie mille
Andrea

xche usi una query (variabile q x capirci) creata dinamicamente a runtime?
xche non fai poi la free di questo oggetto quando hai finito?
xche non metti una try..finally x essere sicuro che la query venga
effettivamente distrutta alla uscita dalla procedura?
xche usi quei nomi di variabile criptici tipo combo33, scrollbox5 etc?
Bye
A.

 xche usi una query (variabile q x capirci) creata dinamicamente a
runtime?
<altri 3 xche>
Mi sei mancato ^_____^
--
Jax

> Mi sei mancato ^_____^
Non credo che molti la pensino cosi....
Anche i rompiballe come me vanno in vacanza.
;-))
BaiBai
A.


Grazie mille per l'interessamento
Non sono un programmatore avanzato, mi diletto a casa e cerco di crescere
per poi cercare qualche impiego nel settore anche se nella mia zona.... zero
assoluto
Mahh!
Ciao
Andrea