Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247

    [DELPHI] Alcune domande

    Salve,

    come al solito trovo intoppi nella stesura del mio programmino per la mia scarsa capacità e anche per la mancanza di una vera documentazione.

    Adesso sto impazzendo dietro un altro problema: vorrei che quando l'utente fa doppio click su un qualsiasi record della griglia di riepilogo, si apre un form che contiene dei dati più precisi relativi a quel record in particolare.

    Ho provato con l'evento OnDblClick, ma il suo comportamento è veramente pessimo: infatti anche se l'utente fa doppio click sull'intestazione della DbGrid, o addirittura su un'area bianca, parte l'azione come se l'utente avesse fatto doppio click su un record.

    Non c'è un modo per fare una cosa più precisa?


    Inoltre, io vorrei che ogni form modale abbia la "X" di chiusura della finestra disabilitata, sempre e comunque.

    Ho trovato questo codice (http://www.greatis.com/delphicb/tips...hideclose.html)
    ma lo devo copiare in ogni form e non mi sembra una cosa molto "da programmatore". Inoltre quel codice causa molti problemi (a volte la "X" si riabilita senza motivo).

    Mi potreste aiutare???

    Grazie ancora e scusatemi per tutte le volte che vi ho chiesto le cose più assurde...

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da firefox88
    come al solito trovo intoppi nella stesura del mio programmino per la mia scarsa capacità e anche per la mancanza di una vera documentazione.
    Reperisci una adeguata documentazione, in tal caso.

    Originariamente inviato da firefox88
    Ho provato con l'evento OnDblClick, ma il suo comportamento è veramente pessimo: infatti anche se l'utente fa doppio click sull'intestazione della DbGrid, o addirittura su un'area bianca, parte l'azione come se l'utente avesse fatto doppio click su un record.
    Il comportamento non è pessimo, ma è assolutamente corretto.

    Molto spesso ti abbandoni a giudizi affrettati giudicando pessimo il corretto funzionamento di alcuni meccanismi che sono semplicemente usati in modo improprio.

    L'evento OnDblClick è riferito al controllo, pertanto viene eseguito ogni volta che si fa doppio clic sul controllo stesso; il legame presunto con i record all'interno del controllo non esiste e non deve esistere, poichè io vorrei poter intercettare il doppio clic indipendentemente dal record selezionato, quindi il comportamento della DBGrid è più che corretto e sensato.

    Originariamente inviato da firefox88
    Non c'è un modo per fare una cosa più precisa?
    Dovresti verificare tu stesso che il clic sia riferito ad una determinata riga della griglia, ma ciò dovrebbe essere "semiautomatico" in quanto facendo anche un semplice clic il record sottostante viene selezionato e quindi il doppio clic si tradurrebbe comunque nell'editing del record corrente.

    In un'applicazione in cui ho fatto uso del doppio clic, ho semplicemente adottato questo meccanismo: se un record è selezionato, viene aperta la finestra per modificarlo, in caso contrario si crea un nuovo record e viene aperta la stessa identica finestra per inserirne i dati.

    Nessun cliente si è ancora lamentato di ciò.

    Originariamente inviato da firefox88
    Inoltre, io vorrei che ogni form modale abbia la "X" di chiusura della finestra disabilitata, sempre e comunque.
    Basta impostare lo stile del bordo del Form BorderStyle a "bsSingle" e disabilitare dalla proprietà BorderIcons il menu di sistema "biSystemMenu". Nient'altro.

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

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Originariamente inviato da alka
    Reperisci una adeguata documentazione, in tal caso.
    Giusto. Mi potresti suggerire qualche pubblicazione ben fatta che, oltre alla mera lista degli oggetti, contenga qualcuno di questi "trucchetti" fondamentali che non stanno scritti da nessuna parte?

    Originariamente inviato da alka
    Il comportamento non è pessimo, ma è assolutamente corretto.

    Molto spesso ti abbandoni a giudizi affrettati giudicando pessimo il corretto funzionamento di alcuni meccanismi che sono semplicemente usati in modo improprio.
    Hai ragione Non sono molto tagliato per la programmazione... Questo componente DBGrid mi ha estenuato. Se questo programma verrà una cosa umana è solo grazie al tuo aiuto.

    Originariamente inviato da alka
    L'evento OnDblClick è riferito al controllo, pertanto viene eseguito ogni volta che si fa doppio clic sul controllo stesso;
    Non gli sarebbe costato nulla creare un altro evento, del tipo OnDbkClickRow


    Originariamente inviato da alka
    Basta impostare lo stile del bordo del Form BorderStyle a "bsSingle" e disabilitare dalla proprietà BorderIcons il menu di sistema "biSystemMenu". Nient'altro.
    Fatto... Grazie mille di tutto!

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da firefox88
    Giusto. Mi potresti suggerire qualche pubblicazione ben fatta che, oltre alla mera lista degli oggetti, contenga qualcuno di questi "trucchetti" fondamentali che non stanno scritti da nessuna parte?
    Il problema di non trovare documentazione in merito a questi problemi è che... non può esistere.

    Mi spiego: non è possibile individuare un testo che tratti l'uso particolareggiato per ogni esigenza che ci si trova ad affrontare, poiché i modi di impiego dello strumento sono INFINITI.

    Pertanto, l'unica soluzione è quella di documentarsi, sì, ma sui principi di funzionamento generali in modo da poter risolvere successivamente anche i casi particolari senza che vi sia scritto da alcuna parte come ottenere un certo effetto.

    Anche in questo caso, ovviamente, ci saranno delle situazioni ancora più particolari: l'unica risorsa a cui affidarsi è Internet che spesso fornisce in tempi rapidi la risposta giusta in quanto chi si è specializzato in qualcosa si prodiga ad aiutare il prossimo che, magari, si è dedicato maggiormente ad altri aspetti.

    Originariamente inviato da firefox88
    Non gli sarebbe costato nulla creare un altro evento, del tipo OnDbkClickRow
    Questo non posso dirlo io.

    Ad ogni modo, devi considerare sempre il fatto che i controlli disponibili in qualsiasi ambiente di sviluppo sono "out of the box" adatti all'uso generico e spesso sfruttabili per la maggior parte delle esigenze; qualora è necessario entrare nello specifico, il massimo che si può fare è ricorrere ad altre specializzazioni fornite da terze parti o studiare il codice per aggiungere l'implementazione mancante... in sostanza, l'ambiente non può scrivere il programma per te, devi aggiungere qualcosa di tuo.

    Ricordati che la libreria VCL viene fornita con il sorgente, quindi nulla ti vieta - conoscendo bene lo strumento, e mi concentrerei su questo aspetto, ad esempio - di costruire un discendente del controllo DBGrid per aggiungere la funzionalità mancante, installare il controllo personalizzato nell'IDE e utilizzarlo in tutti i tuoi progetti.

    Ciao!
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.