Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    17

    Delphi: BorderIcons in un Refresh

    Ciao a tutti,

    il mio problema è questo: ho realizzato una form che si ricarica (richiamando il metodo Activate della Form) dopo tot secondi (regolati da un TTImer) ed interroga un dataset ADO ad ogni ricaricamento. Durante questo refresh devo abilitare o disabilitare i pulsanti di minimizzazione, massimizzazione e chiusura della form MA la Commit sul dataset non va a buon fine quando invece ci va se non abilito/disabilito tali pulsanti, perchè?
    Per abilitare/disabilitare utilizzo:

    FMain.BorderIcons := BorderIcons - [biSystemMenu, biMinimize, biMaximize];

    e ovviamente:
    FMain.BorderIcons := BorderIcons + [biSystemMenu, biMinimize, biMaximize];

    Qualcuno può aiutarmi? La form non dev'essere ridemensionabile o chiudibile tramite questi pulsanti.

    Ciao

  2. #2
    Utente di HTML.it L'avatar di MMarzia
    Registrato dal
    Mar 2001
    Messaggi
    1,781
    il linguaggio va specificato anche nel titolo (vedi regolamento )
    io sono festosamente cicciottello :: e. cartman

    t'amo senza sapere come, nè quando nè da dove,
    t'amo direttamente senza problemi nè orgoglio:
    così ti amo perchè non so amare altrimenti

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    17
    Me ne ero dimenticato.


    Scusami.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296

    Re: Delphi: BorderIcons in un Refresh

    Originariamente inviato da progra
    Durante questo refresh devo abilitare o disabilitare i pulsanti di minimizzazione, massimizzazione e chiusura della form MA la Commit sul dataset non va a buon fine quando invece ci va se non abilito/disabilito tali pulsanti, perchè?
    [...]
    Qualcuno può aiutarmi? La form non dev'essere ridemensionabile o chiudibile tramite questi pulsanti.
    Non vedo alcun nesso tra le icone del bordo del form e la possibilità di eseguire Commit sul DataSet ADO...sicuramente il problema va ricercato altrove analizzando il codice sorgente.

    Tuttavia, credo che se lo scopo da raggiungere è evitare la chiusura del form, tra l'altro non possibile quando l'applicazione è impegnata nell'operazione di Commit, è più opportuno intercettare l'evento OnCloseQuery e impedire qualsiasi operazione di chiusura attraverso tale evento.

    Per istruzioni su come sfruttare l'evento OnCloseQuery, consulta la Guida in linea di Delphi.

    Per altri problemi, posta anche un po' codice, almeno le parti significative, altrimenti è (quasi) impossibile risalire all'origine dei difetti che riscontri nel tuo programma.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    17
    Ok,

    ho seguito il tuo consiglio ed ho gestito la chiusura tramite OnCloseQuery .
    Ma saresti così gentile (ancora) da spiegarmi il perchè non posso eseguire l'operazione (commentata nel codice che ti mando)?

    di seguito il codice (scusa l'indentazione ma non so come viene fuori perchè è la prima volta che uso i tag CODE):

    codice:
    try
        DataModuleAssenze.ADOConnection.BeginTrans;
        with QTest do begin
          Close;
          with SQL do begin
            Clear;
            Add('SELECT * FROM orari WHERE Assenza<>0 AND Interno='+QuotedStr(DBLookupInterni.Text)); //+' AND Giorno='+QuotedStr(IntToStr(giorno))
          end;
          Open;
          First;
          while not Eof do begin
            BitBtnOk.Glyph.LoadFromFile('check.bmp');
            BitBtnOk.Caption := 'Annulla ';
            //FMain.BorderIcons := BorderIcons - [biMinimize, biMaximize];
            ass_temp := True; // imposto il fatto che sono in assenza temporanea
            DBLookupInterni.Enabled := False;
            RTemporanea.Checked := True;
            RTemporanea.Enabled := False;
            RProlungata.Enabled := False;
            DTPInizio.Enabled := False;
            DTPOraInizio.Enabled := False;
            DTPFine.Enabled := False;
            DTPOraFine.Enabled := False;
            BitBtnEsci.Enabled := False;
            BitBtn2.Enabled := False;
            vedi := False;
            Next;
          end;
          Close;
    DataModuleAssenze.ADOConnection.CommitTrans;
      except
        DataModuleAssenze.ADOConnection.RollbackTrans;
        if MessageDlg('ERRORE REFRESH.', mtError, [mbOk], 0) = mrOk then
            Close;
      end;
    Grazie mille.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Sinceramente, non ho il tuo progetto quindi non so il significato e le funzionalità che hai attribuito ad ogni controllo, ma direi che il cambiamento del loro stato è totalmente inefficace all'interno di un simile ciclo poichè tale stato viene reso effettivo solo quando la routine è terminata.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.